Files
2017-02-14 13:59:07 -08:00

48 lines
916 B
Go

package api
import (
"net/http"
"github.com/gorilla/context"
"github.com/rancher/go-rancher/client"
)
type key int
const (
contextKey key = 0
)
type ApiContext struct {
r *http.Request
schemas *client.Schemas
UrlBuilder UrlBuilder
apiResponseWriter ApiResponseWriter
responseWriter http.ResponseWriter
}
func GetApiContext(r *http.Request) *ApiContext {
if rv := context.Get(r, contextKey); rv != nil {
return rv.(*ApiContext)
}
return nil
}
func CreateApiContext(rw http.ResponseWriter, r *http.Request, schemas *client.Schemas) error {
urlBuilder, err := NewUrlBuilder(r, schemas)
if err != nil {
return err
}
apiContext := &ApiContext{
r: r,
schemas: schemas,
UrlBuilder: urlBuilder,
apiResponseWriter: parseResponseType(r),
responseWriter: rw,
}
context.Set(r, contextKey, apiContext)
return nil
}