Recuperando e usando chaves de API do Heroku no RubyMotion

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:

  1. Você está usando a biblioteca BubbleWrap HTTP.
  2. 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!