Sha256: be35370a27d504d44905fcf93ec56a65936db978963b4408d23fb8ec98a22341
Contents?: true
Size: 922 Bytes
Versions: 1
Compression:
Stored size: 922 Bytes
Contents
module ShopifyAPI class InvalidPaginationLinksError < StandardError; end class PaginationLinkHeaders LinkHeader = Struct.new(:url, :rel) attr_reader :previous_link, :next_link def initialize(link_header) links = parse_link_header(link_header) @previous_link = links.find { |link| link.rel == :previous } @next_link = links.find { |link| link.rel == :next } self end private def parse_link_header(link_header) return [] unless link_header.present? links = link_header.split(',') links.map do |link| parts = link.split('; ') raise ShopifyAPI::InvalidPaginationLinksError.new("Invalid link header: url and rel expected") unless parts.length == 2 url = parts[0][/<(.*)>/, 1] rel = parts[1][/rel="(.*)"/, 1]&.to_sym url = URI.parse(url).request_uri LinkHeader.new(url, rel) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
shopify_api-9.2.0 | lib/shopify_api/pagination_link_headers.rb |