Sha256: c2d8b91e16ec85839aa31478580d6d81119d90a21b0cd4f41ccdcf7b82607ff1

Contents?: true

Size: 983 Bytes

Versions: 1

Compression:

Stored size: 983 Bytes

Contents

module AbsorbApi
  class ResourceNotFound < StandardError; end
  class RouteNotFound < StandardError; end
  class ValidationError < StandardError; end

  module Orm
    extend ActiveSupport::Concern

    class_methods do
      def find(id)
        raise ResourceNotFound if id.blank?
        response = AbsorbApi::Api.new.connection.get("#{to_s.demodulize.pluralize}/#{id}")
        if response.status == 404
          raise(RouteNotFound)
        elsif response.status == 400
          raise ResourceNotFound
        else
          new(response.body)
        end
      end

      def all
        response = AbsorbApi::Api.new.connection.get(to_s.demodulize.pluralize)
        if response.status == 404
          raise RouteNotFound
        elsif response.status == 400
          raise ResourceNotFound
        else
          Collection.new(response.body.map! do |attributes|
            new(attributes)
          end, klass: to_s.demodulize)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
absorb_api-0.2.0 lib/absorb_api/orm.rb