lib/supergood/vendors/net-http.rb in supergood-0.1.1 vs lib/supergood/vendors/net-http.rb in supergood-0.1.2
- old
+ new
@@ -3,44 +3,69 @@
require 'uri'
module Supergood
module Vendor
module NetHTTP
- block = lambda do |x|
- alias original_request_method request
- def request(original_request_payload, body = nil, &block)
- http = self;
- url = Supergood::Utils.request_url(http, original_request_payload)
- uri = URI.parse(url)
- request = {
- headers: Supergood::Utils.get_header(original_request_payload),
- method: original_request_payload.method,
- body: original_request_payload.body,
- url: url,
- path: original_request_payload.path,
- search: uri.query,
- domain: uri.host,
- }
- Supergood.intercept(request) do
- original_response = original_request_method(original_request_payload, body, &block)
- {
- headers: Supergood::Utils.get_header(original_response),
- status: original_response.code,
- statusText: original_response.message,
- body: original_response.body,
- original_response: original_response
- }
+ def self.patch
+ if !self.existing_patch?
+ block = lambda do |x|
+ alias original_request_method request
+ def request(original_request_payload, body = nil, &block)
+ http = self;
+ url = Supergood::Utils.request_url(http, original_request_payload)
+ uri = URI.parse(url)
+ request = {
+ headers: Supergood::Utils.get_header(original_request_payload),
+ method: original_request_payload.method,
+ body: original_request_payload.body,
+ url: url,
+ path: original_request_payload.path,
+ search: uri.query,
+ domain: uri.host,
+ }
+ Supergood.intercept(request) do
+ original_response = original_request_method(original_request_payload, body, &block)
+ {
+ headers: Supergood::Utils.get_header(original_response),
+ status: original_response.code,
+ statusText: original_response.message,
+ body: original_response.body,
+ original_response: original_response
+ }
+ end
+ end
end
+
+ if defined?(Net::HTTP)
+ Net::HTTP.class_eval(&block)
+ elsif defined?(::WebMock)
+ WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP").class_eval(&block)
+ end
+
end
end
- if defined?(Net::HTTP)
- Net::HTTP.class_eval(&block)
+ def self.unpatch
+ if self.existing_patch?
+ block = lambda do |x|
+ alias request original_request_method
+ end
+
+ if defined?(Net::HTTP)
+ Net::HTTP.class_eval(&block)
+ Net::HTTP.undef_method :original_request_method
+ elsif defined?(::WebMock)
+ WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP").class_eval(&block)
+ WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP").undef_method :original_request_method
+ end
+ end
end
- if defined?(::WebMock)
- WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP").class_eval(&block)
+ def self.existing_patch?
+ (defined?(Net::HTTP) && Net::HTTP.method_defined?(:original_request_method)) ||
+ (defined?(::Webmock) && WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP").method_defined?(:original_request_method))
end
+
end
end
end