Я хочу использовать API и получить информацию.
Мой пример - Coinbase, но я думаю, что это также применимо шире и поможет другим.
У меня есть несколько частей информации.
Я знаю, что мне нужно подписать сообщение.
Инструкции для этого кажутся относительно ясными, хотя поле «пароль» не отображается (для ввода) на веб-сайте. Я предполагаю «пока».
Итак, как я могу выдать 'POST' с этой подписью ...
предположительно используя CoinbaseExchange.new.signature
для поля подписи
Как мне отформатировать POST, чтобы сделать это в Ruby, то есть использовать эту подпись?
Резюме с сайта:
Создание запроса Все запросы REST должны содержать следующее
заголовки:
CB-ACCESS-KEY The api key as a string.
CB-ACCESS-SIGN The base64-encoded signature (see Signing a Message).
CB-ACCESS-TIMESTAMP A timestamp for your request.
CB-ACCESS-PASSPHRASE The passphrase you specified when creating the API key.
All request bodies should have content type application/json and be valid JSON.
Подписание сообщения
require 'base64'
require 'openssl'
require 'json'
class CoinbaseExchange
def initialize(key, secret, passphrase)
@key = key
@secret = secret
@passphrase = passphrase
end
def signature(request_path='', body='', timestamp=nil, method='GET')
body = body.to_json if body.is_a?(Hash)
timestamp = Time.now.to_i if !timestamp
what = "#{timestamp}#{method}#{request_path}#{body}";
# create a sha256 hmac with the secret
secret = Base64.decode64(@secret)
hash = OpenSSL::HMAC.digest('sha256', secret, what)
Base64.strict_encode64(hash)
end
end