Sha256: 81fc93fa89e36e25efda79b39af2d7c90370e92ce9a02585e61549d96cba1a17

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true
require 'forwardable'

module Trav3
  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 InvalidAPIEndpoint < StandardError
    def message
      "The API endpoint must be either
      'https://api.travis-ci.com' or
      'https://api.travis-ci.org'"
    end
  end

  class Unimplemented < StandardError
    def message
      "This feature is not implemented."
    end
  end

  class Response
    extend Forwardable
    attr_reader :travis
    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(travis, response)
      @travis = travis
      @response = response
      @json = JSON.parse(response.body)
    end

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

    def success?; raise Unimplemented  end
    def failure?; raise Unimplemented  end
    private :travis
  end

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

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

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

Version data entries

1 entries across 1 versions & 1 rubygems

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