Sha256: 9cd733ea973dd24796b499b4fe2435989f876055b8031136a0b6407711e2ae83

Contents?: true

Size: 2 KB

Versions: 1

Compression:

Stored size: 2 KB

Contents

# Nap

Nap is an extremely simple REST client for Ruby. It was built to quickly
fire off HTTP requests without having to research net/http internals.

## Example

    gem 'nap'
    require 'rest'
    require 'json'
    
    response = REST.get('http://twitter.com/statuses/friends_timeline.json', {},
      {:username => '_evan', :password => 'buttonscat'}
    )
    if response.ok?
      timeline = JSON.parse(response.body)
      puts(timeline.map do |item|
        "#{item['user']['name']}\n\n#{item['text']}"
      end.join("\n\n--\n\n"))
    elsif response.forbidden?
      puts "Are you sure you're `_evan' and your password is the name of your cat?"
    else
      puts "Something went wrong (#{response.status_code})"
      puts response.body
    end

## Advanced request configuration

If you need more control over the Net::HTTP request you can pass a block to all of the request methods. 

    response = REST.get('http://google.com') do |http_request|
      http_request.open_timeout = 15
      http_request.set_debug_output(STDERR)
    end

## Proxy support

To enable the proxy settings in Nap, you can either use the HTTP\_PROXY or http\_proxy enviroment variable.

    $ env HTTP_PROXY=http://rob:secret@192.167.1.254:665 ruby app.rb

## Exceptions

Nap defines one top-level and three main error types which allow you to catch a whole range of exceptions thrown by underlying protocol implementations.

* *REST::Error*: Any type of error
* *REST::Timeout*: Read timeouts of various sorts
* *REST::Connection*: Connection errors caused by dropped sockets
* *REST::Protocol*: Request failed because of a problem when handling the HTTP request or response

In the most basic case you can rescue from the top-level type to warn about fetching problems.

	begin
	  REST.get('http://example.com/pigeons/12')
	rescue REST::Error
	  puts "[!] Failed to fetch Pigeon number 12."
	end

## Contributions

Nap couldn't be the shining beacon in the eternal darkness without help from:

* Eloy DurĂ¡n
* Joshua Sierles
* Thijs van der Vossen

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nap-0.8.0.pre README.md