Documentation ¶
Index ¶
- type APILimit
- type AccessDefinition
- type AccessSpec
- type HashType
- type Policy
- type PolicyPartitions
- type SessionState
- func (s *SessionState) GetQuotaLimitByAPIID(apiID string) (int64, int64, int64, int64)
- func (s *SessionState) KeyHash() string
- func (s *SessionState) KeyHashEmpty() bool
- func (s *SessionState) Lifetime(fallback int64) int64
- func (s *SessionState) MD5Hash() string
- func (s *SessionState) PoliciesEqualTo(ids []string) bool
- func (s *SessionState) PolicyIDs() []string
- func (s *SessionState) SetKeyHash(hash string)
- func (s *SessionState) SetPolicies(ids ...string)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APILimit ¶
type APILimit struct { Rate float64 `json:"rate" msg:"rate"` Per float64 `json:"per" msg:"per"` ThrottleInterval float64 `json:"throttle_interval" msg:"throttle_interval"` ThrottleRetryLimit int `json:"throttle_retry_limit" msg:"throttle_retry_limit"` QuotaMax int64 `json:"quota_max" msg:"quota_max"` QuotaRenews int64 `json:"quota_renews" msg:"quota_renews"` QuotaRemaining int64 `json:"quota_remaining" msg:"quota_remaining"` QuotaRenewalRate int64 `json:"quota_renewal_rate" msg:"quota_renewal_rate"` SetBy string `json:"-" msg:"-"` }
APILimit stores quota and rate limit on ACL level (per API)
type AccessDefinition ¶
type AccessDefinition struct { APIName string `json:"api_name" msg:"api_name"` APIID string `json:"api_id" msg:"api_id"` Versions []string `json:"versions" msg:"versions"` AllowedURLs []AccessSpec `bson:"allowed_urls" json:"allowed_urls" msg:"allowed_urls"` // mapped string MUST be a valid regex Limit *APILimit `json:"limit" msg:"limit"` AllowanceScope string `json:"allowance_scope" msg:"allowance_scope"` }
AccessDefinition defines which versions of an API a key has access to
type AccessSpec ¶
type AccessSpec struct { URL string `json:"url" msg:"url"` Methods []string `json:"methods" msg:"methods"` }
AccessSpecs define what URLS a user has access to an what methods are enabled
type Policy ¶
type Policy struct { MID bson.ObjectId `bson:"_id,omitempty" json:"_id"` ID string `bson:"id,omitempty" json:"id"` Name string `bson:"name" json:"name"` OrgID string `bson:"org_id" json:"org_id"` Rate float64 `bson:"rate" json:"rate"` Per float64 `bson:"per" json:"per"` QuotaMax int64 `bson:"quota_max" json:"quota_max"` QuotaRenewalRate int64 `bson:"quota_renewal_rate" json:"quota_renewal_rate"` ThrottleInterval float64 `bson:"throttle_interval" json:"throttle_interval"` ThrottleRetryLimit int `bson:"throttle_retry_limit" json:"throttle_retry_limit"` AccessRights map[string]AccessDefinition `bson:"access_rights" json:"access_rights"` HMACEnabled bool `bson:"hmac_enabled" json:"hmac_enabled"` EnableHTTPSignatureValidation bool `json:"enable_http_signature_validation" msg:"enable_http_signature_validation"` Active bool `bson:"active" json:"active"` IsInactive bool `bson:"is_inactive" json:"is_inactive"` Tags []string `bson:"tags" json:"tags"` KeyExpiresIn int64 `bson:"key_expires_in" json:"key_expires_in"` Partitions PolicyPartitions `bson:"partitions" json:"partitions"` LastUpdated string `bson:"last_updated" json:"last_updated"` }
type PolicyPartitions ¶
type SessionState ¶
type SessionState struct { LastCheck int64 `json:"last_check" msg:"last_check"` Allowance float64 `json:"allowance" msg:"allowance"` Rate float64 `json:"rate" msg:"rate"` Per float64 `json:"per" msg:"per"` ThrottleInterval float64 `json:"throttle_interval" msg:"throttle_interval"` ThrottleRetryLimit int `json:"throttle_retry_limit" msg:"throttle_retry_limit"` DateCreated time.Time `json:"date_created" msg:"date_created"` Expires int64 `json:"expires" msg:"expires"` QuotaMax int64 `json:"quota_max" msg:"quota_max"` QuotaRenews int64 `json:"quota_renews" msg:"quota_renews"` QuotaRemaining int64 `json:"quota_remaining" msg:"quota_remaining"` QuotaRenewalRate int64 `json:"quota_renewal_rate" msg:"quota_renewal_rate"` AccessRights map[string]AccessDefinition `json:"access_rights" msg:"access_rights"` OrgID string `json:"org_id" msg:"org_id"` OauthClientID string `json:"oauth_client_id" msg:"oauth_client_id"` OauthKeys map[string]string `json:"oauth_keys" msg:"oauth_keys"` Certificate string `json:"certificate" msg:"certificate"` BasicAuthData struct { Password string `json:"password" msg:"password"` Hash HashType `json:"hash_type" msg:"hash_type"` } `json:"basic_auth_data" msg:"basic_auth_data"` JWTData struct { Secret string `json:"secret" msg:"secret"` } `json:"jwt_data" msg:"jwt_data"` HMACEnabled bool `json:"hmac_enabled" msg:"hmac_enabled"` EnableHTTPSignatureValidation bool `json:"enable_http_signature_validation" msg:"enable_http_signature_validation"` HmacSecret string `json:"hmac_string" msg:"hmac_string"` RSACertificateId string `json:"rsa_certificate_id" msg:"rsa_certificate_id"` IsInactive bool `json:"is_inactive" msg:"is_inactive"` ApplyPolicyID string `json:"apply_policy_id" msg:"apply_policy_id"` ApplyPolicies []string `json:"apply_policies" msg:"apply_policies"` DataExpires int64 `json:"data_expires" msg:"data_expires"` Monitor struct { TriggerLimits []float64 `json:"trigger_limits" msg:"trigger_limits"` } `json:"monitor" msg:"monitor"` EnableDetailedRecording bool `json:"enable_detail_recording" msg:"enable_detail_recording"` MetaData map[string]interface{} `json:"meta_data" msg:"meta_data"` Tags []string `json:"tags" msg:"tags"` Alias string `json:"alias" msg:"alias"` LastUpdated string `json:"last_updated" msg:"last_updated"` IdExtractorDeadline int64 `json:"id_extractor_deadline" msg:"id_extractor_deadline"` SessionLifetime int64 `bson:"session_lifetime" json:"session_lifetime"` // contains filtered or unexported fields }
SessionState objects represent a current API session, mainly used for rate limiting. There's a data structure that's based on this and it's used for Protocol Buffer support, make sure to update "coprocess/proto/coprocess_session_state.proto" and generate the bindings using: cd coprocess/proto && ./update_bindings.sh
swagger:model
func (*SessionState) GetQuotaLimitByAPIID ¶
GetQuotaLimitByAPIID return quota max, quota remaining, quota renewal rate and quota renews for the given session
func (*SessionState) KeyHash ¶
func (s *SessionState) KeyHash() string
func (*SessionState) KeyHashEmpty ¶
func (s *SessionState) KeyHashEmpty() bool
func (*SessionState) Lifetime ¶
func (s *SessionState) Lifetime(fallback int64) int64
func (*SessionState) MD5Hash ¶
func (s *SessionState) MD5Hash() string
func (*SessionState) PoliciesEqualTo ¶
func (s *SessionState) PoliciesEqualTo(ids []string) bool
PoliciesEqualTo compares and returns true if passed slice if IDs contains only current ApplyPolicies
func (*SessionState) PolicyIDs ¶
func (s *SessionState) PolicyIDs() []string
PolicyIDs returns the IDs of all the policies applied to this session. For backwards compatibility reasons, this falls back to ApplyPolicyID if ApplyPolicies is empty.
func (*SessionState) SetKeyHash ¶
func (s *SessionState) SetKeyHash(hash string)
func (*SessionState) SetPolicies ¶
func (s *SessionState) SetPolicies(ids ...string)