Tenho brincado com a API do Heroku e tive alguns problemas ao fazer chamadas autenticadas por meio do RubyMotion.
Retirei e simplifiquei dois métodos que estou usando para recuperar a chave de API de um usuário e, em seguida, usá-la para listar os aplicativos de sua propriedade.
Eu faço duas suposições ao longo do caminho:
- Você está usando a biblioteca BubbleWrap HTTP.
- Você prefere JSON em vez de XML.
O código
Veja como recuperar a chave API de um usuário fornecendo seu nome de usuário e senha:
def retrieve_api_key(username, password)
opts = {
headers: {
Accept: 'application/json'
},
payload: {
username: username,
password: password
}
}
BW::HTTP.post("https://api.heroku.com/login", opts) do |res|
if res.ok?
json = BW::JSON.parse(res.body.to_s)
puts json['api_key']
else
App.alert('Error')
end
end
end
Agora você pode usar a chave API fornecida para fazer chamadas autenticadas para o Heroku em nome do usuário.
def retrieve_apps(api_key)
encoded_auth = ":#{[api_key]}".pack('m0')
opts = {
headers: {
Accept: "application/json",
Authorization: "Basic #{encoded_auth}"
}
}
BW::HTTP.get("https://api.heroku.com/apps", opts) do |res|
puts res.body.to_s
end
end
Espero que isso ajude!