feat: initial commit
All checks were successful
Cadoles/bouncer/pipeline/head This commit looks good

This commit is contained in:
2023-04-24 20:52:12 +02:00
commit 59c0865352
125 changed files with 7835 additions and 0 deletions

View File

@ -0,0 +1,9 @@
package queue
type Options struct{}
type OptionFunc func(*Options)
func defaultOptions() *Options {
return &Options{}
}

47
internal/queue/queue.go Normal file
View File

@ -0,0 +1,47 @@
package queue
import (
"net/http"
"forge.cadoles.com/Cadoles/go-proxy"
"forge.cadoles.com/cadoles/bouncer/internal/proxy/director"
"forge.cadoles.com/cadoles/bouncer/internal/store"
"github.com/davecgh/go-spew/spew"
)
const LayerType store.LayerType = "queue"
type Queue struct {
repository Repository
}
// LayerType implements director.MiddlewareLayer
func (*Queue) LayerType() store.LayerType {
return LayerType
}
// Middleware implements director.MiddlewareLayer
func (*Queue) Middleware(layer *store.Layer) proxy.Middleware {
return func(h http.Handler) http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
spew.Dump(layer)
h.ServeHTTP(w, r)
}
return http.HandlerFunc(fn)
}
}
func New(repository Repository, funcs ...OptionFunc) *Queue {
opts := defaultOptions()
for _, fn := range funcs {
fn(opts)
}
return &Queue{
repository: repository,
}
}
var _ director.MiddlewareLayer = &Queue{}

View File

@ -0,0 +1,35 @@
package redis
import (
"context"
"forge.cadoles.com/cadoles/bouncer/internal/queue"
"github.com/redis/go-redis/v9"
)
type Repository struct {
client redis.UniversalClient
}
// AddToQueue implements queue.Repository
func (*Repository) AddToQueue(ctx context.Context, queueName string, sessionId string) (uint, error) {
panic("unimplemented")
}
// IsInQueue implements queue.Repository
func (*Repository) IsInQueue(ctx context.Context, queueName string, sessionId string) (bool, uint, error) {
panic("unimplemented")
}
// RemoveFromQueue implements queue.Repository
func (*Repository) RemoveFromQueue(ctx context.Context, queueName string, sessionId string) error {
panic("unimplemented")
}
func NewRepository(client redis.UniversalClient) *Repository {
return &Repository{
client: client,
}
}
var _ queue.Repository = &Repository{}

View File

@ -0,0 +1,9 @@
package queue
import "context"
type Repository interface {
IsInQueue(ctx context.Context, queueName string, sessionId string) (bool, uint, error)
AddToQueue(ctx context.Context, queueName string, sessionId string) (uint, error)
RemoveFromQueue(ctx context.Context, queueName string, sessionId string) error
}