Sha256: 96ed5c138bfe0a5244c6fc345495490933161f160ae65b628a0b6b4a8ca74839
Contents?: true
Size: 1.24 KB
Versions: 3
Compression:
Stored size: 1.24 KB
Contents
module Rexpense module Entities # # A wrapper to Rexpense collection returns from API. # This wrapper represents a collection and it's responsible for # processing pagination information as well. # class Collection < Base PAGE_REGEX = /page=(\d+)/ attr_reader :response, :collection, :headers def initialize(response) @response = response @collection = [] @headers = begin response.headers["Link"].split(",") rescue [] end end def self.build(response) new(response).build end def build build_collection self end def next_page page_for(:next) end def last_page page_for(:last) end def previous_page page_for(:prev) end def first_page page_for(:first) end private def page_for(page_rel) header_link_for(page_rel).match(PAGE_REGEX)[1].to_i rescue nil end def header_link_for(rel) headers.select { |n| n =~ /rel=#{rel}/ }.first end def build_collection raise NotImplementedError end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rexpense-2.1.0 | lib/rexpense/entities/collection.rb |
rexpense-2.0.0 | lib/rexpense/entities/collection.rb |
rexpense-1.0.0 | lib/rexpense/entities/collection.rb |