Module: RestClient
- Defined in:
- lib/restclient.rb,
lib/restclient/payload.rb,
lib/restclient/request.rb,
lib/restclient/resource.rb,
lib/restclient/response.rb,
lib/restclient/exceptions.rb,
lib/restclient/raw_response.rb,
lib/restclient/abstract_response.rb
Overview
This module’s static methods are the entry point for using the REST client.
# GET
xml = RestClient.get 'http://example.com/resource'
jpg = RestClient.get 'http://example.com/resource', :accept => 'image/jpg'
# authentication and SSL
RestClient.get 'https://user:[email protected]/private/resource'
# POST or PUT with a hash sends parameters as a urlencoded form body
RestClient.post 'http://example.com/resource', :param1 => 'one'
# nest hash parameters
RestClient.post 'http://example.com/resource', :nested => { :param1 => 'one' }
# POST and PUT with raw payloads
RestClient.post 'http://example.com/resource', 'the post body', :content_type => 'text/plain'
RestClient.post 'http://example.com/resource.xml', xml_doc
RestClient.put 'http://example.com/resource.pdf', File.read('my.pdf'), :content_type => 'application/pdf'
# DELETE
RestClient.delete 'http://example.com/resource'
# retreive the response http code and headers
res = RestClient.get 'http://example.com/some.jpg'
res.code # => 200
res.headers[:content_type] # => 'image/jpg'
# HEAD
RestClient.head('http://example.com').headers
To use with a proxy, just set RestClient.proxy to the proper http proxy:
RestClient.proxy = "http://proxy.example.com/"
Or inherit the proxy from the environment:
RestClient.proxy = ENV['http_proxy']
For live tests of RestClient, try using rest-test.heroku.com, which echoes back information about the rest call:
>> RestClient.put 'http://rest-test.heroku.com/resource', :foo => 'baz'
=> "PUT http://rest-test.heroku.com/resource with a 7 byte payload, content type application/x-www-form-urlencoded {\"foo\"=>\"baz\"}"
Defined Under Namespace
Modules: AbstractResponse, Exceptions, Payload, Response, ResponseForException Classes: Exception, ExceptionWithResponse, MaxRedirectsReached, RawResponse, Redirect, Request, RequestFailed, Resource, SSLCertificateNotVerified, ServerBrokeConnection
Constant Summary collapse
- STATUSES =
{100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', #WebDAV 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', # http/1.1 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', #WebDAV 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', # http/1.1 304 => 'Not Modified', 305 => 'Use Proxy', # http/1.1 306 => 'Switch Proxy', # no longer used 307 => 'Temporary Redirect', # http/1.1 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Resource Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m A Teapot', 421 => 'Too Many Connections From This IP', 422 => 'Unprocessable Entity', #WebDAV 423 => 'Locked', #WebDAV 424 => 'Failed Dependency', #WebDAV 425 => 'Unordered Collection', #WebDAV 426 => 'Upgrade Required', 449 => 'Retry With', #Microsoft 450 => 'Blocked By Windows Parental Controls', #Microsoft 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', #WebDAV 509 => 'Bandwidth Limit Exceeded', #Apache 510 => 'Not Extended'}
- @@env_log =
create_log ENV['RESTCLIENT_LOG']
- @@log =
nil
- @@before_execution_procs =
[]
Class Attribute Summary collapse
-
.proxy ⇒ Object
Returns the value of attribute proxy.
Class Method Summary collapse
-
.add_before_execution_proc(&proc) ⇒ Object
Add a Proc to be called before each request in executed.
-
.before_execution_procs ⇒ Object
:nodoc:.
-
.create_log(param) ⇒ Object
Create a log that respond to << like a logger param can be ‘stdout’, ‘stderr’, a string (then we will log to that file) or a logger (then we return it).
- .delete(url, headers = {}, &block) ⇒ Object
- .get(url, headers = {}, &block) ⇒ Object
- .head(url, headers = {}, &block) ⇒ Object
-
.log ⇒ Object
:nodoc:.
-
.log=(log) ⇒ Object
Setup the log for RestClient calls.
- .options(url, headers = {}, &block) ⇒ Object
- .post(url, payload, headers = {}, &block) ⇒ Object
- .put(url, payload, headers = {}, &block) ⇒ Object
- .version ⇒ Object
Class Attribute Details
.proxy ⇒ Object
Returns the value of attribute proxy.
92 93 94 |
# File 'lib/restclient.rb', line 92 def proxy @proxy end |
Class Method Details
.add_before_execution_proc(&proc) ⇒ Object
Add a Proc to be called before each request in executed. The proc parameters will be the http request and the request params.
157 158 159 |
# File 'lib/restclient.rb', line 157 def self.add_before_execution_proc &proc @@before_execution_procs << proc end |
.before_execution_procs ⇒ Object
:nodoc:
161 162 163 |
# File 'lib/restclient.rb', line 161 def self.before_execution_procs # :nodoc: @@before_execution_procs end |
.create_log(param) ⇒ Object
Create a log that respond to << like a logger param can be ‘stdout’, ‘stderr’, a string (then we will log to that file) or a logger (then we return it)
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/restclient.rb', line 110 def self.create_log param if param if param.is_a? String if param == 'stdout' stdout_logger = Class.new do def << obj STDOUT.puts obj end end stdout_logger.new elsif param == 'stderr' stderr_logger = Class.new do def << obj STDERR.puts obj end end stderr_logger.new else file_logger = Class.new do attr_writer :target_file def << obj File.open(@target_file, 'a') { |f| f.puts obj } end end logger = file_logger.new logger.target_file = param logger end else param end end end |
.delete(url, headers = {}, &block) ⇒ Object
79 80 81 |
# File 'lib/restclient.rb', line 79 def self.delete(url, headers={}, &block) Request.execute(:method => :delete, :url => url, :headers => headers, &block) end |
.get(url, headers = {}, &block) ⇒ Object
67 68 69 |
# File 'lib/restclient.rb', line 67 def self.get(url, headers={}, &block) Request.execute(:method => :get, :url => url, :headers => headers, &block) end |
.head(url, headers = {}, &block) ⇒ Object
83 84 85 |
# File 'lib/restclient.rb', line 83 def self.head(url, headers={}, &block) Request.execute(:method => :head, :url => url, :headers => headers, &block) end |
.log ⇒ Object
:nodoc:
149 150 151 |
# File 'lib/restclient.rb', line 149 def self.log # :nodoc: @@env_log || @@log end |
.log=(log) ⇒ Object
Setup the log for RestClient calls. Value should be a logger but can can be stdout, stderr, or a filename. You can also configure logging by the environment variable RESTCLIENT_LOG.
98 99 100 |
# File 'lib/restclient.rb', line 98 def self.log= log @@log = create_log log end |
.options(url, headers = {}, &block) ⇒ Object
87 88 89 |
# File 'lib/restclient.rb', line 87 def self.(url, headers={}, &block) Request.execute(:method => :options, :url => url, :headers => headers, &block) end |
.post(url, payload, headers = {}, &block) ⇒ Object
71 72 73 |
# File 'lib/restclient.rb', line 71 def self.post(url, payload, headers={}, &block) Request.execute(:method => :post, :url => url, :payload => payload, :headers => headers, &block) end |
.put(url, payload, headers = {}, &block) ⇒ Object
75 76 77 |
# File 'lib/restclient.rb', line 75 def self.put(url, payload, headers={}, &block) Request.execute(:method => :put, :url => url, :payload => payload, :headers => headers, &block) end |
.version ⇒ Object
102 103 104 105 106 |
# File 'lib/restclient.rb', line 102 def self.version version_path = File.dirname(__FILE__) + "/../VERSION" return File.read(version_path).chomp if File.file?(version_path) "0.0.0" end |