Sha256: e348599e921400cc26638f35532afd4e6e5837f20eb355c850b9b661009f5d6a
Contents?: true
Size: 910 Bytes
Versions: 9
Compression:
Stored size: 910 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) LinkHeader.new(url, rel) end end end end
Version data entries
9 entries across 9 versions & 1 rubygems