Module: Api::Connection
- Included in:
- Client
- Defined in:
- lib/api/connection.rb
Overview
Network layer for API clients.
Constant Summary collapse
- CONVENIENCE_HEADERS =
Set.new([:accept, :content_type])
Instance Method Summary collapse
-
#agent ⇒ Sawyer::Agent
Hypermedia agent for the API.
-
#delete(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP DELETE request.
-
#get(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP GET request.
-
#head(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP HEAD request.
-
#last_response ⇒ Sawyer::Response
Response for last HTTP request.
-
#paginate(url, options = {}, &block) ⇒ Sawyer::Resource
Make one or more HTTP GET requests, optionally fetching the next page of results from URL in Link response header based on value in #auto_paginate.
-
#patch(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP PATCH request.
-
#post(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP POST request.
-
#put(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP PUT request.
-
#root ⇒ Sawyer::Resource
Fetch the root resource for the API.
Instance Method Details
#agent ⇒ Sawyer::Agent
Hypermedia agent for the API
103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/api/connection.rb', line 103 def agent @agent ||= Sawyer::Agent.new(endpoint, ) do |http| http.headers[:content_type] = "application/json" http.headers[:user_agent] = user_agent if basic_authenticated? http.basic_auth(@basic_login, @basic_password) elsif token_authenticated? http. @access_token_prefix, @access_token end end end |
#delete(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP DELETE request
53 54 55 |
# File 'lib/api/connection.rb', line 53 def delete(url, = {}) request :delete, url, end |
#get(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP GET request
17 18 19 |
# File 'lib/api/connection.rb', line 17 def get(url, = {}) request :get, url, parse_query_and_convenience_headers() end |
#head(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP HEAD request
62 63 64 |
# File 'lib/api/connection.rb', line 62 def head(url, = {}) request :head, url, parse_query_and_convenience_headers() end |
#last_response ⇒ Sawyer::Response
Response for last HTTP request
125 126 127 |
# File 'lib/api/connection.rb', line 125 def last_response @last_response if defined? @last_response end |
#paginate(url, options = {}, &block) ⇒ Sawyer::Resource
Make one or more HTTP GET requests, optionally fetching the next page of results from URL in Link response header based on value in #auto_paginate.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/api/connection.rb', line 77 def paginate(url, = {}, &block) opts = parse_query_and_convenience_headers(.dup) if @auto_paginate || @per_page opts[:query][:per_page] ||= @per_page || (@auto_paginate ? 100 : nil) end data = request(:get, url, opts.dup) if @auto_paginate while @last_response.rels[:next] && rate_limit.remaining > 0 @last_response = @last_response.rels[:next].get(:headers => opts[:headers]) if block_given? yield(data, @last_response) else data.concat(@last_response.data) if @last_response.data.is_a?(Array) end end end data end |
#patch(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP PATCH request
44 45 46 |
# File 'lib/api/connection.rb', line 44 def patch(url, = {}) request :patch, url, end |
#post(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP POST request
26 27 28 |
# File 'lib/api/connection.rb', line 26 def post(url, = {}) request :post, url, end |
#put(url, options = {}) ⇒ Sawyer::Resource
Make a HTTP PUT request
35 36 37 |
# File 'lib/api/connection.rb', line 35 def put(url, = {}) request :put, url, end |
#root ⇒ Sawyer::Resource
Fetch the root resource for the API
118 119 120 |
# File 'lib/api/connection.rb', line 118 def root get "/" end |