Module: RestClient
- Defined in:
- lib/restclient.rb,
lib/restclient/payload.rb,
lib/restclient/request.rb,
lib/restclient/version.rb,
lib/restclient/windows.rb,
lib/restclient/platform.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, Platform, Response, ResponseForException, Windows Classes: Exception, ExceptionWithResponse, MaxRedirectsReached, RawResponse, Redirect, Request, RequestFailed, Resource, SSLCertificateNotVerified, ServerBrokeConnection
Constant Summary collapse
- VERSION =
'1.8.0'
- 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', #RFC2324 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', 428 => 'Precondition Required', #RFC6585 429 => 'Too Many Requests', #RFC6585 431 => 'Request Header Fields Too Large', #RFC6585 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', 511 => 'Network Authentication Required', # RFC6585 }
- @@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
- .patch(url, payload, headers = {}, &block) ⇒ Object
- .post(url, payload, headers = {}, &block) ⇒ Object
- .put(url, payload, headers = {}, &block) ⇒ Object
-
.reset_before_execution_procs ⇒ Object
Reset the procs to be called before each request is executed.
- .version ⇒ Object
Class Attribute Details
.proxy ⇒ Object
Returns the value of attribute proxy.
93 94 95 |
# File 'lib/restclient.rb', line 93 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.
152 153 154 |
# File 'lib/restclient.rb', line 152 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)
105 106 107 108 109 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 |
# File 'lib/restclient.rb', line 105 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
80 81 82 |
# File 'lib/restclient.rb', line 80 def self.delete(url, headers={}, &block) Request.execute(:method => :delete, :url => url, :headers => headers, &block) end |
.get(url, headers = {}, &block) ⇒ Object
64 65 66 |
# File 'lib/restclient.rb', line 64 def self.get(url, headers={}, &block) Request.execute(:method => :get, :url => url, :headers => headers, &block) end |
.head(url, headers = {}, &block) ⇒ Object
84 85 86 |
# File 'lib/restclient.rb', line 84 def self.head(url, headers={}, &block) Request.execute(:method => :head, :url => url, :headers => headers, &block) end |
.log ⇒ Object
:nodoc:
144 145 146 |
# File 'lib/restclient.rb', line 144 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.
99 100 101 |
# File 'lib/restclient.rb', line 99 def self.log= log @@log = create_log log end |
.options(url, headers = {}, &block) ⇒ Object
88 89 90 |
# File 'lib/restclient.rb', line 88 def self.(url, headers={}, &block) Request.execute(:method => :options, :url => url, :headers => headers, &block) end |
.patch(url, payload, headers = {}, &block) ⇒ Object
72 73 74 |
# File 'lib/restclient.rb', line 72 def self.patch(url, payload, headers={}, &block) Request.execute(:method => :patch, :url => url, :payload => payload, :headers => headers, &block) end |
.post(url, payload, headers = {}, &block) ⇒ Object
68 69 70 |
# File 'lib/restclient.rb', line 68 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
76 77 78 |
# File 'lib/restclient.rb', line 76 def self.put(url, payload, headers={}, &block) Request.execute(:method => :put, :url => url, :payload => payload, :headers => headers, &block) end |
.reset_before_execution_procs ⇒ Object
Reset the procs to be called before each request is executed.
157 158 159 |
# File 'lib/restclient.rb', line 157 def self.reset_before_execution_procs @@before_execution_procs = [] end |
.version ⇒ Object
4 5 6 |
# File 'lib/restclient/version.rb', line 4 def self.version VERSION end |