32 lines
1.0 KiB
Go
32 lines
1.0 KiB
Go
package decoding
|
|
|
|
import "context"
|
|
|
|
type requestContextKey string
|
|
|
|
// Note(philipc): We can add functions later to add the max request body length
|
|
// to contexts, if we ever need to.
|
|
const (
|
|
reqCtxKeyMaxLen = requestContextKey("server-decoding-plugin-context-max-length")
|
|
reqCtxKeyGzipMaxLen = requestContextKey("server-decoding-plugin-context-gzip-max-length")
|
|
)
|
|
|
|
func AddServerDecodingMaxLen(ctx context.Context, maxLen int64) context.Context {
|
|
return context.WithValue(ctx, reqCtxKeyMaxLen, maxLen)
|
|
}
|
|
|
|
func AddServerDecodingGzipMaxLen(ctx context.Context, maxLen int64) context.Context {
|
|
return context.WithValue(ctx, reqCtxKeyGzipMaxLen, maxLen)
|
|
}
|
|
|
|
// Used for enforcing max body content limits when dealing with chunked requests.
|
|
func GetServerDecodingMaxLen(ctx context.Context) (int64, bool) {
|
|
maxLength, ok := ctx.Value(reqCtxKeyMaxLen).(int64)
|
|
return maxLength, ok
|
|
}
|
|
|
|
func GetServerDecodingGzipMaxLen(ctx context.Context) (int64, bool) {
|
|
gzipMaxLength, ok := ctx.Value(reqCtxKeyGzipMaxLen).(int64)
|
|
return gzipMaxLength, ok
|
|
}
|