// New creates a new default runtime for a swagger api client. func New(host, basePath string, schemes []string) *Runtime { var rt Runtime rt.DefaultMediaType = httpkit.JSONMime // TODO: actually infer this stuff from the spec rt.Consumers = map[string]httpkit.Consumer{ httpkit.JSONMime: httpkit.JSONConsumer(), httpkit.XMLMime: httpkit.XMLConsumer(), httpkit.TextMime: httpkit.TextConsumer(), } rt.Producers = map[string]httpkit.Producer{ httpkit.JSONMime: httpkit.JSONProducer(), httpkit.XMLMime: httpkit.XMLProducer(), httpkit.TextMime: httpkit.TextProducer(), } rt.Transport = http.DefaultTransport rt.Jar = nil rt.Host = host rt.BasePath = basePath rt.Context = context.Background() rt.clientOnce = new(sync.Once) if !strings.HasPrefix(rt.BasePath, "/") { rt.BasePath = "/" + rt.BasePath } rt.Debug = os.Getenv("DEBUG") == "1" if len(schemes) > 0 { rt.schemes = schemes } return &rt }
func configureAPI(api *operations.PortLayerAPI) http.Handler { if options.PortLayerOptions.Debug { log.SetLevel(log.DebugLevel) } ctx := context.Background() sessionconfig := &session.Config{ Service: options.PortLayerOptions.SDK, Insecure: options.PortLayerOptions.Insecure, Keepalive: options.PortLayerOptions.Keepalive, DatacenterPath: options.PortLayerOptions.DatacenterPath, ClusterPath: options.PortLayerOptions.ClusterPath, PoolPath: options.PortLayerOptions.PoolPath, DatastorePath: options.PortLayerOptions.DatastorePath, } sess, err := session.NewSession(sessionconfig).Create(ctx) if err != nil { log.Fatalf("configure_port_layer ERROR: %s", err) } // Configure the func invoked if the PL panics or is restarted by vic-init api.ServerShutdown = func() { log.Infof("Shutting down port-layer-server") // Logout the session if err := sess.Logout(ctx); err != nil { log.Warnf("unable to log out of session: %s", err) } } // initialize the port layer if err = portlayer.Init(ctx, sess); err != nil { log.Fatalf("could not initialize port layer: %s", err) } // configure the api here api.ServeError = errors.ServeError api.BinConsumer = httpkit.ByteStreamConsumer() api.JSONConsumer = httpkit.JSONConsumer() api.JSONProducer = httpkit.JSONProducer() api.TxtProducer = httpkit.TextProducer() handlerCtx := &handlers.HandlerContext{ Session: sess, } for _, handler := range portlayerhandlers { handler.Configure(api, handlerCtx) } return setupGlobalMiddleware(api.Serve(setupMiddlewares)) }
"mime" "mime/multipart" "os" "path/filepath" "testing" "github.com/go-swagger/go-swagger/client" "github.com/go-swagger/go-swagger/httpkit" "github.com/go-swagger/go-swagger/strfmt" "github.com/stretchr/testify/assert" ) var testProducers = map[string]httpkit.Producer{ httpkit.JSONMime: httpkit.JSONProducer(), httpkit.XMLMime: httpkit.XMLProducer(), httpkit.TextMime: httpkit.TextProducer(), } func TestBuildRequest_SetHeaders(t *testing.T) { r, _ := newRequest("GET", "/flats/{id}/", nil) // single value r.SetHeaderParam("X-Rate-Limit", "500") assert.Equal(t, "500", r.header.Get("X-Rate-Limit")) r.SetHeaderParam("X-Rate-Limit", "400") assert.Equal(t, "400", r.header.Get("X-Rate-Limit")) // multi value r.SetHeaderParam("X-Accepts", "json", "xml", "yaml") assert.EqualValues(t, []string{"json", "xml", "yaml"}, r.header["X-Accepts"]) }