Sha256: 27e4e3910c513cf54609fb39416c54b0d41152df2cbca63f1f0a41173015ab42

Contents?: true

Size: 890 Bytes

Versions: 44

Compression:

Stored size: 890 Bytes

Contents

module Phrase
  class Response
    attr_reader :data

    def initialize(data, headers)
      @data = data
      @paginated = false
      @next_page = nil

      link_headers = headers["link"]
      if link_headers
        @paginated = true
        parsed_links = LinkHeaderParser.parse(link_headers, base: 'https://api.phrase.com').group_by_relation_type
        next_page_link = parsed_links[:next]&.first
        if next_page_link
          @next_page = CGI.parse(URI.parse(next_page_link.target_uri).query)["page"]&.first&.to_i
        end
      end
    end

    def method_missing(method, *args, &block)
      if data.respond_to?(method)
        data.send(method, *args, &block)
      else
        super
      end
    end

    def next_page
      @next_page
    end

    def next_page?
      paginated? && !next_page.nil?
    end

    def paginated?
      @paginated
    end
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
phrase-2.21.0 lib/phrase/response.rb
phrase-2.20.0 lib/phrase/response.rb
phrase-2.19.0 lib/phrase/response.rb
phrase-2.18.0 lib/phrase/response.rb
phrase-2.17.0 lib/phrase/response.rb
phrase-2.16.0 lib/phrase/response.rb
phrase-2.15.0 lib/phrase/response.rb
phrase-2.14.0 lib/phrase/response.rb
phrase-2.13.0 lib/phrase/response.rb
phrase-2.12.0 lib/phrase/response.rb
phrase-2.11.0 lib/phrase/response.rb
phrase-2.10.0 lib/phrase/response.rb
phrase-2.9.0 lib/phrase/response.rb
phrase-2.8.7 lib/phrase/response.rb
phrase-2.8.3 lib/phrase/response.rb
phrase-2.8.2 lib/phrase/response.rb
phrase-2.8.1 lib/phrase/response.rb
phrase-2.8.0 lib/phrase/response.rb
phrase-2.7.2 lib/phrase/response.rb
phrase-2.7.1 lib/phrase/response.rb