diff --git a/lib/active_resource/connection_ext.rb b/lib/active_resource/connection_ext.rb index 67253af5b..22a8b8ba3 100644 --- a/lib/active_resource/connection_ext.rb +++ b/lib/active_resource/connection_ext.rb @@ -1,32 +1,10 @@ +require 'shopify_api/connection' + module ActiveResource class Connection attr_reader :response - module ResponseCapture - def handle_response(response) - @response = super - end - end - - module RequestNotification - def request(method, path, *arguments) - super.tap do |response| - notify_about_request(response, arguments) - end - rescue => e - notify_about_request(e.response, arguments) if e.respond_to?(:response) - raise - end - - def notify_about_request(response, arguments) - ActiveSupport::Notifications.instrument("request.active_resource_detailed") do |payload| - payload[:response] = response - payload[:data] = arguments - end - end - end - - prepend ResponseCapture - prepend RequestNotification + prepend ShopifyAPI::Connection::ResponseCapture + prepend ShopifyAPI::Connection::RequestNotification end end diff --git a/lib/shopify_api.rb b/lib/shopify_api.rb index 90da6bdcc..801c5b1ac 100644 --- a/lib/shopify_api.rb +++ b/lib/shopify_api.rb @@ -4,7 +4,6 @@ require 'active_support/core_ext/class/attribute_accessors' require 'digest/md5' require 'base64' -require 'active_resource/connection_ext' require 'active_resource/detailed_log_subscriber' require 'shopify_api/limits' require 'shopify_api/json_format' @@ -22,3 +21,10 @@ module ShopifyAPI require 'shopify_api/countable' require 'shopify_api/resources' require 'shopify_api/session' +require 'shopify_api/connection' + +if ShopifyAPI::Base.respond_to?(:connection_class) + ShopifyAPI::Base.connection_class = ShopifyAPI::Connection +else + require 'active_resource/connection_ext' +end diff --git a/lib/shopify_api/connection.rb b/lib/shopify_api/connection.rb new file mode 100644 index 000000000..764ae886d --- /dev/null +++ b/lib/shopify_api/connection.rb @@ -0,0 +1,33 @@ +module ShopifyAPI + class Connection < ActiveResource::Connection + attr_reader :response + + module ResponseCapture + def handle_response(response) + @response = super + end + end + + include ResponseCapture + + module RequestNotification + def request(method, path, *arguments) + super.tap do |response| + notify_about_request(response, arguments) + end + rescue => e + notify_about_request(e.response, arguments) if e.respond_to?(:response) + raise + end + + def notify_about_request(response, arguments) + ActiveSupport::Notifications.instrument("request.active_resource_detailed") do |payload| + payload[:response] = response + payload[:data] = arguments + end + end + end + + include RequestNotification + end +end