feat: add Use() method to add adapters to the aicra builder

This commit is contained in:
Adrien Marquès 2021-04-18 16:49:46 +02:00
parent 87c15b91e5
commit 96164127e1
1 changed files with 16 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import (
"io" "io"
"net/http" "net/http"
"git.xdrm.io/go/aicra/api"
"git.xdrm.io/go/aicra/datatype" "git.xdrm.io/go/aicra/datatype"
"git.xdrm.io/go/aicra/internal/config" "git.xdrm.io/go/aicra/internal/config"
"git.xdrm.io/go/aicra/internal/dynfunc" "git.xdrm.io/go/aicra/internal/dynfunc"
@ -14,6 +15,7 @@ import (
type Builder struct { type Builder struct {
conf *config.Server conf *config.Server
handlers []*apiHandler handlers []*apiHandler
adapters []api.Adapter
} }
// represents an api handler (method-pattern combination) // represents an api handler (method-pattern combination)
@ -31,9 +33,23 @@ func (b *Builder) AddType(t datatype.T) {
if b.conf.Services != nil { if b.conf.Services != nil {
panic(errLateType) panic(errLateType)
} }
if b.conf.Types == nil {
b.conf.Types = make([]datatype.T, 0)
}
b.conf.Types = append(b.conf.Types, t) b.conf.Types = append(b.conf.Types, t)
} }
// Use adds an http adapter (middleware)
func (b *Builder) Use(adapter api.Adapter) {
if b.conf == nil {
b.conf = &config.Server{}
}
if b.adapters == nil {
b.adapters = make([]api.Adapter, 0)
}
b.adapters = append(b.adapters, adapter)
}
// Setup the builder with its api definition file // Setup the builder with its api definition file
// panics if already setup // panics if already setup
func (b *Builder) Setup(r io.Reader) error { func (b *Builder) Setup(r io.Reader) error {