Documentation ¶
Index ¶
- Variables
- func RegisterRateLimitServiceServer(s *grpc.Server, srv RateLimitServiceServer)
- type RateLimitRequest
- func (*RateLimitRequest) Descriptor() ([]byte, []int)
- func (m *RateLimitRequest) GetDescriptors() []*ratelimit.RateLimitDescriptor
- func (m *RateLimitRequest) GetDomain() string
- func (m *RateLimitRequest) GetHitsAddend() uint32
- func (m *RateLimitRequest) Marshal() (dAtA []byte, err error)
- func (m *RateLimitRequest) MarshalTo(dAtA []byte) (int, error)
- func (*RateLimitRequest) ProtoMessage()
- func (m *RateLimitRequest) Reset()
- func (m *RateLimitRequest) Size() (n int)
- func (m *RateLimitRequest) String() string
- func (m *RateLimitRequest) Unmarshal(dAtA []byte) error
- func (m *RateLimitRequest) Validate() error
- func (m *RateLimitRequest) XXX_DiscardUnknown()
- func (m *RateLimitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (dst *RateLimitRequest) XXX_Merge(src proto.Message)
- func (m *RateLimitRequest) XXX_Size() int
- func (m *RateLimitRequest) XXX_Unmarshal(b []byte) error
- type RateLimitRequestValidationError
- type RateLimitResponse
- func (*RateLimitResponse) Descriptor() ([]byte, []int)
- func (m *RateLimitResponse) GetHeaders() []*core.HeaderValue
- func (m *RateLimitResponse) GetOverallCode() RateLimitResponse_Code
- func (m *RateLimitResponse) GetStatuses() []*RateLimitResponse_DescriptorStatus
- func (m *RateLimitResponse) Marshal() (dAtA []byte, err error)
- func (m *RateLimitResponse) MarshalTo(dAtA []byte) (int, error)
- func (*RateLimitResponse) ProtoMessage()
- func (m *RateLimitResponse) Reset()
- func (m *RateLimitResponse) Size() (n int)
- func (m *RateLimitResponse) String() string
- func (m *RateLimitResponse) Unmarshal(dAtA []byte) error
- func (m *RateLimitResponse) Validate() error
- func (m *RateLimitResponse) XXX_DiscardUnknown()
- func (m *RateLimitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (dst *RateLimitResponse) XXX_Merge(src proto.Message)
- func (m *RateLimitResponse) XXX_Size() int
- func (m *RateLimitResponse) XXX_Unmarshal(b []byte) error
- type RateLimitResponseValidationError
- type RateLimitResponse_Code
- type RateLimitResponse_DescriptorStatus
- func (*RateLimitResponse_DescriptorStatus) Descriptor() ([]byte, []int)
- func (m *RateLimitResponse_DescriptorStatus) GetCode() RateLimitResponse_Code
- func (m *RateLimitResponse_DescriptorStatus) GetCurrentLimit() *RateLimitResponse_RateLimit
- func (m *RateLimitResponse_DescriptorStatus) GetLimitRemaining() uint32
- func (m *RateLimitResponse_DescriptorStatus) Marshal() (dAtA []byte, err error)
- func (m *RateLimitResponse_DescriptorStatus) MarshalTo(dAtA []byte) (int, error)
- func (*RateLimitResponse_DescriptorStatus) ProtoMessage()
- func (m *RateLimitResponse_DescriptorStatus) Reset()
- func (m *RateLimitResponse_DescriptorStatus) Size() (n int)
- func (m *RateLimitResponse_DescriptorStatus) String() string
- func (m *RateLimitResponse_DescriptorStatus) Unmarshal(dAtA []byte) error
- func (m *RateLimitResponse_DescriptorStatus) Validate() error
- func (m *RateLimitResponse_DescriptorStatus) XXX_DiscardUnknown()
- func (m *RateLimitResponse_DescriptorStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (dst *RateLimitResponse_DescriptorStatus) XXX_Merge(src proto.Message)
- func (m *RateLimitResponse_DescriptorStatus) XXX_Size() int
- func (m *RateLimitResponse_DescriptorStatus) XXX_Unmarshal(b []byte) error
- type RateLimitResponse_DescriptorStatusValidationError
- type RateLimitResponse_RateLimit
- func (*RateLimitResponse_RateLimit) Descriptor() ([]byte, []int)
- func (m *RateLimitResponse_RateLimit) GetRequestsPerUnit() uint32
- func (m *RateLimitResponse_RateLimit) GetUnit() RateLimitResponse_RateLimit_Unit
- func (m *RateLimitResponse_RateLimit) Marshal() (dAtA []byte, err error)
- func (m *RateLimitResponse_RateLimit) MarshalTo(dAtA []byte) (int, error)
- func (*RateLimitResponse_RateLimit) ProtoMessage()
- func (m *RateLimitResponse_RateLimit) Reset()
- func (m *RateLimitResponse_RateLimit) Size() (n int)
- func (m *RateLimitResponse_RateLimit) String() string
- func (m *RateLimitResponse_RateLimit) Unmarshal(dAtA []byte) error
- func (m *RateLimitResponse_RateLimit) Validate() error
- func (m *RateLimitResponse_RateLimit) XXX_DiscardUnknown()
- func (m *RateLimitResponse_RateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (dst *RateLimitResponse_RateLimit) XXX_Merge(src proto.Message)
- func (m *RateLimitResponse_RateLimit) XXX_Size() int
- func (m *RateLimitResponse_RateLimit) XXX_Unmarshal(b []byte) error
- type RateLimitResponse_RateLimitValidationError
- type RateLimitResponse_RateLimit_Unit
- type RateLimitServiceClient
- type RateLimitServiceServer
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidLengthRls = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowRls = fmt.Errorf("proto: integer overflow") )
var RateLimitResponse_Code_name = map[int32]string{
0: "UNKNOWN",
1: "OK",
2: "OVER_LIMIT",
}
var RateLimitResponse_Code_value = map[string]int32{
"UNKNOWN": 0,
"OK": 1,
"OVER_LIMIT": 2,
}
var RateLimitResponse_RateLimit_Unit_name = map[int32]string{
0: "UNKNOWN",
1: "SECOND",
2: "MINUTE",
3: "HOUR",
4: "DAY",
}
var RateLimitResponse_RateLimit_Unit_value = map[string]int32{
"UNKNOWN": 0,
"SECOND": 1,
"MINUTE": 2,
"HOUR": 3,
"DAY": 4,
}
Functions ¶
func RegisterRateLimitServiceServer ¶
func RegisterRateLimitServiceServer(s *grpc.Server, srv RateLimitServiceServer)
Types ¶
type RateLimitRequest ¶
type RateLimitRequest struct { // All rate limit requests must specify a domain. This enables the configuration to be per // application without fear of overlap. E.g., "envoy". Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` // All rate limit requests must specify at least one RateLimitDescriptor. Each descriptor is // processed by the service (see below). If any of the descriptors are over limit, the entire // request is considered to be over limit. Descriptors []*ratelimit.RateLimitDescriptor `protobuf:"bytes,2,rep,name=descriptors" json:"descriptors,omitempty"` // Rate limit requests can optionally specify the number of hits a request adds to the matched // limit. If the value is not set in the message, a request increases the matched limit by 1. HitsAddend uint32 `protobuf:"varint,3,opt,name=hits_addend,json=hitsAddend,proto3" json:"hits_addend,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Main message for a rate limit request. The rate limit service is designed to be fully generic in the sense that it can operate on arbitrary hierarchical key/value pairs. The loaded configuration will parse the request and find the most specific limit to apply. In addition, a RateLimitRequest can contain multiple "descriptors" to limit on. When multiple descriptors are provided, the server will limit on *ALL* of them and return an OVER_LIMIT response if any of them are over limit. This enables more complex application level rate limiting scenarios if desired. [#not-implemented-hide:] Hiding API for now.
func (*RateLimitRequest) Descriptor ¶
func (*RateLimitRequest) Descriptor() ([]byte, []int)
func (*RateLimitRequest) GetDescriptors ¶
func (m *RateLimitRequest) GetDescriptors() []*ratelimit.RateLimitDescriptor
func (*RateLimitRequest) GetDomain ¶
func (m *RateLimitRequest) GetDomain() string
func (*RateLimitRequest) GetHitsAddend ¶
func (m *RateLimitRequest) GetHitsAddend() uint32
func (*RateLimitRequest) Marshal ¶ added in v0.5.0
func (m *RateLimitRequest) Marshal() (dAtA []byte, err error)
func (*RateLimitRequest) MarshalTo ¶ added in v0.5.0
func (m *RateLimitRequest) MarshalTo(dAtA []byte) (int, error)
func (*RateLimitRequest) ProtoMessage ¶
func (*RateLimitRequest) ProtoMessage()
func (*RateLimitRequest) Reset ¶
func (m *RateLimitRequest) Reset()
func (*RateLimitRequest) Size ¶ added in v0.5.0
func (m *RateLimitRequest) Size() (n int)
func (*RateLimitRequest) String ¶
func (m *RateLimitRequest) String() string
func (*RateLimitRequest) Unmarshal ¶ added in v0.5.0
func (m *RateLimitRequest) Unmarshal(dAtA []byte) error
func (*RateLimitRequest) Validate ¶
func (m *RateLimitRequest) Validate() error
Validate checks the field values on RateLimitRequest with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.
func (*RateLimitRequest) XXX_DiscardUnknown ¶ added in v0.5.0
func (m *RateLimitRequest) XXX_DiscardUnknown()
func (*RateLimitRequest) XXX_Marshal ¶ added in v0.5.0
func (m *RateLimitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*RateLimitRequest) XXX_Merge ¶ added in v0.5.0
func (dst *RateLimitRequest) XXX_Merge(src proto.Message)
func (*RateLimitRequest) XXX_Size ¶ added in v0.5.0
func (m *RateLimitRequest) XXX_Size() int
func (*RateLimitRequest) XXX_Unmarshal ¶ added in v0.5.0
func (m *RateLimitRequest) XXX_Unmarshal(b []byte) error
type RateLimitRequestValidationError ¶
RateLimitRequestValidationError is the validation error returned by RateLimitRequest.Validate if the designated constraints aren't met.
func (RateLimitRequestValidationError) Error ¶
func (e RateLimitRequestValidationError) Error() string
Error satisfies the builtin error interface
type RateLimitResponse ¶
type RateLimitResponse struct { // The overall response code which takes into account all of the descriptors that were passed // in the RateLimitRequest message. OverallCode RateLimitResponse_Code `` /* 150-byte string literal not displayed */ // A list of DescriptorStatus messages which matches the length of the descriptor list passed // in the RateLimitRequest. This can be used by the caller to determine which individual // descriptors failed and/or what the currently configured limits are for all of them. Statuses []*RateLimitResponse_DescriptorStatus `protobuf:"bytes,2,rep,name=statuses" json:"statuses,omitempty"` // A list of headers to add to the response Headers []*core.HeaderValue `protobuf:"bytes,3,rep,name=headers" json:"headers,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
A response from a ShouldRateLimit call. [#not-implemented-hide:] Hiding API for now.
func (*RateLimitResponse) Descriptor ¶
func (*RateLimitResponse) Descriptor() ([]byte, []int)
func (*RateLimitResponse) GetHeaders ¶
func (m *RateLimitResponse) GetHeaders() []*core.HeaderValue
func (*RateLimitResponse) GetOverallCode ¶
func (m *RateLimitResponse) GetOverallCode() RateLimitResponse_Code
func (*RateLimitResponse) GetStatuses ¶
func (m *RateLimitResponse) GetStatuses() []*RateLimitResponse_DescriptorStatus
func (*RateLimitResponse) Marshal ¶ added in v0.5.0
func (m *RateLimitResponse) Marshal() (dAtA []byte, err error)
func (*RateLimitResponse) MarshalTo ¶ added in v0.5.0
func (m *RateLimitResponse) MarshalTo(dAtA []byte) (int, error)
func (*RateLimitResponse) ProtoMessage ¶
func (*RateLimitResponse) ProtoMessage()
func (*RateLimitResponse) Reset ¶
func (m *RateLimitResponse) Reset()
func (*RateLimitResponse) Size ¶ added in v0.5.0
func (m *RateLimitResponse) Size() (n int)
func (*RateLimitResponse) String ¶
func (m *RateLimitResponse) String() string
func (*RateLimitResponse) Unmarshal ¶ added in v0.5.0
func (m *RateLimitResponse) Unmarshal(dAtA []byte) error
func (*RateLimitResponse) Validate ¶
func (m *RateLimitResponse) Validate() error
Validate checks the field values on RateLimitResponse with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.
func (*RateLimitResponse) XXX_DiscardUnknown ¶ added in v0.5.0
func (m *RateLimitResponse) XXX_DiscardUnknown()
func (*RateLimitResponse) XXX_Marshal ¶ added in v0.5.0
func (m *RateLimitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*RateLimitResponse) XXX_Merge ¶ added in v0.5.0
func (dst *RateLimitResponse) XXX_Merge(src proto.Message)
func (*RateLimitResponse) XXX_Size ¶ added in v0.5.0
func (m *RateLimitResponse) XXX_Size() int
func (*RateLimitResponse) XXX_Unmarshal ¶ added in v0.5.0
func (m *RateLimitResponse) XXX_Unmarshal(b []byte) error
type RateLimitResponseValidationError ¶
RateLimitResponseValidationError is the validation error returned by RateLimitResponse.Validate if the designated constraints aren't met.
func (RateLimitResponseValidationError) Error ¶
func (e RateLimitResponseValidationError) Error() string
Error satisfies the builtin error interface
type RateLimitResponse_Code ¶
type RateLimitResponse_Code int32
const ( RateLimitResponse_UNKNOWN RateLimitResponse_Code = 0 RateLimitResponse_OK RateLimitResponse_Code = 1 RateLimitResponse_OVER_LIMIT RateLimitResponse_Code = 2 )
func (RateLimitResponse_Code) EnumDescriptor ¶
func (RateLimitResponse_Code) EnumDescriptor() ([]byte, []int)
func (RateLimitResponse_Code) String ¶
func (x RateLimitResponse_Code) String() string
type RateLimitResponse_DescriptorStatus ¶
type RateLimitResponse_DescriptorStatus struct { // The response code for an individual descriptor. Code RateLimitResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=envoy.service.ratelimit.v2.RateLimitResponse_Code" json:"code,omitempty"` // The current limit as configured by the server. Useful for debugging, etc. CurrentLimit *RateLimitResponse_RateLimit `protobuf:"bytes,2,opt,name=current_limit,json=currentLimit" json:"current_limit,omitempty"` // The limit remaining in the current time unit. LimitRemaining uint32 `protobuf:"varint,3,opt,name=limit_remaining,json=limitRemaining,proto3" json:"limit_remaining,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*RateLimitResponse_DescriptorStatus) Descriptor ¶
func (*RateLimitResponse_DescriptorStatus) Descriptor() ([]byte, []int)
func (*RateLimitResponse_DescriptorStatus) GetCode ¶
func (m *RateLimitResponse_DescriptorStatus) GetCode() RateLimitResponse_Code
func (*RateLimitResponse_DescriptorStatus) GetCurrentLimit ¶
func (m *RateLimitResponse_DescriptorStatus) GetCurrentLimit() *RateLimitResponse_RateLimit
func (*RateLimitResponse_DescriptorStatus) GetLimitRemaining ¶
func (m *RateLimitResponse_DescriptorStatus) GetLimitRemaining() uint32
func (*RateLimitResponse_DescriptorStatus) Marshal ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) Marshal() (dAtA []byte, err error)
func (*RateLimitResponse_DescriptorStatus) MarshalTo ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) MarshalTo(dAtA []byte) (int, error)
func (*RateLimitResponse_DescriptorStatus) ProtoMessage ¶
func (*RateLimitResponse_DescriptorStatus) ProtoMessage()
func (*RateLimitResponse_DescriptorStatus) Reset ¶
func (m *RateLimitResponse_DescriptorStatus) Reset()
func (*RateLimitResponse_DescriptorStatus) Size ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) Size() (n int)
func (*RateLimitResponse_DescriptorStatus) String ¶
func (m *RateLimitResponse_DescriptorStatus) String() string
func (*RateLimitResponse_DescriptorStatus) Unmarshal ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) Unmarshal(dAtA []byte) error
func (*RateLimitResponse_DescriptorStatus) Validate ¶
func (m *RateLimitResponse_DescriptorStatus) Validate() error
Validate checks the field values on RateLimitResponse_DescriptorStatus with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.
func (*RateLimitResponse_DescriptorStatus) XXX_DiscardUnknown ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) XXX_DiscardUnknown()
func (*RateLimitResponse_DescriptorStatus) XXX_Marshal ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*RateLimitResponse_DescriptorStatus) XXX_Merge ¶ added in v0.5.0
func (dst *RateLimitResponse_DescriptorStatus) XXX_Merge(src proto.Message)
func (*RateLimitResponse_DescriptorStatus) XXX_Size ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) XXX_Size() int
func (*RateLimitResponse_DescriptorStatus) XXX_Unmarshal ¶ added in v0.5.0
func (m *RateLimitResponse_DescriptorStatus) XXX_Unmarshal(b []byte) error
type RateLimitResponse_DescriptorStatusValidationError ¶
type RateLimitResponse_DescriptorStatusValidationError struct { Field string Reason string Cause error Key bool }
RateLimitResponse_DescriptorStatusValidationError is the validation error returned by RateLimitResponse_DescriptorStatus.Validate if the designated constraints aren't met.
func (RateLimitResponse_DescriptorStatusValidationError) Error ¶
func (e RateLimitResponse_DescriptorStatusValidationError) Error() string
Error satisfies the builtin error interface
type RateLimitResponse_RateLimit ¶
type RateLimitResponse_RateLimit struct { RequestsPerUnit uint32 `protobuf:"varint,1,opt,name=requests_per_unit,json=requestsPerUnit,proto3" json:"requests_per_unit,omitempty"` Unit RateLimitResponse_RateLimit_Unit `` /* 127-byte string literal not displayed */ XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Defines an actual rate limit in terms of requests per unit of time and the unit itself.
func (*RateLimitResponse_RateLimit) Descriptor ¶
func (*RateLimitResponse_RateLimit) Descriptor() ([]byte, []int)
func (*RateLimitResponse_RateLimit) GetRequestsPerUnit ¶
func (m *RateLimitResponse_RateLimit) GetRequestsPerUnit() uint32
func (*RateLimitResponse_RateLimit) GetUnit ¶
func (m *RateLimitResponse_RateLimit) GetUnit() RateLimitResponse_RateLimit_Unit
func (*RateLimitResponse_RateLimit) Marshal ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) Marshal() (dAtA []byte, err error)
func (*RateLimitResponse_RateLimit) MarshalTo ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) MarshalTo(dAtA []byte) (int, error)
func (*RateLimitResponse_RateLimit) ProtoMessage ¶
func (*RateLimitResponse_RateLimit) ProtoMessage()
func (*RateLimitResponse_RateLimit) Reset ¶
func (m *RateLimitResponse_RateLimit) Reset()
func (*RateLimitResponse_RateLimit) Size ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) Size() (n int)
func (*RateLimitResponse_RateLimit) String ¶
func (m *RateLimitResponse_RateLimit) String() string
func (*RateLimitResponse_RateLimit) Unmarshal ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) Unmarshal(dAtA []byte) error
func (*RateLimitResponse_RateLimit) Validate ¶
func (m *RateLimitResponse_RateLimit) Validate() error
Validate checks the field values on RateLimitResponse_RateLimit with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.
func (*RateLimitResponse_RateLimit) XXX_DiscardUnknown ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) XXX_DiscardUnknown()
func (*RateLimitResponse_RateLimit) XXX_Marshal ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*RateLimitResponse_RateLimit) XXX_Merge ¶ added in v0.5.0
func (dst *RateLimitResponse_RateLimit) XXX_Merge(src proto.Message)
func (*RateLimitResponse_RateLimit) XXX_Size ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) XXX_Size() int
func (*RateLimitResponse_RateLimit) XXX_Unmarshal ¶ added in v0.5.0
func (m *RateLimitResponse_RateLimit) XXX_Unmarshal(b []byte) error
type RateLimitResponse_RateLimitValidationError ¶
type RateLimitResponse_RateLimitValidationError struct { Field string Reason string Cause error Key bool }
RateLimitResponse_RateLimitValidationError is the validation error returned by RateLimitResponse_RateLimit.Validate if the designated constraints aren't met.
func (RateLimitResponse_RateLimitValidationError) Error ¶
func (e RateLimitResponse_RateLimitValidationError) Error() string
Error satisfies the builtin error interface
type RateLimitResponse_RateLimit_Unit ¶
type RateLimitResponse_RateLimit_Unit int32
const ( RateLimitResponse_RateLimit_UNKNOWN RateLimitResponse_RateLimit_Unit = 0 RateLimitResponse_RateLimit_SECOND RateLimitResponse_RateLimit_Unit = 1 RateLimitResponse_RateLimit_MINUTE RateLimitResponse_RateLimit_Unit = 2 RateLimitResponse_RateLimit_HOUR RateLimitResponse_RateLimit_Unit = 3 RateLimitResponse_RateLimit_DAY RateLimitResponse_RateLimit_Unit = 4 )
func (RateLimitResponse_RateLimit_Unit) EnumDescriptor ¶
func (RateLimitResponse_RateLimit_Unit) EnumDescriptor() ([]byte, []int)
func (RateLimitResponse_RateLimit_Unit) String ¶
func (x RateLimitResponse_RateLimit_Unit) String() string
type RateLimitServiceClient ¶
type RateLimitServiceClient interface { // Determine whether rate limiting should take place. ShouldRateLimit(ctx context.Context, in *RateLimitRequest, opts ...grpc.CallOption) (*RateLimitResponse, error) }
func NewRateLimitServiceClient ¶
func NewRateLimitServiceClient(cc *grpc.ClientConn) RateLimitServiceClient
type RateLimitServiceServer ¶
type RateLimitServiceServer interface { // Determine whether rate limiting should take place. ShouldRateLimit(context.Context, *RateLimitRequest) (*RateLimitResponse, error) }