Class: Interpol::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/interpol/configuration.rb

Overview

Public: Defines interpol configuration.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ Configuration

Returns a new instance of Configuration.

Yields:

  • (_self)

Yield Parameters:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/interpol/configuration.rb', line 31

def initialize
  api_version do
    raise ConfigurationError, "api_version has not been configured"
  end

  validate_if do |env, status, headers, body|
    headers['Content-Type'].to_s.include?('json') &&
    (200..299).cover?(status) && status != 204 # No Content
  end

  on_unavailable_request_version do |requested, available|
    message = "The requested API version is invalid. " +
              "Requested: #{requested}. " +
              "Available: #{available}"
    halt 406, JSON.dump(error: message)
  end

  self.endpoint_definition_files = []
  self.documentation_title = "API Documentation Provided by Interpol"
  yield self if block_given?
end

Instance Attribute Details

#documentation_titleObject

Returns the value of attribute documentation_title.



29
30
31
# File 'lib/interpol/configuration.rb', line 29

def documentation_title
  @documentation_title
end

#endpoint_definition_filesObject

Returns the value of attribute endpoint_definition_files.



28
29
30
# File 'lib/interpol/configuration.rb', line 28

def endpoint_definition_files
  @endpoint_definition_files
end

#endpointsObject

Returns the value of attribute endpoints.



28
29
30
# File 'lib/interpol/configuration.rb', line 28

def endpoints
  @endpoints
end

#validation_modeObject

Returns the value of attribute validation_mode.



29
30
31
# File 'lib/interpol/configuration.rb', line 29

def validation_mode
  @validation_mode
end

Class Method Details

.defaultObject



93
94
95
# File 'lib/interpol/configuration.rb', line 93

def self.default
  @default ||= Configuration.new
end

Instance Method Details

#api_version(version = nil, &block) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/interpol/configuration.rb', line 64

def api_version(version=nil, &block)
  if [version, block].compact.size.even?
    raise ConfigurationError.new("api_version requires a static version " +
                                 "or a dynamic block, but not both")
  end

  @api_version_block = block || lambda { |*a| version }
end

#api_version_for(rack_env, endpoint = nil) ⇒ Object



73
74
75
# File 'lib/interpol/configuration.rb', line 73

def api_version_for(rack_env, endpoint=nil)
  @api_version_block.call(rack_env, endpoint).to_s
end

#customized_duplicate(&block) ⇒ Object



97
98
99
100
# File 'lib/interpol/configuration.rb', line 97

def customized_duplicate(&block)
  block ||= lambda { |c| }
  dup.tap(&block)
end

#on_unavailable_request_version(&block) ⇒ Object



85
86
87
# File 'lib/interpol/configuration.rb', line 85

def on_unavailable_request_version(&block)
  @unavailable_request_version_block = block
end

#request_version_unavailable(execution_context, *args) ⇒ Object



89
90
91
# File 'lib/interpol/configuration.rb', line 89

def request_version_unavailable(execution_context, *args)
  execution_context.instance_exec(*args, &@unavailable_request_version_block)
end

#validate?(*args) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/interpol/configuration.rb', line 81

def validate?(*args)
  @validate_if_block.call(*args)
end

#validate_if(&block) ⇒ Object



77
78
79
# File 'lib/interpol/configuration.rb', line 77

def validate_if(&block)
  @validate_if_block = block
end