connection.rb 827 B

123456789101112131415161718192021222324252627282930313233
  1. module ShopifyAPI
  2. class Connection < ActiveResource::Connection
  3. attr_reader :response
  4. module ResponseCapture
  5. def handle_response(response)
  6. @response = super
  7. end
  8. end
  9. include ResponseCapture
  10. module RequestNotification
  11. def request(method, path, *arguments)
  12. super.tap do |response|
  13. notify_about_request(response, arguments)
  14. end
  15. rescue => e
  16. notify_about_request(e.response, arguments) if e.respond_to?(:response)
  17. raise
  18. end
  19. def notify_about_request(response, arguments)
  20. ActiveSupport::Notifications.instrument("request.active_resource_detailed") do |payload|
  21. payload[:response] = response
  22. payload[:data] = arguments
  23. end
  24. end
  25. end
  26. include RequestNotification
  27. end
  28. end