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: 1024 * 10, // 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
|
||
|
}
|
||
|
}
|