Sha256: 86888e9f4f9a3a62cacefe1e914bfe0c0d9223b4d98d2367f10e7996ea6e152f

Contents?: true

Size: 1.32 KB

Versions: 20

Compression:

Stored size: 1.32 KB

Contents

module Siteleaf
  class Entity
  
    attr_reader :error

    def initialize(attributes = {})
      self.attributes = attributes
    end

    def self.all
      result = Client.get "#{self.endpoint}"
      result.map { |r| self.new(r) } if result
    end

    def self.find(id)
      result = Client.get "#{self.endpoint}/#{id}"
      self.new(result) if result
    end

    def self.create(attributes = {})
      self.new(attributes).save
    end

    def save
      if self.id
        result = Client.put "#{self.class.endpoint}/#{self.id}", self.attributes
      else
        result = Client.post "#{self.create_endpoint}", self.attributes
      end
      if result
        self.attributes = result
        return self
      end
    end

    def self.delete(id)
      Client.delete "#{self.endpoint}/#{id}"
    end

    def delete
      Client.delete "#{self.class.endpoint}/#{self.id}"
    end

    def attributes
      Hash[self.instance_variables.map { |name| [name[1..-1], self.instance_variable_get(name)] }]
    end

    def attributes=(attributes = {})
      attributes.each_pair { |k, v| self.instance_variable_set("@#{k}", v) }
    end

    def self.class_name
      self.name.split('::')[-1]
    end

    def self.endpoint
      "#{self.class_name.downcase}s"
    end

    def create_endpoint
      self.class.endpoint
    end

  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
siteleaf-1.0.11 lib/siteleaf/entity.rb
siteleaf-1.0.10 lib/siteleaf/entity.rb
siteleaf-1.0.9 lib/siteleaf/entity.rb
siteleaf-1.0.8 lib/siteleaf/entity.rb
siteleaf-1.0.7 lib/siteleaf/entity.rb
siteleaf-1.0.6 lib/siteleaf/entity.rb
siteleaf-1.0.5 lib/siteleaf/entity.rb
siteleaf-1.0.4 lib/siteleaf/entity.rb
siteleaf-1.0.3 lib/siteleaf/entity.rb
siteleaf-1.0.2 lib/siteleaf/entity.rb
siteleaf-1.0.1 lib/siteleaf/entity.rb
siteleaf-1.0.0 lib/siteleaf/entity.rb
siteleaf-0.9.23 lib/siteleaf/entity.rb
siteleaf-0.9.22 lib/siteleaf/entity.rb
siteleaf-0.9.21 lib/siteleaf/entity.rb
siteleaf-0.9.20 lib/siteleaf/entity.rb
siteleaf-0.9.19 lib/siteleaf/entity.rb
siteleaf-0.9.18 lib/siteleaf/entity.rb
siteleaf-0.9.17 lib/siteleaf/entity.rb
siteleaf-0.9.16 lib/siteleaf/entity.rb