Sha256: ad469ad2cee76e6bd05b3912de2d61207725f1b4b361df3d0f6ee38379a11db9

Contents?: true

Size: 1.42 KB

Versions: 16

Compression:

Stored size: 1.42 KB

Contents

require 'active_support/descendants_tracker'
require 'active_support/core_ext/module/delegation'

module JSONAPIonify::Api
  class Base
    extend JSONAPIonify::Autoload
    autoload_all
    extend AppBuilder
    extend Documentation
    extend ClassMethods
    extend Delegation
    extend ResourceDefinitions

    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

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

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

  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
jsonapionify-0.12.2 lib/jsonapionify/api/base.rb
jsonapionify-0.12.1 lib/jsonapionify/api/base.rb
jsonapionify-0.12.0 lib/jsonapionify/api/base.rb
jsonapionify-0.11.11 lib/jsonapionify/api/base.rb
jsonapionify-0.11.10 lib/jsonapionify/api/base.rb
jsonapionify-0.11.9 lib/jsonapionify/api/base.rb
jsonapionify-0.11.8 lib/jsonapionify/api/base.rb
jsonapionify-0.11.7 lib/jsonapionify/api/base.rb
jsonapionify-0.11.6 lib/jsonapionify/api/base.rb
jsonapionify-0.11.5 lib/jsonapionify/api/base.rb
jsonapionify-0.11.0 lib/jsonapionify/api/base.rb
jsonapionify-0.10.2 lib/jsonapionify/api/base.rb
jsonapionify-0.10.1 lib/jsonapionify/api/base.rb
jsonapionify-0.10.0 lib/jsonapionify/api/base.rb
jsonapionify-0.9.3 lib/jsonapionify/api/base.rb
jsonapionify-0.9.2 lib/jsonapionify/api/base.rb