Sha256: f048de61c5cc56674979efbcbdf962dd1d2d3075c6d6c8ed5281998efc0187df
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
require 'faraday' require 'faraday_middleware' module RakutenWebService class WrongParameter < StandardError; end class NotFound < StandardError; end class TooManyRequests < StandardError; end class SystemError < StandardError; end class ServiceUnavailable < StandardError; end class Client attr_reader :url, :path def initialize(endpoint) url = URI.parse(endpoint) @url = "#{url.scheme}://#{url.host}" @path = url.path end def get(query) query = RakutenWebService.configuration.generate_parameters.merge(query) query = convert_snake_key_to_camel_key(query) response = connection.get(path, query) case response.status when 200 return response when 400 raise WrongParameter, response.body['error_description'] when 404 raise NotFound, response.body['error_description'] when 429 raise TooManyRequests, response.body['error_description'] when 500 raise SystemError, response.body['error_description'] when 503 raise ServiceUnavailable, response.body['error_description'] end end private def connection return @connection if @connection @connection = Faraday.new(:url => url) do |conn| conn.request :url_encoded conn.response :json conn.adapter Faraday.default_adapter conn.headers['User-Agent'] = "RakutenWebService SDK for Ruby-#{RWS::VERSION}" end end def convert_snake_key_to_camel_key(params) params.inject({}) do |h, (k, v)| k = k.to_s.gsub(/([a-z]{1})_([a-z]{1})/) { "#{$1}#{$2.capitalize}" } h[k] = v h end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rakuten_web_service-0.6.0 | lib/rakuten_web_service/client.rb |