Sto cercando di estrarre un'immagine da imgur utilizzando l'API fornita con Ruby 2.0.0 e Rails 4.0.0. Ho provato a costruire una richiesta http in vari modi, come elencato nei documenti Ruby 2.0.0 senza alcun risultato.Ottieni immagini usando l'API imgur in Ruby (su Rails)
Ecco il codice:
require 'net/http'
require 'net/https'
def imgur
headers = {
"Authorization" => "Client-ID " + my_client_id
}
path = "/3/gallery/image/#{img_id}.json"
uri = URI("https://api.imgur.com"+path)
request, data = Net::HTTP::Get.new(path, headers)
response = Net::HTTP.new(uri.host, uri.port).start {|http| http.request(request) }
puts "response:"
p response
puts response
end
dove img_id
e my_client_id
sono solo hard-coded con i valori appropriati. (Il metodo imgur
viene chiamato all'interno di un'azione del controller corrispondente all'URL di root del mio sito)
Questa è la risposta che ottengo quando corro rails s
(quindi sto usando localhost: 3000) e poi visita l'url di root, localhost: 3000 (che chiamerà l'azione che chiama imgur
):
#<Net::HTTPBadRequest 400 Bad Request readbody=true>
#<Net::HTTPBadRequest:0x007f8a6ce0da78>
UPDATE:
Inoltre, questo ha funzionato:
curl --header "Authorization: Client-ID my_client_id" https://api.imgur.com/3/gallery/image/7x98w9T.json
(di nuovo, my_client_id
è hardcoded con il mio ID cliente effettivo). Ora per farlo funzionare su Ruby ...
Qualcuno conosce il modo giusto per farlo?
se si utilizza curl o wget con quei parametri funziona? – rogerdpack
ha funzionato: $ curl --header "Autorizzazione: ID cliente XXXXXXXXX" https://api.imgur.com/3/gallery/7x98w9T.json dove le X sono il mio ID cliente ... l'ID immagine imgur è uno per un'immagine ho scelto a caso –
nel commento sopra intendevo digitare api.imgur.com/3/gallery/image/7x98w9T.json (anche se ho provato quello che ho effettivamente scritto nel commento sopra e funziona anche ...) –