58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package http
|
|
|
|
import (
|
|
"time"
|
|
|
|
"forge.cadoles.com/arcad/edge/pkg/app"
|
|
"forge.cadoles.com/arcad/edge/pkg/bus"
|
|
"forge.cadoles.com/arcad/edge/pkg/bus/memory"
|
|
"github.com/igm/sockjs-go/v3/sockjs"
|
|
)
|
|
|
|
type HandlerOptions struct {
|
|
Bus bus.Bus
|
|
SockJS sockjs.Options
|
|
ServerModuleFactories []app.ServerModuleFactory
|
|
UploadMaxFileSize int64
|
|
}
|
|
|
|
func defaultHandlerOptions() *HandlerOptions {
|
|
sockjsOptions := func() sockjs.Options {
|
|
return sockjs.DefaultOptions
|
|
}()
|
|
sockjsOptions.DisconnectDelay = 10 * time.Second
|
|
|
|
return &HandlerOptions{
|
|
Bus: memory.NewBus(),
|
|
SockJS: sockjsOptions,
|
|
ServerModuleFactories: make([]app.ServerModuleFactory, 0),
|
|
UploadMaxFileSize: 10 << (10 * 2), // 10Mb
|
|
}
|
|
}
|
|
|
|
type HandlerOptionFunc func(*HandlerOptions)
|
|
|
|
func WithServerModules(factories ...app.ServerModuleFactory) HandlerOptionFunc {
|
|
return func(opts *HandlerOptions) {
|
|
opts.ServerModuleFactories = factories
|
|
}
|
|
}
|
|
|
|
func WithSockJS(options sockjs.Options) HandlerOptionFunc {
|
|
return func(opts *HandlerOptions) {
|
|
opts.SockJS = options
|
|
}
|
|
}
|
|
|
|
func WithBus(bus bus.Bus) HandlerOptionFunc {
|
|
return func(opts *HandlerOptions) {
|
|
opts.Bus = bus
|
|
}
|
|
}
|
|
|
|
func WithUploadMaxFileSize(size int64) HandlerOptionFunc {
|
|
return func(opts *HandlerOptions) {
|
|
opts.UploadMaxFileSize = size
|
|
}
|
|
}
|