Sha256: 27e4e3910c513cf54609fb39416c54b0d41152df2cbca63f1f0a41173015ab42

Contents?: true

Size: 890 Bytes

Versions: 42

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

42 entries across 42 versions & 1 rubygems

Version Path
phrase-3.7.1 lib/phrase/response.rb
phrase-3.7.0 lib/phrase/response.rb
phrase-3.6.0 lib/phrase/response.rb
phrase-3.5.0 lib/phrase/response.rb
phrase-3.4.0 lib/phrase/response.rb
phrase-3.3.0 lib/phrase/response.rb
phrase-3.2.1 lib/phrase/response.rb
phrase-3.2.0 lib/phrase/response.rb
phrase-3.1.1 lib/phrase/response.rb
phrase-3.1.0 lib/phrase/response.rb
phrase-3.0.0 lib/phrase/response.rb
phrase-2.26.0 lib/phrase/response.rb
phrase-2.25.0 lib/phrase/response.rb
phrase-2.24.0 lib/phrase/response.rb
phrase-2.23.0 lib/phrase/response.rb
phrase-2.22.2 lib/phrase/response.rb
phrase-2.22.1 lib/phrase/response.rb
phrase-2.22.0 lib/phrase/response.rb
phrase-2.21.0 lib/phrase/response.rb
phrase-2.20.0 lib/phrase/response.rb