Class: Gitlab::Triage::NetworkAdapters::HttpartyAdapter
- Inherits:
-
BaseAdapter
- Object
- BaseAdapter
- Gitlab::Triage::NetworkAdapters::HttpartyAdapter
- Defined in:
- lib/gitlab/triage/network_adapters/httparty_adapter.rb
Constant Summary
Constants inherited from BaseAdapter
Instance Attribute Summary
Attributes inherited from BaseAdapter
Instance Method Summary collapse
- #delete(token, url) ⇒ Object
- #get(token, url) ⇒ Object
- #next_page_url(url, response) ⇒ Object private
- #post(token, url, body) ⇒ Object
- #raise_on_internal_server_error!(response) ⇒ Object private
- #raise_on_too_many_requests!(response) ⇒ Object private
- #raise_on_unauthorized_error!(response) ⇒ Object private
Methods inherited from BaseAdapter
Constructor Details
This class inherits a constructor from Gitlab::Triage::NetworkAdapters::BaseAdapter
Instance Method Details
#delete(token, url) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/gitlab/triage/network_adapters/httparty_adapter.rb', line 65 def delete(token, url) response = HTTParty.delete( url, headers: { 'User-Agent' => USER_AGENT, 'PRIVATE-TOKEN' => token } ) (response) raise_on_internal_server_error!(response) raise_on_too_many_requests!(response) tracker&.record('DELETE', url) { results: response.parsed_response, ratelimit_remaining: response.headers["ratelimit-remaining"].to_i, ratelimit_reset_at: Time.at(response.headers["ratelimit-reset"].to_i) } end |
#get(token, url) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/gitlab/triage/network_adapters/httparty_adapter.rb', line 13 def get(token, url) response = HTTParty.get( url, headers: { 'User-Agent' => USER_AGENT, 'Content-type' => 'application/json', 'PRIVATE-TOKEN' => token } ) (response) raise_on_internal_server_error!(response) raise_on_too_many_requests!(response) result = { more_pages: (response.headers["x-next-page"].to_s != ""), next_page_url: next_page_url(url, response), results: response.parsed_response, ratelimit_remaining: response.headers["ratelimit-remaining"].to_i, ratelimit_reset_at: Time.at(response.headers["ratelimit-reset"].to_i) } resource_count = result[:results].is_a?(Array) ? result[:results].size : 0 tracker&.record('GET', url, resource_count: resource_count) result end |
#next_page_url(url, response) ⇒ Object (private)
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/gitlab/triage/network_adapters/httparty_adapter.rb', line 113 def next_page_url(url, response) return unless response.headers['x-next-page'].present? next_page = "&page=#{response.headers['x-next-page']}" if url.include?('&page') url.gsub(/&page=\d+/, next_page) else url + next_page end end |
#post(token, url, body) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/gitlab/triage/network_adapters/httparty_adapter.rb', line 41 def post(token, url, body) response = HTTParty.post( url, body: body.to_json, headers: { 'User-Agent' => "GitLab Triage #{Gitlab::Triage::VERSION}", 'Content-type' => 'application/json', 'PRIVATE-TOKEN' => token } ) (response) raise_on_internal_server_error!(response) raise_on_too_many_requests!(response) tracker&.record('POST', url) { results: response.parsed_response, ratelimit_remaining: response.headers["ratelimit-remaining"].to_i, ratelimit_reset_at: Time.at(response.headers["ratelimit-reset"].to_i) } end |
#raise_on_internal_server_error!(response) ⇒ Object (private)
97 98 99 100 101 102 103 |
# File 'lib/gitlab/triage/network_adapters/httparty_adapter.rb', line 97 def raise_on_internal_server_error!(response) return unless response.response.is_a?(Net::HTTPInternalServerError) puts Gitlab::Triage::UI.debug response.inspect if .debug raise Errors::Network::InternalServerError, 'Internal server error encountered!' end |
#raise_on_too_many_requests!(response) ⇒ Object (private)
105 106 107 108 109 110 111 |
# File 'lib/gitlab/triage/network_adapters/httparty_adapter.rb', line 105 def raise_on_too_many_requests!(response) return unless response.response.is_a?(Net::HTTPTooManyRequests) puts Gitlab::Triage::UI.debug response.inspect if .debug raise Errors::Network::TooManyRequests, 'Too many requests made!' end |
#raise_on_unauthorized_error!(response) ⇒ Object (private)
89 90 91 92 93 94 95 |
# File 'lib/gitlab/triage/network_adapters/httparty_adapter.rb', line 89 def (response) return unless response.response.is_a?(Net::HTTPUnauthorized) puts Gitlab::Triage::UI.debug response.inspect if .debug raise 'The provided token is unauthorized!' end |