Sha256: 98463776696886ac1823e643223fd5bae292dcf57467c47770de6fea9d68c8af

Contents?: true

Size: 1.23 KB

Versions: 5

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

require 'uri'
require 'net/http'
require 'cgi'
require 'json'
require 'rakuten_web_service/response'
require 'rakuten_web_service/error'

module RakutenWebService
  class Client
    attr_reader :url

    def initialize(resource_class)
      @resource_class = resource_class
      @url = URI.parse(@resource_class.endpoint)
    end

    def get(params)
      params = RakutenWebService.configuration.generate_parameters(params)
      response = request(url.path, params)
      body = JSON.parse(response.body)

      if Net::HTTPSuccess === response
        return RakutenWebService::Response.new(@resource_class, body)
      end
      raise RakutenWebService::Error.repository[response.code.to_i], body['error_description']
    end

    private

    def request(path, params)
      http = Net::HTTP.new(@url.host, @url.port)
      http.use_ssl = true
      if RakutenWebService.configuration.debug_mode?
        http.set_debug_output($stderr)
      end
      path = "#{path}?#{params.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')}"
      header = {
        'User-Agent' => "RakutenWebService SDK for Ruby v#{RWS::VERSION}(ruby-#{RUBY_VERSION} [#{RUBY_PLATFORM}])"
      }
      http.get(path, header)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rakuten_web_service-1.12.0 lib/rakuten_web_service/client.rb
rakuten_web_service-1.11.0 lib/rakuten_web_service/client.rb
rakuten_web_service-1.10.0 lib/rakuten_web_service/client.rb
rakuten_web_service-1.9.2 lib/rakuten_web_service/client.rb
rakuten_web_service-1.9.1 lib/rakuten_web_service/client.rb