Skip to content

paul/resourceful

master
Switch branches/tags
Code
This branch is 12 commits ahead of pezra:master.
Contribute

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Resourceful

Resourceful provides a convenient Ruby API for making HTTP requests.

Features:

  • GET, PUT, POST and DELETE HTTP requests
  • HTTP Basic and Digest authentication
  • HTTP Caching with pluggable backends
  • Follow redirects based on the results of a callback

More Info

Examples

Getting started

gem install resourceful

Simplest example

require 'resourceful'
resp = Resourceful.get('http://rubyforge.org')
puts resp.body

Get a page requiring HTTP Authentication

my_realm_authenticator = Resourceful::BasicAuthenticator.new('My Realm', 'admin', 'secret')
http = Resourceful::HttpAccessor.new(:authenticator => my_realm_authenticator)
resp = http.resource('http://example.com/').get
puts resp.body

Redirection based on callback results

Resourceful will by default follow redirects on read requests (GET and HEAD), but not for POST, etc. If you want to follow a redirect after a post, you will need to set the resource#on_redirect callback. If the callback evaluates to true, it will follow the redirect.

resource = http.resource('http://example.com/redirect_me')
resource.on_redirect { |req, resp| resp.header['Location'] =~ /example.com/ }
resource.get  # Will only follow the redirect if the new location is example.com

Post a URL encoded form

 require 'resourceful'
 http = Resourceful::HttpAccessor.new
 resp = http.resource('http://mysite.example/service').
          post(Resourceful::UrlencodedFormData.new(:hostname => 'test', :level => 'super'))

Post a Mulitpart form with a file

 require 'resourceful'
 http = Resourceful::HttpAccessor.new
 form_data = Resourceful::MultipartFormData.new(:username => 'me')
 form_data.add_file('avatar', '/tmp/my_avatar.png', 'image/png')
 resp = http.resource('http://mysite.example/service').post(form_data)

Put an XML document

 require 'resourceful'
 http = Resourceful::HttpAccessor.new
 resp = http.resource('http://mysite.example/service').
          put('<?xml version="1.0"?><test/>', :content_type => 'application/xml')

Delete a resource

 require 'resourceful'
 http = Resourceful::HttpAccessor.new
 resp = http.resource('http://mysite.example/service').delete

Copyright

Copyright (c) 2008 Absolute Performance, Inc, Peter Williams. Released under the MIT License.

About

An HTTP library for Ruby that takes advantage of everything HTTP has to offer.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%