Documentation
¶
Index ¶
- type APILimit
- type AccessDefinition
- type AccessSpec
- type BasicAuthData
- type HashType
- type JWTData
- type Monitor
- type Policy
- type PolicyPartitions
- type SessionState
- func (s *SessionState) GetAccessRightByAPIID(key string) (AccessRight AccessDefinition, found bool)
- func (s *SessionState) GetAccessRights() (AccessRights map[string]AccessDefinition)
- func (s *SessionState) GetKeyHash() string
- func (s *SessionState) GetMetaData() (metaData map[string]interface{})
- func (s *SessionState) GetMetaDataByKey(key string) (metaData interface{}, found bool)
- func (s *SessionState) GetPolicyIDs() []string
- func (s *SessionState) GetQuotaLimitByAPIID(apiID string) (int64, int64, int64, int64)
- 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) RemoveMetaData(key string)
- func (s *SessionState) SetAccessRight(key string, accessRight AccessDefinition)
- func (s *SessionState) SetAccessRights(accessRights map[string]AccessDefinition)
- func (s *SessionState) SetKeyHash(hash string)
- func (s *SessionState) SetMetaData(metadata map[string]interface{})
- func (s *SessionState) SetMetaDataKey(key string, metadata interface{})
- 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 BasicAuthData ¶
type Monitor ¶
type Monitor struct {
TriggerLimits []float64 `json:"trigger_limits" msg:"trigger_limits"`
}
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"`
MetaData map[string]interface{} `bson:"meta_data" json:"meta_data"`
}
type PolicyPartitions ¶
type SessionState ¶
type SessionState struct {
Mutex *sync.RWMutex
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) GetAccessRightByAPIID ¶
func (s *SessionState) GetAccessRightByAPIID(key string) (AccessRight AccessDefinition, found bool)
func (*SessionState) GetAccessRights ¶
func (s *SessionState) GetAccessRights() (AccessRights map[string]AccessDefinition)
func (*SessionState) GetKeyHash ¶
func (s *SessionState) GetKeyHash() string
func (*SessionState) GetMetaData ¶
func (s *SessionState) GetMetaData() (metaData map[string]interface{})
func (*SessionState) GetMetaDataByKey ¶
func (s *SessionState) GetMetaDataByKey(key string) (metaData interface{}, found bool)
func (*SessionState) GetPolicyIDs ¶
func (s *SessionState) GetPolicyIDs() []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) GetQuotaLimitByAPIID ¶
GetQuotaLimitByAPIID return quota max, quota remaining, quota renewal rate and quota renews for the given session
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) RemoveMetaData ¶
func (s *SessionState) RemoveMetaData(key string)
func (*SessionState) SetAccessRight ¶
func (s *SessionState) SetAccessRight(key string, accessRight AccessDefinition)
func (*SessionState) SetAccessRights ¶
func (s *SessionState) SetAccessRights(accessRights map[string]AccessDefinition)
func (*SessionState) SetKeyHash ¶
func (s *SessionState) SetKeyHash(hash string)
func (*SessionState) SetMetaData ¶
func (s *SessionState) SetMetaData(metadata map[string]interface{})
func (*SessionState) SetMetaDataKey ¶
func (s *SessionState) SetMetaDataKey(key string, metadata interface{})
func (*SessionState) SetPolicies ¶
func (s *SessionState) SetPolicies(ids ...string)