class ShopifyAPI::Clients::HttpResponse
Attributes
Public Class Methods
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
Source
# File lib/shopify_api/clients/http_response.rb, line 50 def ok? code >= 200 && code <= 299 end
Private Instance Methods
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
Source
# File lib/shopify_api/clients/http_response.rb, line 57 def parse_link_header return [nil, nil] if @headers["link"].nil? page_info = {} T.must(T.must(@headers["link"])[0]).split(",").each do |link| rel = T.must(link.match(/rel="(.*?)"/))[1] url = T.must(T.must(link.match(/<(.*?)>/))[1]) T.must(URI.parse(url).query).split("&").each do |param| if param.split("=")[0] == "page_info" page_info[rel] = param.split("=")[1] break end end end [page_info["previous"], page_info["next"]] end
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