github.com/djarvur/go-swagger@v0.18.0/examples/stream-server/restapi/operations/countdown_api.go (about) 1 // Code generated by go-swagger; DO NOT EDIT. 2 3 package operations 4 5 // This file was generated by the swagger tool. 6 // Editing this file might prove futile when you re-run the swagger generate command 7 8 import ( 9 "fmt" 10 "net/http" 11 "strings" 12 13 errors "github.com/go-openapi/errors" 14 loads "github.com/go-openapi/loads" 15 runtime "github.com/go-openapi/runtime" 16 middleware "github.com/go-openapi/runtime/middleware" 17 security "github.com/go-openapi/runtime/security" 18 spec "github.com/go-openapi/spec" 19 strfmt "github.com/go-openapi/strfmt" 20 "github.com/go-openapi/swag" 21 ) 22 23 // NewCountdownAPI creates a new Countdown instance 24 func NewCountdownAPI(spec *loads.Document) *CountdownAPI { 25 return &CountdownAPI{ 26 handlers: make(map[string]map[string]http.Handler), 27 formats: strfmt.Default, 28 defaultConsumes: "application/json", 29 defaultProduces: "application/json", 30 customConsumers: make(map[string]runtime.Consumer), 31 customProducers: make(map[string]runtime.Producer), 32 ServerShutdown: func() {}, 33 spec: spec, 34 ServeError: errors.ServeError, 35 BasicAuthenticator: security.BasicAuth, 36 APIKeyAuthenticator: security.APIKeyAuth, 37 BearerAuthenticator: security.BearerAuth, 38 JSONConsumer: runtime.JSONConsumer(), 39 JSONProducer: runtime.JSONProducer(), 40 ElapseHandler: ElapseHandlerFunc(func(params ElapseParams) middleware.Responder { 41 return middleware.NotImplemented("operation Elapse has not yet been implemented") 42 }), 43 } 44 } 45 46 /*CountdownAPI Example server for emitting newline delimited JSON */ 47 type CountdownAPI struct { 48 spec *loads.Document 49 context *middleware.Context 50 handlers map[string]map[string]http.Handler 51 formats strfmt.Registry 52 customConsumers map[string]runtime.Consumer 53 customProducers map[string]runtime.Producer 54 defaultConsumes string 55 defaultProduces string 56 Middleware func(middleware.Builder) http.Handler 57 58 // BasicAuthenticator generates a runtime.Authenticator from the supplied basic auth function. 59 // It has a default implemention in the security package, however you can replace it for your particular usage. 60 BasicAuthenticator func(security.UserPassAuthentication) runtime.Authenticator 61 // APIKeyAuthenticator generates a runtime.Authenticator from the supplied token auth function. 62 // It has a default implemention in the security package, however you can replace it for your particular usage. 63 APIKeyAuthenticator func(string, string, security.TokenAuthentication) runtime.Authenticator 64 // BearerAuthenticator generates a runtime.Authenticator from the supplied bearer token auth function. 65 // It has a default implemention in the security package, however you can replace it for your particular usage. 66 BearerAuthenticator func(string, security.ScopedTokenAuthentication) runtime.Authenticator 67 68 // JSONConsumer registers a consumer for a "application/json" mime type 69 JSONConsumer runtime.Consumer 70 71 // JSONProducer registers a producer for a "application/json" mime type 72 JSONProducer runtime.Producer 73 74 // ElapseHandler sets the operation handler for the elapse operation 75 ElapseHandler ElapseHandler 76 77 // ServeError is called when an error is received, there is a default handler 78 // but you can set your own with this 79 ServeError func(http.ResponseWriter, *http.Request, error) 80 81 // ServerShutdown is called when the HTTP(S) server is shut down and done 82 // handling all active connections and does not accept connections any more 83 ServerShutdown func() 84 85 // Custom command line argument groups with their descriptions 86 CommandLineOptionsGroups []swag.CommandLineOptionsGroup 87 88 // User defined logger function. 89 Logger func(string, ...interface{}) 90 } 91 92 // SetDefaultProduces sets the default produces media type 93 func (o *CountdownAPI) SetDefaultProduces(mediaType string) { 94 o.defaultProduces = mediaType 95 } 96 97 // SetDefaultConsumes returns the default consumes media type 98 func (o *CountdownAPI) SetDefaultConsumes(mediaType string) { 99 o.defaultConsumes = mediaType 100 } 101 102 // SetSpec sets a spec that will be served for the clients. 103 func (o *CountdownAPI) SetSpec(spec *loads.Document) { 104 o.spec = spec 105 } 106 107 // DefaultProduces returns the default produces media type 108 func (o *CountdownAPI) DefaultProduces() string { 109 return o.defaultProduces 110 } 111 112 // DefaultConsumes returns the default consumes media type 113 func (o *CountdownAPI) DefaultConsumes() string { 114 return o.defaultConsumes 115 } 116 117 // Formats returns the registered string formats 118 func (o *CountdownAPI) Formats() strfmt.Registry { 119 return o.formats 120 } 121 122 // RegisterFormat registers a custom format validator 123 func (o *CountdownAPI) RegisterFormat(name string, format strfmt.Format, validator strfmt.Validator) { 124 o.formats.Add(name, format, validator) 125 } 126 127 // Validate validates the registrations in the CountdownAPI 128 func (o *CountdownAPI) Validate() error { 129 var unregistered []string 130 131 if o.JSONConsumer == nil { 132 unregistered = append(unregistered, "JSONConsumer") 133 } 134 135 if o.JSONProducer == nil { 136 unregistered = append(unregistered, "JSONProducer") 137 } 138 139 if o.ElapseHandler == nil { 140 unregistered = append(unregistered, "ElapseHandler") 141 } 142 143 if len(unregistered) > 0 { 144 return fmt.Errorf("missing registration: %s", strings.Join(unregistered, ", ")) 145 } 146 147 return nil 148 } 149 150 // ServeErrorFor gets a error handler for a given operation id 151 func (o *CountdownAPI) ServeErrorFor(operationID string) func(http.ResponseWriter, *http.Request, error) { 152 return o.ServeError 153 } 154 155 // AuthenticatorsFor gets the authenticators for the specified security schemes 156 func (o *CountdownAPI) AuthenticatorsFor(schemes map[string]spec.SecurityScheme) map[string]runtime.Authenticator { 157 158 return nil 159 160 } 161 162 // Authorizer returns the registered authorizer 163 func (o *CountdownAPI) Authorizer() runtime.Authorizer { 164 165 return nil 166 167 } 168 169 // ConsumersFor gets the consumers for the specified media types 170 func (o *CountdownAPI) ConsumersFor(mediaTypes []string) map[string]runtime.Consumer { 171 172 result := make(map[string]runtime.Consumer) 173 for _, mt := range mediaTypes { 174 switch mt { 175 176 case "application/json": 177 result["application/json"] = o.JSONConsumer 178 179 } 180 181 if c, ok := o.customConsumers[mt]; ok { 182 result[mt] = c 183 } 184 } 185 return result 186 187 } 188 189 // ProducersFor gets the producers for the specified media types 190 func (o *CountdownAPI) ProducersFor(mediaTypes []string) map[string]runtime.Producer { 191 192 result := make(map[string]runtime.Producer) 193 for _, mt := range mediaTypes { 194 switch mt { 195 196 case "application/json": 197 result["application/json"] = o.JSONProducer 198 199 } 200 201 if p, ok := o.customProducers[mt]; ok { 202 result[mt] = p 203 } 204 } 205 return result 206 207 } 208 209 // HandlerFor gets a http.Handler for the provided operation method and path 210 func (o *CountdownAPI) HandlerFor(method, path string) (http.Handler, bool) { 211 if o.handlers == nil { 212 return nil, false 213 } 214 um := strings.ToUpper(method) 215 if _, ok := o.handlers[um]; !ok { 216 return nil, false 217 } 218 if path == "/" { 219 path = "" 220 } 221 h, ok := o.handlers[um][path] 222 return h, ok 223 } 224 225 // Context returns the middleware context for the countdown API 226 func (o *CountdownAPI) Context() *middleware.Context { 227 if o.context == nil { 228 o.context = middleware.NewRoutableContext(o.spec, o, nil) 229 } 230 231 return o.context 232 } 233 234 func (o *CountdownAPI) initHandlerCache() { 235 o.Context() // don't care about the result, just that the initialization happened 236 237 if o.handlers == nil { 238 o.handlers = make(map[string]map[string]http.Handler) 239 } 240 241 if o.handlers["GET"] == nil { 242 o.handlers["GET"] = make(map[string]http.Handler) 243 } 244 o.handlers["GET"]["/elapse/{length}"] = NewElapse(o.context, o.ElapseHandler) 245 246 } 247 248 // Serve creates a http handler to serve the API over HTTP 249 // can be used directly in http.ListenAndServe(":8000", api.Serve(nil)) 250 func (o *CountdownAPI) Serve(builder middleware.Builder) http.Handler { 251 o.Init() 252 253 if o.Middleware != nil { 254 return o.Middleware(builder) 255 } 256 return o.context.APIHandler(builder) 257 } 258 259 // Init allows you to just initialize the handler cache, you can then recompose the middleware as you see fit 260 func (o *CountdownAPI) Init() { 261 if len(o.handlers) == 0 { 262 o.initHandlerCache() 263 } 264 } 265 266 // RegisterConsumer allows you to add (or override) a consumer for a media type. 267 func (o *CountdownAPI) RegisterConsumer(mediaType string, consumer runtime.Consumer) { 268 o.customConsumers[mediaType] = consumer 269 } 270 271 // RegisterProducer allows you to add (or override) a producer for a media type. 272 func (o *CountdownAPI) RegisterProducer(mediaType string, producer runtime.Producer) { 273 o.customProducers[mediaType] = producer 274 }