Module: HTTP::Chainable

Included in:
HTTP, Client
Defined in:
lib/http/chainable.rb

Instance Method Summary collapse

Instance Method Details

#accept(type) ⇒ Object

Accept the given MIME type(s)

Parameters:

  • type

119
120
121
# File 'lib/http/chainable.rb', line 119

def accept(type)
  with :accept => MimeType.normalize(type)
end

#auth(value, opts = nil) ⇒ Object

Make a request with the given Authorization header

Parameters:

  • value (#to_s)

    Authorization header value


125
126
127
128
129
130
# File 'lib/http/chainable.rb', line 125

def auth(value, opts = nil)
  # shim for deprecated auth(:basic, opts).
  # will be removed in 0.8.0
  return basic_auth(opts) if :basic == value
  with :authorization => value.to_s
end

#basic_auth(opts) ⇒ Object

Make a request with the given Basic authorization header

Parameters:

  • opts (#fetch)

Options Hash (opts):

  • :user (#to_s)
  • :pass (#to_s)

See Also:


137
138
139
140
141
142
# File 'lib/http/chainable.rb', line 137

def basic_auth(opts)
  user = opts.fetch :user
  pass = opts.fetch :pass

  auth('Basic ' << Base64.strict_encode64("#{user}:#{pass}"))
end

#connect(uri, options = {}) ⇒ Object

Convert to a transparent TCP/IP tunnel

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

57
58
59
# File 'lib/http/chainable.rb', line 57

def connect(uri, options = {})
  request :connect, uri, options
end

#default_headersObject

Get headers of HTTP options


158
159
160
# File 'lib/http/chainable.rb', line 158

def default_headers
  default_options.headers
end

#default_headers=(headers) ⇒ Object

Set headers of HTTP options

Parameters:

  • headers

164
165
166
167
168
# File 'lib/http/chainable.rb', line 164

def default_headers=(headers)
  @default_options = default_options.dup do |opts|
    opts.headers = headers
  end
end

#default_optionsHTTP::Options

Get options for HTTP

Returns:


146
147
148
# File 'lib/http/chainable.rb', line 146

def default_options
  @default_options ||= HTTP::Options.new
end

#default_options=(opts) ⇒ HTTP::Options

Set options for HTTP

Parameters:

  • opts

Returns:


153
154
155
# File 'lib/http/chainable.rb', line 153

def default_options=(opts)
  @default_options = HTTP::Options.new(opts)
end

#delete(uri, options = {}) ⇒ Object

Delete a resource

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

36
37
38
# File 'lib/http/chainable.rb', line 36

def delete(uri, options = {})
  request :delete, uri, options
end

#follow(opts = true) ⇒ HTTP::Client Also known as: with_follow

Make client follow redirects.

Parameters:

  • opts (defaults to: true)

Returns:

See Also:


102
103
104
# File 'lib/http/chainable.rb', line 102

def follow(opts = true)
  branch default_options.with_follow opts
end

#get(uri, options = {}) ⇒ Object

Get a resource

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

15
16
17
# File 'lib/http/chainable.rb', line 15

def get(uri, options = {})
  request :get, uri, options
end

#head(uri, options = {}) ⇒ Object

Request a get sans response body

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

8
9
10
# File 'lib/http/chainable.rb', line 8

def head(uri, options = {})
  request :head, uri, options
end

#options(uri, options = {}) ⇒ Object

Return the methods supported on the given URI

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

50
51
52
# File 'lib/http/chainable.rb', line 50

def options(uri, options = {})
  request :options, uri, options
end

#patch(uri, options = {}) ⇒ Object

Apply partial modifications to a resource

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

64
65
66
# File 'lib/http/chainable.rb', line 64

def patch(uri, options = {})
  request :patch, uri, options
end

#post(uri, options = {}) ⇒ Object

Post to a resource

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

22
23
24
# File 'lib/http/chainable.rb', line 22

def post(uri, options = {})
  request :post, uri, options
end

#put(uri, options = {}) ⇒ Object

Put to a resource

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

29
30
31
# File 'lib/http/chainable.rb', line 29

def put(uri, options = {})
  request :put, uri, options
end

#request(verb, uri, options = {}) ⇒ Object

Make an HTTP request with the given verb

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

71
72
73
# File 'lib/http/chainable.rb', line 71

def request(verb, uri, options = {})
  branch(options).request verb, uri
end

#streamObject

Alias for with_response(:object)


94
95
96
# File 'lib/http/chainable.rb', line 94

def stream
  with_response(:object)
end

#trace(uri, options = {}) ⇒ Object

Echo the request back to the client

Parameters:

  • uri
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • (Hash)

43
44
45
# File 'lib/http/chainable.rb', line 43

def trace(uri, options = {})
  request :trace, uri, options
end

#via(*proxy) ⇒ Object Also known as: through

Make a request through an HTTP proxy

Parameters:

  • proxy (Array)

Raises:

  • (Request::Error)

    if HTTP proxy is invalid


78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/http/chainable.rb', line 78

def via(*proxy)
  proxy_hash = {}
  proxy_hash[:proxy_address]  = proxy[0] if proxy[0].is_a?(String)
  proxy_hash[:proxy_port]     = proxy[1] if proxy[1].is_a?(Integer)
  proxy_hash[:proxy_username] = proxy[2] if proxy[2].is_a?(String)
  proxy_hash[:proxy_password] = proxy[3] if proxy[3].is_a?(String)

  if [2, 4].include?(proxy_hash.keys.size)
    branch default_options.with_proxy(proxy_hash)
  else
    fail(RequestError, "invalid HTTP proxy: #{proxy_hash}")
  end
end

#with_headers(headers) ⇒ Object Also known as: with

Make a request with the given headers

Parameters:

  • headers

112
113
114
# File 'lib/http/chainable.rb', line 112

def with_headers(headers)
  branch default_options.with_headers(headers)
end