Вы можете изменить ключи на строки, но тогда вы обнаружите, что Net :: HTTP меняет ключи на: Api_signature
и Api_request_time
. Для получения дополнительной информации см. Здесь: https://github.com/lostisland/faraday/issues/747#issuecomment-439864181
Один из способов обойти это, хотя и немного странно, - создать класс String, который сам по себе не должен быть в нижнем регистре, например:
class UpperCaseString < String
def downcase
self
end
end
Затем определите ваши заголовки следующим образом:
def headers
timestamp = Time.now.to_i.to_s
return {
UpperCaseString.new('API_SIGNATURE') => Digest::MD5.hexdigest(@api_key + timestamp),
UpperCaseString.new('API_REQUEST_TIME') => timestamp
}
end
Возможно, лучше использовать другой адаптер, например, patron. Добавьте его в свой Gemfile, затем настройте запрос на его использование:
def request
Faraday.new(@@BASE_API_URL, headers: headers) do |faraday|
faraday.adapter :patron
end
end
В этом случае вам все равно нужно убедиться, что ваши заголовки - это строки, а не символы:
def headers
timestamp = Time.now.to_i.to_s
{
'API_SIGNATURE' => Digest::MD5.hexdigest(@api_key + timestamp),
'API_REQUEST_TIME' => timestamp
}
end