Я работаю над приложением 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
Заголовки переданы неправильно?