Module: DPN::Client::Agent::Connection
- Included in:
- DPN::Client::Agent
- Defined in:
- lib/dpn/client/agent/connection.rb
Instance Method Summary collapse
-
#delete(url) {|Response| ... } ⇒ Response
Make a DELETE request.
-
#get(url, query = nil) {|Response| ... } ⇒ Response
Make a GET request.
-
#paginate(url, query, page_size) {|Response| ... } ⇒ Object
Make one or more GET requests, fetching the next page of results one page at a time, so long as the response indicates there is another page.
-
#paginate_each(url, query, page_size) {|Response| ... } ⇒ Object
Make a one or more GET requests, fetching the next page of results one page at a time, so long as the response indicates there is another page.
-
#post(url, body) {|Response| ... } ⇒ Response
Make a POST request.
-
#put(url, body) {|Response| ... } ⇒ Response
Make a PUT request.
Instance Method Details
#delete(url) {|Response| ... } ⇒ Response
Make a DELETE request
55 56 57 |
# File 'lib/dpn/client/agent/connection.rb', line 55 def delete(url, &block) request :delete, url, nil, nil, &block end |
#get(url, query = nil) {|Response| ... } ⇒ Response
Make a GET request
23 24 25 |
# File 'lib/dpn/client/agent/connection.rb', line 23 def get(url, query = nil, &block) request :get, url, query, nil, &block end |
#paginate(url, query, page_size) {|Response| ... } ⇒ Object
Make one or more GET requests, fetching the next page of results one page at a time, so long as the response indicates there is another page.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/dpn/client/agent/connection.rb', line 70 def paginate(url, query, page_size, &block) raise ArgumentError, "Must pass a block" unless block_given? query ||= {} query = query.merge({ :page_size => page_size, :page => 1}) [:after, :before].each do |date_field| if query[date_field].is_a?(DateTime) query[date_field] = query[:date_field].new_offset(0).strftime(DPN::Client.time_format) end end response = get(url, query) # pass an empty block so we can call the block manually on :results yield response while response.success? && response[:next] && response[:results].empty? == false query[:page] += 1 query[:page_size] = response[:results].size # in case the server specifies a different page size response = get(url, query) {} yield response end end |
#paginate_each(url, query, page_size) {|Response| ... } ⇒ Object
Make a one or more GET requests, fetching the next page of results one page at a time, so long as the response indicates there is another page. This method yields each individual result, wrapped in a [Response].
105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/dpn/client/agent/connection.rb', line 105 def paginate_each(url, query, page_size, &block) raise ArgumentError, "Block required" unless block_given? paginate(url, query, (page_size || 25)) do |response| if response.success? logger.info("Response has #{response[:results].size} results.") response[:results].each do |result| yield Response.from_data(response.status, result) end else yield response end end end |
#post(url, body) {|Response| ... } ⇒ Response
Make a POST request
34 35 36 |
# File 'lib/dpn/client/agent/connection.rb', line 34 def post(url, body, &block ) request :post, url, nil, body, &block end |
#put(url, body) {|Response| ... } ⇒ Response
Make a PUT request
45 46 47 |
# File 'lib/dpn/client/agent/connection.rb', line 45 def put(url, body, &block) request :put, url, nil, body, &block end |