module XapixClient

Constants

VERSION

Attributes

autoloaded_models[RW]
configuration[RW]

Public Class Methods

autoload_models() click to toggle source
# 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| ... } click to toggle source
# 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