Sha256: abbaddb43e588cc6149cf638cb2ec42321ca29f6caf1a9884b6e1db892ee9fa7

Contents?: true

Size: 735 Bytes

Versions: 4

Compression:

Stored size: 735 Bytes

Contents

module Troo
  module API
    class Responder
      include Virtus.value_object

      values do
        attribute :body, String
        attribute :code, String
      end

      class << self
        # @param  [Hash]
        # @return [Response, ErrorResponse]
        def build(response)
          new(response).build
        end
      end

      # @return [Response, ErrorResponse]
      def build
        raise ExpiredAccessToken if expired?
        ok? ? Response.new(attributes) : ErrorResponse.new(attributes)
      end

      private

      def expired?
        code == '401'
      end

      def ok?
        code == '200'
      end
    end

    class Response < Responder; end
    class ErrorResponse < Responder; end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
troo-0.0.15 lib/troo/api/response.rb
troo-0.0.14 lib/troo/api/response.rb
troo-0.0.13 lib/troo/api/response.rb
troo-0.0.12 lib/troo/api/response.rb