Sha256: d643eac8ab837ea27e83683d98348339a93491dbc94b1f2abc9be453d04a0c30

Contents?: true

Size: 1.65 KB

Versions: 11

Compression:

Stored size: 1.65 KB

Contents

# -*- coding: utf-8 -*-
require 'net/http'
require 'net/https'
require 'json'
module Mushikago
  module Http
    # Mushikagoサービスに接続するクライアント
    class Client
      # @return [String] api_key
      attr_reader :api_key

      # @return [Signer] signer
      attr_reader :signer

      # @return [Boolean] use_ssl
      attr_reader :use_ssl

      # @param [Hash] options
      # @option options [String] :api_key(Configured value) APIキー
      # @option options [String] :secret_key(Configured value) 秘密鍵
      def initialize options={}
        @api_key = (options[:api_key] || Mushikago.config.api_key).to_s
        @signer = Mushikago::Auth::Signer.new((options[:secret_key] || Mushikago.config.secret_key).to_s)
        @use_ssl = options.has_key?(:use_ssl) ? options[:use_ssl] : Mushikago.config.use_ssl
      end

      # @param [Mushikago::Http::Request] request
      # @return [Mushikago::Http::Response] response
      def send_request request
        # add authorization
        request['api_key'] = api_key
        request['timestamp'] = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
        request.add_signature!(signer)

        # send request
        port = use_ssl ? 443 : 80
        port = request.port unless request.port.nil?
        session = Net::HTTP.new(request.host, port)
        session.use_ssl = use_ssl
        session.verify_mode = OpenSSL::SSL::VERIFY_NONE if use_ssl
        session.start do |http|
          http_request = request.to_http_request
          http_response = http.request(http_request)
          return Mushikago::Http::Response.new(JSON.parse(http_response.body))
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
mushikago-sdk-2.4.3 lib//mushikago/http/client.rb
mushikago-sdk-2.4.2 lib//mushikago/http/client.rb
mushikago-sdk-2.4.1 lib/mushikago/http/client.rb
mushikago-sdk-2.4 lib/mushikago/http/client.rb
mushikago-sdk-2.2 lib//mushikago/http/client.rb
mushikago-sdk-2.1.1 lib/mushikago/http/client.rb
mushikago-sdk-2.1.0 lib/mushikago/http/client.rb
mushikago-sdk-2.0.0 lib/mushikago/http/client.rb
mushikago-sdk-0.4.3 lib/mushikago/http/client.rb
mushikago-sdk-0.4.2 lib/mushikago/http/client.rb
mushikago-sdk-0.4.1 lib/mushikago/http/client.rb