Class: JSONAPIonify::Api::Base

Inherits:
Object
  • Object
show all
Extended by:
ActiveSupport::DescendantsTracker, AppBuilder, ClassMethods, Delegation, Documentation, ResourceDefinitions, JSONAPIonify::Autoload
Defined in:
lib/jsonapionify/api/base.rb

Defined Under Namespace

Modules: AppBuilder, ClassMethods, Delegation, Documentation, ResourceDefinitions Classes: Reloader

Class Method Summary collapse

Methods included from JSONAPIonify::Autoload

autoload_all, eager_load!, unloaded

Methods included from AppBuilder

call, extended, use

Methods included from Documentation

description, documentation_object, documentation_order, documentation_output, extended, link, resources_in_order, title

Methods included from ClassMethods

cache, cache_store, cache_store=, eager_load, extended, fields, http_error, load_resources, process_index, resource_files, resource_signature, resources_loaded?, root_url, signature

Methods included from Delegation

extended

Methods included from ResourceDefinitions

define_resource, extended, resource, resource_defined?, resources

Class Method Details

.cache_key(**options) ⇒ Object



33
34
35
36
37
# File 'lib/jsonapionify/api/base.rb', line 33

def self.cache_key(**options)
  Base64.urlsafe_encode64(
    { **options, dsl: JSONAPIonify.digest, api: signature, }.to_json
  )
end

.inherited(subclass) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/jsonapionify/api/base.rb', line 15

def self.inherited(subclass)
  super(subclass)
  subclass.instance_exec(self) do |superclass|
    const_set(:ResourceBase, Class.new(superclass.resource_class))
    resource_class.set_api(self)

    file           = caller.reject { |f| f.start_with? JSONAPIonify.path }[0].split(/\:\d/)[0]
    dir            = File.expand_path File.dirname(file)
    basename       = File.basename(file, File.extname(file))
    self.load_path = File.join(dir, basename)
    self.load_file = file

    @title               = superclass.instance_variable_get(:@title)
    @description         = superclass.instance_variable_get(:@description)
    @documentation_order = superclass.instance_variable_get(:@documentation_order)
  end
end

.resource_classObject



39
40
41
42
43
44
45
# File 'lib/jsonapionify/api/base.rb', line 39

def self.resource_class
  if const_defined?(:ResourceBase, false)
    const_get(:ResourceBase, false)
  else
    const_set(:ResourceBase, Class.new(Resource))
  end
end