detailed_log_subscriber.rb 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. module ActiveResource
  2. class DetailedLogSubscriber < ActiveSupport::LogSubscriber
  3. def request(event)
  4. log_request_response_details(event)
  5. warn_on_deprecated_header(event)
  6. end
  7. def logger
  8. ActiveResource::Base.logger
  9. end
  10. private
  11. def log_request_response_details(event)
  12. data = event.payload[:data]
  13. headers = data.extract_options!
  14. request_body = data.first
  15. info "Request:\n#{request_body}" if request_body
  16. info "Headers: #{headers.inspect}"
  17. info "Response:\n#{event.payload[:response].body}"
  18. end
  19. def warn_on_deprecated_header(event)
  20. payload = event.payload
  21. payload[:response].each do |header_name, header_value|
  22. case header_name.downcase
  23. when 'x-shopify-api-deprecated-reason'
  24. warning_message = <<-MSG
  25. [DEPRECATED] ShopifyAPI made a call to #{payload[:method].upcase} #{payload[:path]}, and this call made
  26. use of a deprecated endpoint, behaviour, or parameter. See #{header_value} for more details.
  27. MSG
  28. warn warning_message
  29. end
  30. end
  31. end
  32. end
  33. end
  34. ActiveResource::DetailedLogSubscriber.attach_to :active_resource_detailed