Class: EndpointFlux::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/endpoint_flux/config.rb,
lib/endpoint_flux/config/middleware.rb,
lib/endpoint_flux/config/interceptor.rb,
lib/endpoint_flux/config/rescue_from.rb

Defined Under Namespace

Classes: Interceptor, Middleware, RescueFrom

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



9
10
11
12
13
14
15
# File 'lib/endpoint_flux/config.rb', line 9

def initialize
  @flow                   = %i[authenticator authorizator validator policy process decorator]
  @default_middlewares    = {}
  @rescue_from            = EndpointFlux::Config::RescueFrom.new
  @endpoints_namespace    = 'endpoints'
  @middlewares_namespaces = ['endpoint_flux/middlewares']
end

Instance Attribute Details

#middlewares_namespacesObject

Returns the value of attribute middlewares_namespaces.



7
8
9
# File 'lib/endpoint_flux/config.rb', line 7

def middlewares_namespaces
  @middlewares_namespaces
end

Instance Method Details

#default_middlewares(name = nil, klass_name = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/endpoint_flux/config.rb', line 29

def default_middlewares(name = nil, klass_name = nil)
  if name
    @default_middlewares[name] ||= []

    if klass_name
      klass = fetch_middleware_class!(name.to_s, klass_name.to_s)
      @default_middlewares[name] << EndpointFlux::Config::Middleware.new(klass)
    end

    return @default_middlewares[name]
  end

  @default_middlewares
end

#endpoints_namespace(name = nil) ⇒ Object



59
60
61
62
63
# File 'lib/endpoint_flux/config.rb', line 59

def endpoints_namespace(name = nil)
  @endpoints_namespace = name if name

  @endpoints_namespace
end

#fetch_middleware_class(name, klass_name) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/endpoint_flux/config.rb', line 73

def fetch_middleware_class(name, klass_name)
  middlewares_namespaces.each do |namespace|
    klass = EndpointFlux::ClassLoader.load_class(
      [namespace, name.to_s, klass_name.to_s].compact.join('/')
    )

    return klass if klass
  end

  nil
end

#fetch_middleware_class!(name, klass_name) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/endpoint_flux/config.rb', line 65

def fetch_middleware_class!(name, klass_name)
  klass = fetch_middleware_class(name, klass_name)

  raise "The [#{name}][#{klass_name}] should be a string representing a class" unless klass

  klass
end

#flow(new_flow = nil) ⇒ Object



23
24
25
26
27
# File 'lib/endpoint_flux/config.rb', line 23

def flow(new_flow = nil)
  @flow = new_flow if new_flow

  @flow
end

#interceptor(&block) ⇒ Object



17
18
19
20
21
# File 'lib/endpoint_flux/config.rb', line 17

def interceptor(&block)
  @interceptor ||= EndpointFlux::Config::Interceptor.new
  @interceptor.add(&block) if block_given?
  @interceptor
end

#rescue_from(klass_names = nil, &block) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/endpoint_flux/config.rb', line 44

def rescue_from(klass_names = nil, &block)
  if klass_names
    if klass_names.respond_to?(:to_ary)
      klass_names.to_ary || [klass_names]
    else
      [klass_names]
    end.each do |klass_name|
      klass = EndpointFlux::ClassLoader.load_class!(klass_name)
      @rescue_from.add(klass, &block)
    end
  end

  @rescue_from
end