From 9020f2a2074c659a46924555f731327c241aec4f Mon Sep 17 00:00:00 2001 From: Tatsuya Sato Date: Thu, 8 Sep 2016 13:14:32 +0900 Subject: [PATCH 1/4] Wraps generating new connection and fetching a HTTP response. --- lib/rakuten_web_service/client.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/rakuten_web_service/client.rb b/lib/rakuten_web_service/client.rb index 26989f4..28fb87b 100644 --- a/lib/rakuten_web_service/client.rb +++ b/lib/rakuten_web_service/client.rb @@ -23,7 +23,7 @@ def initialize(resource_class) def get(params) params = RakutenWebService.configuration.generate_parameters(params) - response = connection.get(path, params) + response = request(path, params) case response.status when 200 return RakutenWebService::Response.new(@resource_class, response.body) @@ -41,6 +41,10 @@ def get(params) end private + def request(path, params) + connection.get(path, params) + end + def connection return @connection if @connection @connection = Faraday.new(:url => url) do |conn| From eeb00d370b58a8abaa9ba5ee61f3b718c5fa4f4c Mon Sep 17 00:00:00 2001 From: Tatsuya Sato Date: Fri, 9 Sep 2016 17:41:47 +0900 Subject: [PATCH 2/4] Replace faraday with Net::HTTP --- lib/rakuten_web_service/client.rb | 31 ++++++++++++++----------- spec/rakuten_web_service/client_spec.rb | 2 +- spec/spec_helper.rb | 1 + 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/rakuten_web_service/client.rb b/lib/rakuten_web_service/client.rb index 28fb87b..37cbb5c 100644 --- a/lib/rakuten_web_service/client.rb +++ b/lib/rakuten_web_service/client.rb @@ -12,37 +12,42 @@ class SystemError < StandardError; end class ServiceUnavailable < StandardError; end class Client - attr_reader :url, :path + attr_reader :url def initialize(resource_class) @resource_class = resource_class - url = URI.parse(@resource_class.endpoint) - @url = "#{url.scheme}://#{url.host}" - @path = url.path + @url = URI.parse(@resource_class.endpoint) end def get(params) params = RakutenWebService.configuration.generate_parameters(params) - response = request(path, params) - case response.status + response = request(url.path, params) + body = JSON.parse(response.body) + case response.code.to_i when 200 - return RakutenWebService::Response.new(@resource_class, response.body) + return RakutenWebService::Response.new(@resource_class, body) when 400 - raise WrongParameter, response.body['error_description'] + raise WrongParameter, body['error_description'] when 404 - raise NotFound, response.body['error_description'] + raise NotFound, body['error_description'] when 429 - raise TooManyRequests, response.body['error_description'] + raise TooManyRequests, body['error_description'] when 500 - raise SystemError, response.body['error_description'] + raise SystemError, body['error_description'] when 503 - raise ServiceUnavailable, response.body['error_description'] + raise ServiceUnavailable, body['error_description'] end end private def request(path, params) - connection.get(path, params) + http = Net::HTTP.new(@url.host, @url.port) + http.use_ssl = true + path = "#{path}?#{params.map { |k, v| "#{k}=#{URI.encode(v.to_s)}" }.join('&')}" + header = { + 'User-Agent' => "RakutenWebService SDK for Ruby v#{RWS::VERSION}(ruby-#{RUBY_VERSION} [#{RUBY_PLATFORM}])" + } + http.get(path, header) end def connection diff --git a/spec/rakuten_web_service/client_spec.rb b/spec/rakuten_web_service/client_spec.rb index e459bd1..8eded47 100644 --- a/spec/rakuten_web_service/client_spec.rb +++ b/spec/rakuten_web_service/client_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe RakutenWebService::Client do - let(:endpoint) { 'http://api.example.com/resources' } + let(:endpoint) { 'https://api.example.com/resources' } let(:resource_class) do double('resource_class', endpoint: endpoint) end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 8137fa2..d3a7219 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -9,6 +9,7 @@ require File.expand_path(File.join(__dir__, '..', 'lib', 'rakuten_web_service')) require 'webmock/rspec' +require 'tapp' Dir[File.expand_path(File.join(__dir__, "support/**/*.rb"))].each { |f| require f } From eb3fe60aadde9370ebf83a2a2d3bf089eb7268f1 Mon Sep 17 00:00:00 2001 From: Tatsuya Sato Date: Fri, 9 Sep 2016 17:45:16 +0900 Subject: [PATCH 3/4] Remove the dependency on faraday --- lib/rakuten_web_service/client.rb | 2 -- rakuten_web_service.gemspec | 3 --- 2 files changed, 5 deletions(-) diff --git a/lib/rakuten_web_service/client.rb b/lib/rakuten_web_service/client.rb index 37cbb5c..e350f9b 100644 --- a/lib/rakuten_web_service/client.rb +++ b/lib/rakuten_web_service/client.rb @@ -1,6 +1,4 @@ require 'uri' -require 'faraday' -require 'faraday_middleware' require 'rakuten_web_service/response' diff --git a/rakuten_web_service.gemspec b/rakuten_web_service.gemspec index db3858f..851b554 100644 --- a/rakuten_web_service.gemspec +++ b/rakuten_web_service.gemspec @@ -19,9 +19,6 @@ Gem::Specification.new do |spec| spec.require_paths = ["lib"] spec.required_ruby_version = '>= 2.1.0' - spec.add_dependency 'faraday', '~> 0.9.0' - spec.add_dependency 'faraday_middleware' - spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake" spec.add_development_dependency "webmock", "~> 1.20.4" From 0f3f64a9e355a564d0233b7ce2eb2bb1f22e8020 Mon Sep 17 00:00:00 2001 From: Tatsuya Sato Date: Fri, 9 Sep 2016 17:49:44 +0900 Subject: [PATCH 4/4] Remove the unused method --- lib/rakuten_web_service/client.rb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/lib/rakuten_web_service/client.rb b/lib/rakuten_web_service/client.rb index e350f9b..ff3ef1a 100644 --- a/lib/rakuten_web_service/client.rb +++ b/lib/rakuten_web_service/client.rb @@ -47,16 +47,5 @@ def request(path, params) } http.get(path, header) end - - def connection - return @connection if @connection - @connection = Faraday.new(:url => url) do |conn| - conn.request :url_encoded - conn.response :json - conn.response :logger if RakutenWebService.configuration.debug - conn.adapter Faraday.default_adapter - conn.headers['User-Agent'] = "RakutenWebService SDK for Ruby v#{RWS::VERSION}(ruby-#{RUBY_VERSION} [#{RUBY_PLATFORM}])" - end - end end end