Sha256: f39ea5850c4a26f77ff646e3c8f13d7acf8dd0671f370fdc9da978aa73003844

Contents?: true

Size: 1.92 KB

Versions: 3

Compression:

Stored size: 1.92 KB

Contents

module RestfulObjects
  class DomainModel
    include LinkGenerator

    attr_accessor :base_url, :compatible_mode
    attr_reader :metadata_schema, :version, :user, :types, :services, :objects

    def self.current
      @current ||= DomainModel.new
    end

    def self.current=(value)
      @current = value
    end

    def initialize
      @base_url = 'http://localhost'
      @metadata_schema = :selectable
      @compatible_mode = false
      @user = User.new(@base_url, 'anonymous')
      @types = TypeList.new
      @services = ServiceList.new(@base_url)
      @objects = ObjectList.new(@base_url)
    end

    def get_homepage
      { 'links' => [
          link_to(:self, '/', :homepage),
          link_to(:user, '/user', :user),
          link_to(:services, '/services', :list),
          link_to(:version, '/version', :version),
          link_to(:domain_types, '/domain-types', :type_list)
        ],
       'extensions' => {}
      }.to_json
    end

    def get_version
      { 'links' => [
          link_to(:self, '/version', :version),
          link_to(:up, '/', :homepage),
        ],
        'specVersion' => '1.0',
        'optionalCapabilities' => {
          'blobsClobs' => true,
          'deleteObjects' => true,
          'domainModel' => metadata_schema.to_s,
          'protoPersistentObjects' => true,
          'validateOnly' => false
        },
        'extensions' => {}
      }.to_json
    end

    def get_user
      @user.get_as_json
    end

    def get_services
      services.get_list
    end

    def metadata_schema=(value)
      if not [:simple, :formal, :selectable].include?(value)
        raise "invalid metadata schema, choose :simple, :formal or :selectable"
      end
      @metadata_schema = value
    end

    def reset
      @base_url = 'http://localhost'
      @user = nil
      @types.clear
      @services.clear
      @objects.clear
    end

    def reset_objects
      @objects.clear
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
restful_objects-0.0.5 lib/restful_objects/domain_model.rb
restful_objects-0.0.4 lib/restful_objects/domain_model.rb
restful_objects-0.0.3 lib/restful_objects/domain_model.rb