Sha256: ce2d8c4342864ec1a3310bd711b4237e4a33f47a29cb5446aa17a91625d6d9ee

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true
require 'forwardable'
require 'trav3/pagination'

class InvalidRepository < StandardError
  def message
    "The repository format was invlaid.
You must either provide the digit name for the repository,
or `user/repo` or `user%2Frepo` as the name."
  end
end

class Unimplemented < StandardError
  def message
    "You need to implement this method"
  end
end

class Response
  extend Forwardable
  def_delegators :@json, :[], :dig, :keys, :values, :has_key?
  def_delegators :@response, :code, :code_type, :uri, :message, :read_header,
                             :header, :value, :entity, :response, :body,
                             :decode_content, :msg, :reading_body, :read_body,
                             :http_version, :connection_close?, :connection_keep_alive?,
                             :initialize_http_header, :get_fields, :each_header
  def initialize(response)
    @response = response
    @json = JSON.parse(response.body)
  end

  def inspect
    "<#{self.class} Response>"
  end

  def success?; raise Unimplemented  end
  def failure?; raise Unimplemented  end
end

class Success < Response
  def page
    Trav3::Pagination.new(self)
  end

  def success?; true  end
  def failure?; false end
end

class RequestError < Response
  def success?; false end
  def failure?; true  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
trav3-0.0.3 lib/trav3/result.rb