Sha256: 194f6001f96079498bb2d2f29c98226fb3498b0c0906c03f78e70ea3a001269d

Contents?: true

Size: 1.16 KB

Versions: 11

Compression:

Stored size: 1.16 KB

Contents

require 'http_signatures'
require 'net/http'
require 'time'

module Stream
  module SignedRequest
    module ClassMethods
      def supports_signed_requests;
      end
    end

    def self.included(klass)
      klass.extend ClassMethods
    end

    def make_signed_request(method, relative_url, params = {}, data = {})
      query_params = make_query_params(params)
      context = HttpSignatures::Context.new(
          keys: {@api_key => @api_secret},
          algorithm: 'hmac-sha256',
          headers: %w(date)
      )
      method_map = {
          :get => Net::HTTP::Get,
          :delete => Net::HTTP::Delete,
          :put => Net::HTTP::Put,
          :post => Net::HTTP::Post
      }
      request_date = Time.now.rfc822
      message = method_map[method].new(
          "#{get_http_client.base_path}#{relative_url}?#{URI.encode_www_form(query_params)}",
          'date' => request_date
      )
      context.signer.sign(message)
      headers = {
          Authorization: message['Signature'],
          Date: request_date,
          'X-Api-Key' => api_key
      }
      get_http_client.make_http_request(method, relative_url, query_params, data, headers)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
stream-ruby-2.11.0 lib/stream/signedrequest.rb
stream-ruby-2.10.0 lib/stream/signedrequest.rb
stream-ruby-2.9.3 lib/stream/signedrequest.rb
stream-ruby-2.9.2 lib/stream/signedrequest.rb
stream-ruby-2.9.1 lib/stream/signedrequest.rb
stream-ruby-2.9.0 lib/stream/signedrequest.rb
stream-ruby-2.8.0 lib/stream/signedrequest.rb
stream-ruby-2.7.1 lib/stream/signedrequest.rb
stream-ruby-2.7.0 lib/stream/signedrequest.rb
stream-ruby-2.6.1 lib/stream/signedrequest.rb
stream-ruby-2.6.0 lib/stream/signedrequest.rb