class ShopifyAPI::Clients::HttpResponse

Attributes

api_call_limit[R]
body[R]
code[R]
headers[R]
next_page_info[R]
prev_page_info[R]
retry_request_after[R]

Public Class Methods

new(code:, headers:, body:) click to toggle source
# File lib/shopify_api/clients/http_response.rb, line 34
def initialize(code:, headers:, body:)
  @code = code
  @headers = headers
  @body = body

  @prev_page_info = T.let(nil, T.nilable(String))
  @next_page_info = T.let(nil, T.nilable(String))
  @prev_page_info, @next_page_info = parse_link_header

  @api_call_limit = T.let(nil, T.nilable(T::Hash[String, Integer]))
  @retry_request_after = T.let(nil, T.nilable(Float))
  @api_call_limit = parse_api_call_limit_header
  @retry_request_after = parse_retry_header
end

Public Instance Methods

ok?() click to toggle source
# File lib/shopify_api/clients/http_response.rb, line 50
def ok?
  code >= 200 && code <= 299
end

Private Instance Methods

parse_api_call_limit_header() click to toggle source
# File lib/shopify_api/clients/http_response.rb, line 84
def parse_api_call_limit_header
  rate_limit_info = headers["x-shopify-shop-api-call-limit"]&.first
  return if rate_limit_info.nil?

  request_count, bucket_size = rate_limit_info.split("/").map(&:to_i)
  { request_count: request_count, bucket_size: bucket_size }
end
parse_retry_header() click to toggle source
# File lib/shopify_api/clients/http_response.rb, line 77
def parse_retry_header
  return nil if @headers["retry-after"].nil?

  T.must(@headers["retry-after"])[0].to_f
end