summaryrefslogtreecommitdiff
path: root/ctxlib/context.go
diff options
context:
space:
mode:
Diffstat (limited to 'ctxlib/context.go')
-rw-r--r--ctxlib/context.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/ctxlib/context.go b/ctxlib/context.go
new file mode 100644
index 0000000..79851ce
--- /dev/null
+++ b/ctxlib/context.go
@@ -0,0 +1,44 @@
+package ctxlib
+
+import (
+ "context"
+ "net/http"
+)
+
+type ctxKey int
+
+const (
+ Method ctxKey = iota
+ Headers
+ Request
+ RequestID
+ Response
+)
+
+func ResponseFromContext(ctx context.Context) http.ResponseWriter {
+ return ctx.Value(Response).(http.ResponseWriter)
+}
+
+func RequestFromContext(ctx context.Context) *http.Request {
+ c := ctx.Value(Request)
+ if c == nil {
+ return &http.Request{}
+ }
+ return c.(*http.Request)
+}
+
+func HeadersFromContext(ctx context.Context) http.Header {
+ c := ctx.Value(Headers)
+ if c == nil {
+ return http.Header{}
+ }
+ return c.(http.Header)
+}
+
+func MethodFromContext(ctx context.Context) string {
+ c := ctx.Value(Method)
+ if c == nil {
+ return http.MethodGet
+ }
+ return c.(string)
+}