Module: BerkeleyLibrary::Util::URIs::Requester::ClassMethods

Included in:
BerkeleyLibrary::Util::URIs::Requester
Defined in:
lib/berkeley_library/util/uris/requester/class_methods.rb

Overview

rubocop:disable Metrics/ParameterLists

Instance Method Summary collapse

Instance Method Details

#get(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS) ⇒ String

Performs a GET request and returns the response body as a string.

Parameters:

  • uri (URI, String)

    the URI to GET

  • params (Hash) (defaults to: {})

    the query parameters to add to the URI. (Note that the URI may already include query parameters.)

  • headers (Hash) (defaults to: {})

    the request headers.

  • log (Boolean) (defaults to: true)

    whether to log each request URL and response code

  • max_retries (Integer) (defaults to: MAX_RETRIES)

    the maximum number of times to retry after a 429 or 503 with Retry-After

  • max_retry_delay (Integer) (defaults to: MAX_RETRY_DELAY_SECONDS)

    the maximum retry delay (in seconds) to accept in a Retry-After header

Returns:

  • (String)

    the body as a string.

Raises:

  • (RestClient::Exception)

    in the event of an unsuccessful request.



17
18
19
20
# File 'lib/berkeley_library/util/uris/requester/class_methods.rb', line 17

def get(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS)
  resp = make_request(:get, uri, params, headers, log, max_retries, max_retry_delay)
  resp.body
end

#get_response(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS) ⇒ RestClient::Response

Performs a GET request and returns the response, even in the event of a failed request.

Parameters:

  • uri (URI, String)

    the URI to GET

  • params (Hash) (defaults to: {})

    the query parameters to add to the URI. (Note that the URI may already include query parameters.)

  • headers (Hash) (defaults to: {})

    the request headers.

  • log (Boolean) (defaults to: true)

    whether to log each request URL and response code

Returns:

  • (RestClient::Response)

    the response



43
44
45
46
47
# File 'lib/berkeley_library/util/uris/requester/class_methods.rb', line 43

def get_response(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS)
  make_request(:get, uri, params, headers, log, max_retries, max_retry_delay)
rescue RestClient::Exception => e
  e.response
end

#head(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS) ⇒ Integer

Performs a HEAD request and returns the response status as an integer. Note that unlike BerkeleyLibrary::Util::URIs#get, this does not raise an error in the event of an unsuccessful request.

Parameters:

  • uri (URI, String)

    the URI to HEAD

  • params (Hash) (defaults to: {})

    the query parameters to add to the URI. (Note that the URI may already include query parameters.)

  • headers (Hash) (defaults to: {})

    the request headers.

  • log (Boolean) (defaults to: true)

    whether to log each request URL and response code

Returns:

  • (Integer)

    the response code as an integer.



31
32
33
# File 'lib/berkeley_library/util/uris/requester/class_methods.rb', line 31

def head(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS)
  head_response(uri, params: params, headers: headers, log: log, max_retries: max_retries, max_retry_delay: max_retry_delay).code
end

#head_response(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS) ⇒ RestClient::Response

Performs a HEAD request and returns the response, even in the event of a failed request.

Parameters:

  • uri (URI, String)

    the URI to HEAD

  • params (Hash) (defaults to: {})

    the query parameters to add to the URI. (Note that the URI may already include query parameters.)

  • headers (Hash) (defaults to: {})

    the request headers.

  • log (Boolean) (defaults to: true)

    whether to log each request URL and response code

Returns:

  • (RestClient::Response)

    the response



57
58
59
60
61
# File 'lib/berkeley_library/util/uris/requester/class_methods.rb', line 57

def head_response(uri, params: {}, headers: {}, log: true, max_retries: MAX_RETRIES, max_retry_delay: MAX_RETRY_DELAY_SECONDS)
  make_request(:head, uri, params, headers, log, max_retries, max_retry_delay)
rescue RestClient::Exception => e
  e.response
end