| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- // Code generated by go-swagger; DO NOT EDIT.
- package operations
- // This file was generated by the swagger tool.
- // Editing this file might prove futile when you re-run the swagger generate command
- import (
- "fmt"
- "net/http"
- "strings"
- "github.com/go-openapi/errors"
- "github.com/go-openapi/loads"
- "github.com/go-openapi/runtime"
- "github.com/go-openapi/runtime/middleware"
- "github.com/go-openapi/runtime/security"
- "github.com/go-openapi/spec"
- "github.com/go-openapi/strfmt"
- "github.com/go-openapi/swag"
- )
- // NewSpaasAPI creates a new Spaas instance
- func NewSpaasAPI(spec *loads.Document) *SpaasAPI {
- return &SpaasAPI{
- handlers: make(map[string]map[string]http.Handler),
- formats: strfmt.Default,
- defaultConsumes: "application/json",
- defaultProduces: "application/json",
- customConsumers: make(map[string]runtime.Consumer),
- customProducers: make(map[string]runtime.Producer),
- PreServerShutdown: func() {},
- ServerShutdown: func() {},
- spec: spec,
- useSwaggerUI: false,
- ServeError: errors.ServeError,
- BasicAuthenticator: security.BasicAuth,
- APIKeyAuthenticator: security.APIKeyAuth,
- BearerAuthenticator: security.BearerAuth,
- JSONConsumer: runtime.JSONConsumer(),
- JSONProducer: runtime.JSONProducer(),
- ProductionPlanHandler: ProductionPlanHandlerFunc(func(params ProductionPlanParams) middleware.Responder {
- return middleware.NotImplemented("operation ProductionPlan has not yet been implemented")
- }),
- }
- }
- /*SpaasAPI This API exposes an algorithm that computes optimal power production allocation for a given power need and power plant capacity. */
- type SpaasAPI struct {
- spec *loads.Document
- context *middleware.Context
- handlers map[string]map[string]http.Handler
- formats strfmt.Registry
- customConsumers map[string]runtime.Consumer
- customProducers map[string]runtime.Producer
- defaultConsumes string
- defaultProduces string
- Middleware func(middleware.Builder) http.Handler
- useSwaggerUI bool
- // BasicAuthenticator generates a runtime.Authenticator from the supplied basic auth function.
- // It has a default implementation in the security package, however you can replace it for your particular usage.
- BasicAuthenticator func(security.UserPassAuthentication) runtime.Authenticator
- // APIKeyAuthenticator generates a runtime.Authenticator from the supplied token auth function.
- // It has a default implementation in the security package, however you can replace it for your particular usage.
- APIKeyAuthenticator func(string, string, security.TokenAuthentication) runtime.Authenticator
- // BearerAuthenticator generates a runtime.Authenticator from the supplied bearer token auth function.
- // It has a default implementation in the security package, however you can replace it for your particular usage.
- BearerAuthenticator func(string, security.ScopedTokenAuthentication) runtime.Authenticator
- // JSONConsumer registers a consumer for the following mime types:
- // - application/eu.reverservices.gem.spaas.v1+json
- // - application/json
- JSONConsumer runtime.Consumer
- // JSONProducer registers a producer for the following mime types:
- // - application/eu.reverservices.gem.spaas.v1+json
- // - application/json
- JSONProducer runtime.Producer
- // ProductionPlanHandler sets the operation handler for the production plan operation
- ProductionPlanHandler ProductionPlanHandler
- // ServeError is called when an error is received, there is a default handler
- // but you can set your own with this
- ServeError func(http.ResponseWriter, *http.Request, error)
- // PreServerShutdown is called before the HTTP(S) server is shutdown
- // This allows for custom functions to get executed before the HTTP(S) server stops accepting traffic
- PreServerShutdown func()
- // ServerShutdown is called when the HTTP(S) server is shut down and done
- // handling all active connections and does not accept connections any more
- ServerShutdown func()
- // Custom command line argument groups with their descriptions
- CommandLineOptionsGroups []swag.CommandLineOptionsGroup
- // User defined logger function.
- Logger func(string, ...interface{})
- }
- // UseRedoc for documentation at /docs
- func (o *SpaasAPI) UseRedoc() {
- o.useSwaggerUI = false
- }
- // UseSwaggerUI for documentation at /docs
- func (o *SpaasAPI) UseSwaggerUI() {
- o.useSwaggerUI = true
- }
- // SetDefaultProduces sets the default produces media type
- func (o *SpaasAPI) SetDefaultProduces(mediaType string) {
- o.defaultProduces = mediaType
- }
- // SetDefaultConsumes returns the default consumes media type
- func (o *SpaasAPI) SetDefaultConsumes(mediaType string) {
- o.defaultConsumes = mediaType
- }
- // SetSpec sets a spec that will be served for the clients.
- func (o *SpaasAPI) SetSpec(spec *loads.Document) {
- o.spec = spec
- }
- // DefaultProduces returns the default produces media type
- func (o *SpaasAPI) DefaultProduces() string {
- return o.defaultProduces
- }
- // DefaultConsumes returns the default consumes media type
- func (o *SpaasAPI) DefaultConsumes() string {
- return o.defaultConsumes
- }
- // Formats returns the registered string formats
- func (o *SpaasAPI) Formats() strfmt.Registry {
- return o.formats
- }
- // RegisterFormat registers a custom format validator
- func (o *SpaasAPI) RegisterFormat(name string, format strfmt.Format, validator strfmt.Validator) {
- o.formats.Add(name, format, validator)
- }
- // Validate validates the registrations in the SpaasAPI
- func (o *SpaasAPI) Validate() error {
- var unregistered []string
- if o.JSONConsumer == nil {
- unregistered = append(unregistered, "JSONConsumer")
- }
- if o.JSONProducer == nil {
- unregistered = append(unregistered, "JSONProducer")
- }
- if o.ProductionPlanHandler == nil {
- unregistered = append(unregistered, "ProductionPlanHandler")
- }
- if len(unregistered) > 0 {
- return fmt.Errorf("missing registration: %s", strings.Join(unregistered, ", "))
- }
- return nil
- }
- // ServeErrorFor gets a error handler for a given operation id
- func (o *SpaasAPI) ServeErrorFor(operationID string) func(http.ResponseWriter, *http.Request, error) {
- return o.ServeError
- }
- // AuthenticatorsFor gets the authenticators for the specified security schemes
- func (o *SpaasAPI) AuthenticatorsFor(schemes map[string]spec.SecurityScheme) map[string]runtime.Authenticator {
- return nil
- }
- // Authorizer returns the registered authorizer
- func (o *SpaasAPI) Authorizer() runtime.Authorizer {
- return nil
- }
- // ConsumersFor gets the consumers for the specified media types.
- // MIME type parameters are ignored here.
- func (o *SpaasAPI) ConsumersFor(mediaTypes []string) map[string]runtime.Consumer {
- result := make(map[string]runtime.Consumer, len(mediaTypes))
- for _, mt := range mediaTypes {
- switch mt {
- case "application/eu.reverservices.gem.spaas.v1+json":
- result["application/eu.reverservices.gem.spaas.v1+json"] = o.JSONConsumer
- case "application/json":
- result["application/json"] = o.JSONConsumer
- }
- if c, ok := o.customConsumers[mt]; ok {
- result[mt] = c
- }
- }
- return result
- }
- // ProducersFor gets the producers for the specified media types.
- // MIME type parameters are ignored here.
- func (o *SpaasAPI) ProducersFor(mediaTypes []string) map[string]runtime.Producer {
- result := make(map[string]runtime.Producer, len(mediaTypes))
- for _, mt := range mediaTypes {
- switch mt {
- case "application/eu.reverservices.gem.spaas.v1+json":
- result["application/eu.reverservices.gem.spaas.v1+json"] = o.JSONProducer
- case "application/json":
- result["application/json"] = o.JSONProducer
- }
- if p, ok := o.customProducers[mt]; ok {
- result[mt] = p
- }
- }
- return result
- }
- // HandlerFor gets a http.Handler for the provided operation method and path
- func (o *SpaasAPI) HandlerFor(method, path string) (http.Handler, bool) {
- if o.handlers == nil {
- return nil, false
- }
- um := strings.ToUpper(method)
- if _, ok := o.handlers[um]; !ok {
- return nil, false
- }
- if path == "/" {
- path = ""
- }
- h, ok := o.handlers[um][path]
- return h, ok
- }
- // Context returns the middleware context for the spaas API
- func (o *SpaasAPI) Context() *middleware.Context {
- if o.context == nil {
- o.context = middleware.NewRoutableContext(o.spec, o, nil)
- }
- return o.context
- }
- func (o *SpaasAPI) initHandlerCache() {
- o.Context() // don't care about the result, just that the initialization happened
- if o.handlers == nil {
- o.handlers = make(map[string]map[string]http.Handler)
- }
- if o.handlers["POST"] == nil {
- o.handlers["POST"] = make(map[string]http.Handler)
- }
- o.handlers["POST"]["/productionplan"] = NewProductionPlan(o.context, o.ProductionPlanHandler)
- }
- // Serve creates a http handler to serve the API over HTTP
- // can be used directly in http.ListenAndServe(":8000", api.Serve(nil))
- func (o *SpaasAPI) Serve(builder middleware.Builder) http.Handler {
- o.Init()
- if o.Middleware != nil {
- return o.Middleware(builder)
- }
- if o.useSwaggerUI {
- return o.context.APIHandlerSwaggerUI(builder)
- }
- return o.context.APIHandler(builder)
- }
- // Init allows you to just initialize the handler cache, you can then recompose the middleware as you see fit
- func (o *SpaasAPI) Init() {
- if len(o.handlers) == 0 {
- o.initHandlerCache()
- }
- }
- // RegisterConsumer allows you to add (or override) a consumer for a media type.
- func (o *SpaasAPI) RegisterConsumer(mediaType string, consumer runtime.Consumer) {
- o.customConsumers[mediaType] = consumer
- }
- // RegisterProducer allows you to add (or override) a producer for a media type.
- func (o *SpaasAPI) RegisterProducer(mediaType string, producer runtime.Producer) {
- o.customProducers[mediaType] = producer
- }
- // AddMiddlewareFor adds a http middleware to existing handler
- func (o *SpaasAPI) AddMiddlewareFor(method, path string, builder middleware.Builder) {
- um := strings.ToUpper(method)
- if path == "/" {
- path = ""
- }
- o.Init()
- if h, ok := o.handlers[um][path]; ok {
- o.handlers[method][path] = builder(h)
- }
- }
|