Module: JkoApi

Defined in:
lib/jko_api.rb,
lib/jko_api/util.rb,
lib/jko_api/engine.rb,
lib/jko_api/version.rb,
lib/jko_api/responder.rb,
lib/jko_api/controller.rb,
lib/jko_api/middleware.rb,
lib/jko_api/versioning.rb,
lib/jko_api/constraints.rb,
lib/jko_api/test_helpers.rb,
lib/jko_api/configuration.rb,
lib/jko_api/request_error.rb,
lib/jko_api/strategies/bearer.rb,
lib/jko_api/controller_helpers.rb,
lib/jko_api/class_descendants_builder.rb

Defined Under Namespace

Modules: Constraints, Controller, ControllerHelpers, Strategies, TestHelpers Classes: ClassDescendantsBuilder, Configuration, Engine, Middleware, RequestError, Responder, Util, Versioning

Constant Summary collapse

ACCEPT_HEADER_REGEX =
/\Aapplication\/vnd\.api(\.v([0-9]))?\+json\z/
VERSION =
"0.2.9"
@@versioning =
nil

Class Method Summary collapse

Class Method Details

.activated?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/jko_api.rb', line 43

def self.activated?
  current_version_number.present? && current_version_number > 0
end

.auth_setup(&block) ⇒ Object



79
80
81
# File 'lib/jko_api.rb', line 79

def self.auth_setup(&block)
  self.auth_initializer = block
end

.complete_setup(base_controller) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/jko_api.rb', line 35

def self.complete_setup(base_controller)
  if Rails.version.to_i < 5
    Util.stupid_hack!
  end
  ClassDescendantsBuilder.build(base_controller, upto: max_version_number)
  @@auth_initializer.call
end

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

Yields:

  • (configuration)


29
30
31
32
33
# File 'lib/jko_api.rb', line 29

def self.configure
  self.configuration ||= Configuration.new
  yield(configuration)
  self.configuration
end

.current_version_number=(version_number) ⇒ Object



51
52
53
# File 'lib/jko_api.rb', line 51

def self.current_version_number=(version_number)
  @@current_version_number = version_number.to_i
end

.max_version_numberObject



59
60
61
# File 'lib/jko_api.rb', line 59

def self.max_version_number
  versioning.max_version_number
end

.min_version_numberObject



55
56
57
# File 'lib/jko_api.rb', line 55

def self.min_version_number
  versioning.min_version_number
end

.resetObject



47
48
49
# File 'lib/jko_api.rb', line 47

def self.reset
  self.current_version_number = nil
end

.routes(context, &block) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/jko_api.rb', line 71

def self.routes(context, &block)
  context.scope(module: JkoApi.configuration.api_namespace, constraints: JkoApi::Constraints, defaults: {format: :json}) do
    JkoApi.versions(context, &block)
  end
  complete_setup(configuration.base_controller)
  context
end

.versioningObject



63
64
65
# File 'lib/jko_api.rb', line 63

def self.versioning
  @@versioning || raise('call `.versions` first')
end

.versions(context, &block) ⇒ Object



67
68
69
# File 'lib/jko_api.rb', line 67

def self.versions(context, &block)
  @@versioning = Versioning.new(context, &block)
end