package http import ( "github.com/owncloud/ocis-pkg/middleware" "github.com/owncloud/ocis-pkg/service/http" "github.com/owncloud/ocis-webdav/pkg/config" "github.com/owncloud/ocis-webdav/pkg/flagset" "github.com/owncloud/ocis-webdav/pkg/service/v0" "github.com/owncloud/ocis-webdav/pkg/version" ) // Server initializes the http service and server. func Server(opts ...Option) (http.Service, error) { options := newOptions(opts...) service := http.NewService( http.Logger(options.Logger), http.Namespace("go.micro.web"), http.Name("webdav"), http.Version(version.String), http.Address(options.Config.HTTP.Addr), http.Context(options.Context), http.Flags(flagset.RootWithConfig(config.New())...), http.Flags(flagset.ServerWithConfig(config.New())...), ) handle := svc.NewService( svc.Logger(options.Logger), svc.Config(options.Config), svc.Middleware( middleware.RealIP, middleware.RequestID, middleware.Cache, middleware.Cors, middleware.Secure, middleware.Version( "webdav", version.String, ), middleware.Logger( options.Logger, ), ), ) { handle = svc.NewInstrument(handle, options.Metrics) handle = svc.NewLogging(handle, options.Logger) handle = svc.NewTracing(handle) } service.Handle( "/", handle, ) service.Init() return service, nil }