package bootstrap import ( "github.com/kataras/iris/v12" recover2 "github.com/kataras/iris/v12/middleware/recover" "github.com/kataras/iris/v12/sessions" "time" ) type Configurator func(*Bootstrapper) type Bootstrapper struct { *iris.Application AppName string AppOwner string AppSpawnDate time.Time Sessions *sessions.Sessions } func New(appName, appOwner string, cfgs ...Configurator) *Bootstrapper { b := &Bootstrapper{ Application: iris.New(), AppName: appName, AppOwner: appOwner, AppSpawnDate: time.Now(), } for _, cfg := range cfgs { cfg(b) } return b } func (b *Bootstrapper) Configure(cs ...Configurator) { for _, c := range cs { c(b) } } func (b *Bootstrapper) Bootstrap() *Bootstrapper { b.Use(recover2.New()) return b } func (b *Bootstrapper) Listen(addr string, cfgs ...iris.Configurator) { err := b.Run(iris.Addr(addr), cfgs...) if err != nil { return } }