Module: HTTPI

Defined in:
lib/httpi.rb,
lib/httpi/dime.rb,
lib/httpi/cookie.rb,
lib/httpi/adapter.rb,
lib/httpi/request.rb,
lib/httpi/version.rb,
lib/httpi/auth/ssl.rb,
lib/httpi/response.rb,
lib/httpi/auth/config.rb,
lib/httpi/adapter/base.rb,
lib/httpi/adapter/curb.rb,
lib/httpi/adapter/rack.rb,
lib/httpi/cookie_store.rb,
lib/httpi/adapter/excon.rb,
lib/httpi/adapter/em_http.rb,
lib/httpi/adapter/net_http.rb,
lib/httpi/adapter/httpclient.rb,
lib/httpi/adapter/net_http_persistent.rb

Overview

HTTPI

Executes HTTP requests using a predefined adapter. All request methods accept an HTTPI::Request and an optional adapter. They may also offer shortcut methods for executing basic requests. Also they all return an HTTPI::Response.

GET

request = HTTPI::Request.new("http://example.com")
HTTPI.get(request, :httpclient)

Shortcuts

HTTPI.get("http://example.com", :curb)

POST

request = HTTPI::Request.new
request.url = "http://example.com"
request.body = "<some>xml</some>"

HTTPI.post(request, :httpclient)

Shortcuts

HTTPI.post("http://example.com", "<some>xml</some>", :curb)

HEAD

request = HTTPI::Request.new("http://example.com")
HTTPI.head(request, :httpclient)

Shortcuts

HTTPI.head("http://example.com", :curb)

PUT

request = HTTPI::Request.new
request.url = "http://example.com"
request.body = "<some>xml</some>"

HTTPI.put(request, :httpclient)

Shortcuts

HTTPI.put("http://example.com", "<some>xml</some>", :curb)

DELETE

request = HTTPI::Request.new("http://example.com")
HTTPI.delete(request, :httpclient)

Shortcuts

HTTPI.delete("http://example.com", :curb)

More control

If you need more control over your request, you can access the HTTP client instance represented by your adapter in a block.

HTTPI.get request do |http|
  http.follow_redirect_count = 3  # HTTPClient example
end

Defined Under Namespace

Modules: Adapter, Auth, ConnectionError Classes: Cookie, CookieStore, Dime, DimeRecord, Error, NotImplementedError, NotSupportedError, Request, Response, SSLError, TimeoutError

Constant Summary collapse

REQUEST_METHODS =
[:get, :post, :head, :put, :delete]
DEFAULT_LOG_LEVEL =
:debug
VERSION =
"2.1.1"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.log(message) ⇒ Object

Logs a given message.



173
174
175
# File 'lib/httpi.rb', line 173

def log(message)
  logger.send(log_level, message) if log?
end

.log_levelObject

Returns the log level. Defaults to :debug.



168
169
170
# File 'lib/httpi.rb', line 168

def log_level
  @log_level ||= DEFAULT_LOG_LEVEL
end

.loggerObject

Returns the logger. Defaults to an instance of Logger writing to STDOUT.



160
161
162
# File 'lib/httpi.rb', line 160

def logger
  @logger ||= ::Logger.new($stdout)
end

Class Method Details

.adapter=(adapter) ⇒ Object

Shortcut for setting the default adapter to use.



144
145
146
# File 'lib/httpi.rb', line 144

def adapter=(adapter)
  Adapter.use = adapter
end

.delete(request, adapter = nil, &block) ⇒ Object

Executes an HTTP DELETE request.



128
129
130
131
# File 'lib/httpi.rb', line 128

def delete(request, adapter = nil, &block)
  request = Request.new(request) if request.kind_of? String
  request(:delete, request, adapter, &block)
end

.get(request, adapter = nil, &block) ⇒ Object

Executes an HTTP GET request.



104
105
106
107
# File 'lib/httpi.rb', line 104

def get(request, adapter = nil, &block)
  request = Request.new(request) if request.kind_of? String
  request(:get, request, adapter, &block)
end

.head(request, adapter = nil, &block) ⇒ Object

Executes an HTTP HEAD request.



116
117
118
119
# File 'lib/httpi.rb', line 116

def head(request, adapter = nil, &block)
  request = Request.new(request) if request.kind_of? String
  request(:head, request, adapter, &block)
end

.log?Boolean

Returns whether to log HTTP requests. Defaults to true.

Returns:

  • (Boolean)


152
153
154
# File 'lib/httpi.rb', line 152

def log?
  @log != false
end

.post(*args, &block) ⇒ Object

Executes an HTTP POST request.



110
111
112
113
# File 'lib/httpi.rb', line 110

def post(*args, &block)
  request, adapter = request_and_adapter_from(args)
  request(:post, request, adapter, &block)
end

.put(*args, &block) ⇒ Object

Executes an HTTP PUT request.



122
123
124
125
# File 'lib/httpi.rb', line 122

def put(*args, &block)
  request, adapter = request_and_adapter_from(args)
  request(:put, request, adapter, &block)
end

.request(method, request, adapter = nil) {|adapter_class.client| ... } ⇒ Object

Executes an HTTP request for the given method.

Yields:

  • (adapter_class.client)


134
135
136
137
138
139
140
141
# File 'lib/httpi.rb', line 134

def request(method, request, adapter = nil)
  adapter_class = load_adapter(adapter, request)

  yield adapter_class.client if block_given?
  log_request(method, request, Adapter.identify(adapter_class.class))

  adapter_class.request(method)
end

.reset_config!Object

Reset the default config.



178
179
180
181
182
# File 'lib/httpi.rb', line 178

def reset_config!
  @log = nil
  @logger = nil
  @log_level = nil
end