1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Copyright (c) 2017 Uber Technologies, Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package baggage
- const (
- defaultMaxValueLength = 2048
- )
- // Restriction determines whether a baggage key is allowed and contains any restrictions on the baggage value.
- type Restriction struct {
- keyAllowed bool
- maxValueLength int
- }
- // NewRestriction returns a new Restriction.
- func NewRestriction(keyAllowed bool, maxValueLength int) *Restriction {
- return &Restriction{
- keyAllowed: keyAllowed,
- maxValueLength: maxValueLength,
- }
- }
- // KeyAllowed returns whether the baggage key for this restriction is allowed.
- func (r *Restriction) KeyAllowed() bool {
- return r.keyAllowed
- }
- // MaxValueLength returns the max length for the baggage value.
- func (r *Restriction) MaxValueLength() int {
- return r.maxValueLength
- }
- // RestrictionManager keeps track of valid baggage keys and their restrictions. The manager
- // will return a Restriction for a specific baggage key which will determine whether the baggage
- // key is allowed for the current service and any other applicable restrictions on the baggage
- // value.
- type RestrictionManager interface {
- GetRestriction(service, key string) *Restriction
- }
- // DefaultRestrictionManager allows any baggage key.
- type DefaultRestrictionManager struct {
- defaultRestriction *Restriction
- }
- // NewDefaultRestrictionManager returns a DefaultRestrictionManager.
- func NewDefaultRestrictionManager(maxValueLength int) *DefaultRestrictionManager {
- if maxValueLength == 0 {
- maxValueLength = defaultMaxValueLength
- }
- return &DefaultRestrictionManager{
- defaultRestriction: &Restriction{keyAllowed: true, maxValueLength: maxValueLength},
- }
- }
- // GetRestriction implements RestrictionManager#GetRestriction.
- func (m *DefaultRestrictionManager) GetRestriction(service, key string) *Restriction {
- return m.defaultRestriction
- }
|