No commit activity in last 3 years
No release in over 3 years
An HTTP library for Ruby that takes advantage of everything HTTP has to offer.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0
>= 0

Runtime

>= 2.1.0
>= 2.2.0
 Project Readme

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.