web-dev-qa-db-fra.com

Équivalent de cURL pour Ruby?

Existe-t-il une bibliothèque cURL pour Ruby?

69
user85748

Utilisez OpenURI et

  open("http://...", :http_basic_authentication=>[user, password])

accéder à des sites/pages/ressources qui nécessitent une authentification HTTP.

30
apostlion

Curb et Curl :: Multi fournissent des liaisons cURL pour Ruby.

91
grawity

Si vous l'aimez moins bas niveau, il y a aussi Typhoeus , qui est construit sur Curl :: Multi.

35
Skade

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.

9
Peter Cooper

Vous pouvez également consulter Rest-Client

7
Anh Do

clients HTTP est une bonne page pour vous aider à prendre des décisions concernant les différents clients.

7
Mr. Ronald

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
6
Seamus Abshere

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 .

6
cbliard

Il y a aussi Mechanize , qui est un client de grattage Web de très haut niveau, et utilise Nokogiri pour l'analyse HTML.

5
method

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.

4
Douglas G. Allen

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.

4
the Tin Man

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
1
steel