Module: Stream::SignedRequest

Included in:
Client
Defined in:
lib/stream/signedrequest.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



12
13
14
# File 'lib/stream/signedrequest.rb', line 12

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

Instance Method Details

#make_signed_request(method, relative_url, params = {}, data = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/stream/signedrequest.rb', line 16

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