2016-07-08 3 views
0

J'ai une ligne boucle comme ceci:Transformez la boucle en open-uri en rubis?

curl https://api.paymill.com/v2.1/checksums -u 'private_user_key' -d 'checksum_type=paypal' -d 'amount=4200' 

et je veux le transformer en un appel ouvert uri comme ceci:

require 'open-uri' 
open("https://api.paymill.com/v2.1/checksums", http_basic_authentication: ['private_user_key']) 

Works jusqu'à présent, mais comment puis-je inclure le - d attributs de données tels que -d 'checksum_type = paypal' -d 'amount = 4200'?

Merci, Andreas

+0

Je suggère que vous regardez un bijou appelé trottoir. J'ai eu les mêmes problèmes dans le passé - vous permettra d'utiliser exactement la même ligne de courbure dans votre application – MageeWorld

+0

@phoffer, j'ai essayé de remplacer -d par l'attribut comme les données: {'checksum_type = paypal', 'amount = 4200 '} ou d: {..} comme cela a fonctionné pour -u et http_basic_authentication: ... mais rien de tout cela n'a fonctionné pour moi – kernification

+0

@MageeWorld Merci, mais j'essaie d'éviter d'utiliser une gemme pour cela. – kernification

Répondre

1

Je pense que vous serez mieux en utilisant directement Net::HTTP (au lieu d'ouvrir-uri, qui est juste une enveloppe de commodité). Cela vous donne plus de contrôle sur la demande faite.

require 'net/http' 
uri = URI("https://api.paymill.com/v2.1/checksums") 
http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.request_uri) 
request.basic_auth("username", "password") 
request.set_form_data('checksum_type' => 'paypal', 'amount' => 4200) 
response = http.request(request)