Module: XapixClient

Defined in:
lib/xapix_client.rb,
lib/xapix_client/config.rb,
lib/xapix_client/version.rb,
lib/xapix_client/resource.rb,
lib/xapix_client/connection.rb

Defined Under Namespace

Classes: BadConfigurationError, Configuration, Connection, NoConfigurationError, Requestor, Resource

Constant Summary collapse

VERSION =
"1.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.autoloaded_modelsObject

Returns the value of attribute autoloaded_models.



10
11
12
# File 'lib/xapix_client/config.rb', line 10

def autoloaded_models
  @autoloaded_models
end

.configurationObject

Returns the value of attribute configuration.



10
11
12
# File 'lib/xapix_client/config.rb', line 10

def configuration
  @configuration
end

Class Method Details

.autoload_modelsObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/xapix_client.rb', line 12

def self.autoload_models
  Schema.includes(:schema_relationships).map do |schema|
    model_name = schema[:id].classify
    resource_class = Class.new(Resource) do
      schema.attributes.except(:id, :type).each do |name, data_type|
        property(name.to_sym, type: data_type.to_sym)
      end
      relations_by_cardinality = schema.schema_relationships.group_by(&:cardinality)
      (relations_by_cardinality['to_one'] || {}).each do |schema_relationship|
        has_one(schema_relationship.name.to_sym, class_name: schema_relationship.referenced_endpoint_name.classify)
      end
      (relations_by_cardinality['to_many'] || {}).each do |schema_relationship|
        has_many(schema_relationship.name.to_sym, class_name: schema_relationship.referenced_endpoint_name.classify)
      end
    end
    Object.const_set(model_name, resource_class)
    resource_class
  end
end

.configure {|configuration| ... } ⇒ Object

Yields:



13
14
15
16
17
# File 'lib/xapix_client/config.rb', line 13

def self.configure
  self.configuration ||= Configuration.new
  yield(configuration)
  self.autoloaded_models = configuration.autoload_models ? autoload_models : []
end