Module: GeniusReferrals
- Defined in:
- lib/genius_referrals/client.rb,
lib/genius_referrals/errors.rb,
lib/genius_referrals/version.rb,
lib/genius_referrals/resource.rb,
lib/genius_referrals/response.rb,
lib/genius_referrals/transport.rb,
lib/genius_referrals/resources/root.rb,
lib/genius_referrals/resources/tags.rb,
lib/genius_referrals/resources/bonuses.rb,
lib/genius_referrals/resources/reports.rb,
lib/genius_referrals/resources/accounts.rb,
lib/genius_referrals/resources/products.rb,
lib/genius_referrals/resources/vouchers.rb,
lib/genius_referrals/resources/advocates.rb,
lib/genius_referrals/resources/campaigns.rb,
lib/genius_referrals/resources/referrals.rb,
lib/genius_referrals/resources/utilities.rb,
lib/genius_referrals/resources/authentications.rb,
lib/genius_referrals/resources/widgets_packages.rb,
lib/genius_referrals/resources/redemption_requests.rb
Defined Under Namespace
Classes: APIError, APIResponse, AccountsResource, AdvocatesResource, AuthenticationError, AuthenticationsResource, AuthorizationError, BonusesResource, CampaignsResource, Client, ConflictError, Error, GeniusReferralsClient, NetHTTPTransport, NotFoundError, Page, ProductsResource, RateLimitError, RedemptionRequestsResource, ReferralsResource, ReportsResource, Resource, RootResource, TagsResource, TransportError, TransportResponse, UtilitiesResource, ValidationError, VouchersResource, WidgetsPackagesResource
Constant Summary collapse
- DEFAULT_BASE_URL =
'https://api.geniusreferrals.com'- RETRYABLE_STATUS_CODES =
[408, 429, 500, 502, 503, 504].freeze
- SENSITIVE_HEADER_NAMES =
['authorization', 'x-auth-token'].freeze
- SENSITIVE_FIELD_FRAGMENTS =
['api_key', 'apikey', 'authorization', 'password', 'secret', 'token'].freeze
- ERROR_BY_STATUS =
{ 400 => ValidationError, 401 => AuthenticationError, 403 => AuthorizationError, 404 => NotFoundError, 409 => ConflictError, 422 => ValidationError, 429 => RateLimitError }.freeze
- VERSION =
'0.1.0'
Class Method Summary collapse
-
.redact(value, secrets: []) ⇒ Object
Returns a redacted deep copy for objects that may contain credentials.
- .redact_string(value, secrets) ⇒ Object
- .sensitive_key?(key) ⇒ Boolean
Class Method Details
.redact(value, secrets: []) ⇒ Object
Returns a redacted deep copy for objects that may contain credentials.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/genius_referrals/errors.rb', line 6 def self.redact(value, secrets: []) secret_values = Array(secrets).compact.map(&:to_s).reject(&:empty?) case value when Hash value.each_with_object({}) do |(key, item), redacted| lowered = key.to_s.downcase redacted[key] = if sensitive_key?(lowered) '[REDACTED]' else redact(item, secrets: secret_values) end end when Array value.map { |item| redact(item, secrets: secret_values) } when String redact_string(value, secret_values) else value end end |
.redact_string(value, secrets) ⇒ Object
32 33 34 35 36 |
# File 'lib/genius_referrals/errors.rb', line 32 def self.redact_string(value, secrets) secrets.reduce(value.dup) do |text, secret| text.gsub(secret, '[REDACTED]') end end |
.sensitive_key?(key) ⇒ Boolean
27 28 29 30 |
# File 'lib/genius_referrals/errors.rb', line 27 def self.sensitive_key?(key) SENSITIVE_HEADER_NAMES.include?(key) || SENSITIVE_FIELD_FRAGMENTS.any? { |fragment| key.include?(fragment) } end |