detailed_log_subscriber.rb 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. warn_on_version_eol_warning_header(event)
  7. end
  8. def logger
  9. ActiveResource::Base.logger
  10. end
  11. private
  12. def log_request_response_details(event)
  13. data = event.payload[:data]
  14. headers = data.extract_options!
  15. request_body = data.first
  16. info "Request:\n#{request_body}" if request_body
  17. info "Headers: #{headers.inspect}"
  18. info "Response:\n#{event.payload[:response].body}"
  19. end
  20. def warn_on_deprecated_header(event)
  21. payload = event.payload
  22. payload[:response].each do |header_name, header_value|
  23. case header_name.downcase
  24. when 'x-shopify-api-deprecated-reason'
  25. warning_message = <<-MSG
  26. [DEPRECATED] ShopifyAPI made a call to #{payload[:method].upcase} #{payload[:path]}, and this call made
  27. use of a deprecated endpoint, behaviour, or parameter. See #{header_value} for more details.
  28. MSG
  29. warn warning_message
  30. end
  31. end
  32. end
  33. def warn_on_version_eol_warning_header(event)
  34. payload = event.payload
  35. payload[:response].each do |header_name, header_value|
  36. case header_name.downcase
  37. when 'x-shopify-api-version-warning'
  38. warning_message = <<-MSG
  39. [Version EOL Warning] ShopifyAPI made a call to #{payload[:method].upcase} #{payload[:path]}, and this call made
  40. use of an API version that is expired or will expire within 30 days. See #{header_value} for more details.
  41. MSG
  42. warn warning_message
  43. end
  44. end
  45. end
  46. end
  47. end
  48. ActiveResource::DetailedLogSubscriber.attach_to :active_resource_detailed