Sha256: ed4407c00896061e5d3752b64df899bd900dcd4eff6509c7b7926e0b6a627182

Contents?: true

Size: 1.79 KB

Versions: 7

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true
module ActiveResource
  class DetailedLogSubscriber < ActiveSupport::LogSubscriber
    VERSION_EOL_WARNING_HEADER = 'x-shopify-api-version-warning'
    VERSION_DEPRECATION_HEADER = 'x-shopify-api-deprecated-reason'
    SHOPIFY_ACCESS_TOKEN = 'X-Shopify-Access-Token'
    FILTERED = '[FILTERED]'

    def request(event)
      log_request_response_details(event)
      warn_on_deprecated_header_or_version_eol_header(event)
    end

    def logger
      ActiveResource::Base.logger
    end

    private

    def log_request_response_details(event)
      data = event.payload[:data]
      headers = data.extract_options!
      headers[SHOPIFY_ACCESS_TOKEN] = FILTERED
      request_body = data.first

      info("Request:\n#{request_body}") if request_body
      info("Headers: #{headers.inspect}")
      info("Response:\n#{event.payload[:response].body}")
    end

    def warn_on_deprecated_header_or_version_eol_header(event)
      payload = event.payload

      payload[:response].each do |header_name, header_value|
        case header_name.downcase
        when VERSION_DEPRECATION_HEADER
          warning_message = <<-MSG
          [DEPRECATED] ShopifyAPI made a call to #{payload[:method].upcase} #{payload[:path]}, and this call made
          use of a deprecated endpoint, behaviour, or parameter. See #{header_value} for more details.
          MSG

          warn(warning_message)

        when VERSION_EOL_WARNING_HEADER
          warning_message = <<-MSG
          [API Version Warning] ShopifyAPI made a call to #{payload[:method].upcase} #{payload[:path]}, and this call used
          an API version that is unsupported or will become unsupported within 30 days. See #{header_value} for more details.
          MSG

          warn(warning_message)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
shopify_api-9.5.2 lib/active_resource/detailed_log_subscriber.rb
ruby_shopify_api-1.2.0 lib/active_resource/detailed_log_subscriber.rb
ruby_shopify_api-1.1.0 lib/active_resource/detailed_log_subscriber.rb
ruby_shopify_api-1.0.0 lib/active_resource/detailed_log_subscriber.rb
shopify_api-9.5.1 lib/active_resource/detailed_log_subscriber.rb
shopify_api-9.5 lib/active_resource/detailed_log_subscriber.rb
shopify_api-9.4.1 lib/active_resource/detailed_log_subscriber.rb