Existe-t-il une bibliothèque cURL pour Ruby?
Utilisez OpenURI et
open("http://...", :http_basic_authentication=>[user, password])
accéder à des sites/pages/ressources qui nécessitent une authentification HTTP.
Curb et Curl :: Multi fournissent des liaisons cURL pour Ruby.
Si vous l'aimez moins bas niveau, il y a aussi Typhoeus , qui est construit sur Curl :: Multi.
Curb-f est un wrapper autour de Curb qui à son tour utilise libcurl. Que propose Curb-fu par rapport à Curb? Juste beaucoup de sucre syntaxique - mais c'est souvent ce dont vous avez besoin.
Vous pouvez également consulter Rest-Client
clients HTTP est une bonne page pour vous aider à prendre des décisions concernant les différents clients.
la gemme eat
est un "remplacement" d'OpenURI:
# first do gem install eat
require 'eat'
eat('http://yahoo.com') #=> String
eat('/home/seamus/foo.txt') #=> String
eat('file:///home/seamus/foo.txt') #=> String
Il utilise HTTPClient sous le capot. Il a également quelques options:
eat('http://yahoo.com', :timeout => 10) # timeout after 10 seconds
eat('http://yahoo.com', :limit => 1024) # only read the first 1024 chars
eat('https://yahoo.com', :openssl_verify_mode => 'none') # don't bother verifying SSL certificate
Si vous savez comment écrire votre demande en tant que commande curl
, il existe un outil en ligne qui peut le transformer en code Ruby (2.0+): curl- to-Ruby
Actuellement, il connaît les options suivantes: -d/--data
, -H/--header
, -I/--head
, -u/--user
, --url
, et -X/--request
. C'est ouvert aux contributions .
Il y a aussi Mechanize , qui est un client de grattage Web de très haut niveau, et utilise Nokogiri pour l'analyse HTML.
Voici un petit programme avec lequel j'ai écrit pour obtenir des fichiers.
base = "http://media.pragprog.com/titles/Ruby3/code/samples/tutthreads_"
for i in 1..50
url = "#{ base }#{ i }.rb"
file = "tutthreads_#{i}.rb"
File.open(file, 'w') do |f|
system "curl -o #{f.path} #{url}"
end
end
Je sais que cela pourrait être un peu plus éloquent, mais cela sert son but. Vérifiez-le. Je viens de le bricoler aujourd'hui parce que j'en avais marre d'aller à chaque URL pour obtenir le code du livre qui n'était pas inclus dans le téléchargement source.
Ajout d'une réponse plus récente, HTTPClient est une autre Ruby bibliothèque qui utilise libcurl, prend en charge les threads parallèles et beaucoup de goodies curl. J'utilise HTTPClient et Typhoeus pour tout non applications triviales.
Pour indiquer ce qui est peut-être trop évident, les graduations exécutent également le code Shell dans Ruby également. À condition que votre code Ruby s'exécute dans un shell qui a curl
:
puts `curl http://www.google.com?q=hello`
ou
result = `
curl -X POST https://www.myurl.com/users \
-d "name=pat" \
-d "age=21"
`
puts result