Sha256: e8005b523a3511c417635338636b6f70354f35af55a8aa79c08a847cb4dae557

Contents?: true

Size: 1.27 KB

Versions: 5

Compression:

Stored size: 1.27 KB

Contents

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

      # @return [Signer] signer
      attr_reader :signer

      # @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)
      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
        Net::HTTP.start(request.host, request.port) 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

5 entries across 5 versions & 1 rubygems

Version Path
mushikago-sdk-0.3.6 lib/mushikago/http/client.rb
mushikago-sdk-0.3.5 lib/mushikago/http/client.rb
mushikago-sdk-0.3.4 lib/mushikago/http/client.rb
mushikago-sdk-0.3.2 lib/mushikago/http/client.rb
mushikago-sdk-0.3.1 lib/mushikago/http/client.rb