httparty GET request: "В запросе отсутствует заголовок:` Authorization`

Я работаю над приложением Rails, которое отправляет GET-запрос в API Seamless.gov для получения полей формы. Когда я запускаю следующую команду curl, я получаю ответ JSON. Однако когда я делаю это с рельсов, я получаю ошибку:

{"error": true, "error_log": [{"error_code": «missing_header», «error_message»: «В запросе отсутствует заголовок: Authorization», «error_description»: «{\" Host \ ": \" nycopp. seamlessdocs.com \ ", \" Подключение \ ": \" закрыть \ ", \" X-

Вот созданный мной код:

require 'openssl'
require 'base64'

module SeamlessGov
  class Form
    include HTTParty
    attr_accessor :form_id
    base_uri "https://nycopp.seamlessdocs.com/api"

    def initialize(id)
      @api_key = ENV['SEAMLESS_GOV_API_KEY']
      @signature = generate_signature
      @form_id = id
      @timestamp = Time.now.to_i
    end

    def relative_uri
      "/form/#{@form_id}/elements"
    end

    def create_form
      self.class.get(relative_uri, generate_headers)
    end

    private

    def generate_signature
      OpenSSL::HMAC.hexdigest('sha256', ENV['SEAMLESS_GOV_SECRET'], "GET+#{relative_uri}+#{@timestamp}")
    end

    def generate_headers
      {
        "Authorization"  => "HMAC-SHA256 api_key='#{@api_key}' signature='#{@signature}'",
        "AuthDate" => "#{@timestamp}"
      }
    end
  end
end

В контроллере я передаю идентификатор формы следующим образом:

def display_form
    @form = SeamlessGov::Form.new(ENV['FORM_ID']).create_form
end

Заголовки переданы неправильно?


person Steven Aguilar    schedule 12.07.2018    source источник


Ответы (1)


Это решило проблему:

self.class.get(relative_uri, headers: generate_headers)

person Steven Aguilar    schedule 12.07.2018