Class: PactBroker::Configuration

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

Constant Summary collapse

SAVABLE_SETTING_NAMES =
[
  :order_versions_by_date,
  :use_case_sensitive_resource_names,
  :enable_public_badge_access,
  :shields_io_base_url,
  :check_for_potential_duplicate_pacticipant_names,
  :webhook_retry_schedule,
  :semver_formats,
  :disable_ssl_verification
]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



40
41
42
43
44
45
46
# File 'lib/pact_broker/configuration.rb', line 40

def initialize
  @before_resource_hook = ->(resource){}
  @after_resource_hook = ->(resource){}
  @authenticate_with_basic_auth = nil
  @authorize = nil
  @api_error_reporters = []
end

Instance Attribute Details

#api_error_reportersObject (readonly)

Returns the value of attribute api_error_reporters.



37
38
39
# File 'lib/pact_broker/configuration.rb', line 37

def api_error_reporters
  @api_error_reporters
end

#auto_migrate_dbObject

Returns the value of attribute auto_migrate_db.



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

def auto_migrate_db
  @auto_migrate_db
end

#check_for_potential_duplicate_pacticipant_namesObject

Returns the value of attribute check_for_potential_duplicate_pacticipant_names.



32
33
34
# File 'lib/pact_broker/configuration.rb', line 32

def check_for_potential_duplicate_pacticipant_names
  @check_for_potential_duplicate_pacticipant_names
end

#database_connectionObject

Returns the value of attribute database_connection.



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

def database_connection
  @database_connection
end

#disable_ssl_verificationObject

Returns the value of attribute disable_ssl_verification.



36
37
38
# File 'lib/pact_broker/configuration.rb', line 36

def disable_ssl_verification
  @disable_ssl_verification
end

#enable_diagnostic_endpointsObject

Returns the value of attribute enable_diagnostic_endpoints.



30
31
32
# File 'lib/pact_broker/configuration.rb', line 30

def enable_diagnostic_endpoints
  @enable_diagnostic_endpoints
end

#enable_public_badge_accessObject

Returns the value of attribute enable_public_badge_access.



34
35
36
# File 'lib/pact_broker/configuration.rb', line 34

def enable_public_badge_access
  @enable_public_badge_access
end

#html_pact_rendererObject

Returns the value of attribute html_pact_renderer.



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

def html_pact_renderer
  @html_pact_renderer
end

#log_dirObject

Returns the value of attribute log_dir.



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

def log_dir
  @log_dir
end

#loggerObject



48
49
50
# File 'lib/pact_broker/configuration.rb', line 48

def logger
  @logger ||= create_logger log_path
end

#order_versions_by_dateObject

Returns the value of attribute order_versions_by_date.



31
32
33
# File 'lib/pact_broker/configuration.rb', line 31

def order_versions_by_date
  @order_versions_by_date
end

#semver_formatsObject

Returns the value of attribute semver_formats.



33
34
35
# File 'lib/pact_broker/configuration.rb', line 33

def semver_formats
  @semver_formats
end

#shields_io_base_urlObject

Returns the value of attribute shields_io_base_url.



34
35
36
# File 'lib/pact_broker/configuration.rb', line 34

def shields_io_base_url
  @shields_io_base_url
end

#use_case_sensitive_resource_namesObject

Returns the value of attribute use_case_sensitive_resource_names.



31
32
33
# File 'lib/pact_broker/configuration.rb', line 31

def use_case_sensitive_resource_names
  @use_case_sensitive_resource_names
end

#use_hal_browserObject

Returns the value of attribute use_hal_browser.



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

def use_hal_browser
  @use_hal_browser
end

#validate_database_connection_configObject

Returns the value of attribute validate_database_connection_config.



30
31
32
# File 'lib/pact_broker/configuration.rb', line 30

def validate_database_connection_config
  @validate_database_connection_config
end

#version_parserObject

Returns the value of attribute version_parser.



30
31
32
# File 'lib/pact_broker/configuration.rb', line 30

def version_parser
  @version_parser
end

#webhook_retry_scheduleObject

Returns the value of attribute webhook_retry_schedule.



35
36
37
# File 'lib/pact_broker/configuration.rb', line 35

def webhook_retry_schedule
  @webhook_retry_schedule
end

Class Method Details

.default_configurationObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/pact_broker/configuration.rb', line 52

def self.default_configuration
  require 'pact_broker/versions/parse_semantic_version'
  config = Configuration.new
  config.log_dir = File.expand_path("./log")
  config.auto_migrate_db = true
  config.use_hal_browser = true
  config.validate_database_connection_config = true
  config.enable_diagnostic_endpoints = true
  config.enable_public_badge_access = false # For security
  config.shields_io_base_url = "https://img.shields.io".freeze
  config.use_case_sensitive_resource_names = true
  config.html_pact_renderer = default_html_pact_render
  config.version_parser = PactBroker::Versions::ParseSemanticVersion
  # Not recommended to set this to true unless there is no way to
  # consistently extract an orderable object from the consumer application version number.
  config.order_versions_by_date = false
  config.semver_formats = ["%M.%m.%p%s%d", "%M.%m", "%M"]
  config.webhook_retry_schedule = [10, 60, 120, 300, 600, 1200] #10 sec, 1 min, 2 min, 5 min, 10 min, 20 min => 38 minutes
  config.check_for_potential_duplicate_pacticipant_names = true
  config.disable_ssl_verification = false
  config
end

.default_html_pact_renderObject



75
76
77
78
79
80
# File 'lib/pact_broker/configuration.rb', line 75

def self.default_html_pact_render
  lambda { |pact, options|
    require 'pact_broker/api/renderers/html_pact_renderer'
    PactBroker::Api::Renderers::HtmlPactRenderer.call pact, options
  }
end

Instance Method Details

#add_api_error_reporter(&block) ⇒ Object



130
131
132
133
134
135
136
137
138
# File 'lib/pact_broker/configuration.rb', line 130

def add_api_error_reporter &block
  if block_given?
    unless block.arity == 2
      raise ConfigurationError.new("api_error_notfifier block must accept two arguments, 'error' and 'options'")
    end
    @api_error_reporters << block
    nil
  end
end

#after_resource(&block) ⇒ Object



122
123
124
125
126
127
128
# File 'lib/pact_broker/configuration.rb', line 122

def after_resource &block
  if block_given?
    @after_resource_hook = block
  else
    @after_resource_hook
  end
end

#authenticate(&block) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/pact_broker/configuration.rb', line 86

def authenticate &block
  if block_given?
    @authenticate = block
  else
    @authenticate
  end
end

#authenticate_with_basic_auth(&block) ⇒ Object



94
95
96
97
98
99
100
# File 'lib/pact_broker/configuration.rb', line 94

def authenticate_with_basic_auth &block
  if block_given?
    @authenticate_with_basic_auth = block
  else
    @authenticate_with_basic_auth
  end
end

#authentication_configured?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/pact_broker/configuration.rb', line 82

def authentication_configured?
  !!authenticate || !!authenticate_with_basic_auth
end

#authorization_configured?Boolean

Returns:

  • (Boolean)


102
103
104
# File 'lib/pact_broker/configuration.rb', line 102

def authorization_configured?
  !!authorize
end

#authorize(&block) ⇒ Object



106
107
108
109
110
111
112
# File 'lib/pact_broker/configuration.rb', line 106

def authorize &block
  if block_given?
    @authorize = block
  else
    @authorize
  end
end

#base_urlObject



145
146
147
# File 'lib/pact_broker/configuration.rb', line 145

def base_url
  ENV['PACT_BROKER_BASE_URL']
end

#before_resource(&block) ⇒ Object



114
115
116
117
118
119
120
# File 'lib/pact_broker/configuration.rb', line 114

def before_resource &block
  if block_given?
    @before_resource_hook = block
  else
    @before_resource_hook
  end
end

#enable_badge_resources=(enable_badge_resources) ⇒ Object



140
141
142
143
# File 'lib/pact_broker/configuration.rb', line 140

def enable_badge_resources= enable_badge_resources
  puts "Pact Broker configuration property `enable_badge_resources` is deprecated. Please use `enable_public_badge_access`"
  self.enable_public_badge_access = enable_badge_resources
end

#load_from_database!Object



155
156
157
158
159
# File 'lib/pact_broker/configuration.rb', line 155

def load_from_database!
  # Can't require a Sequel::Model class before the connection has been set
  require 'pact_broker/config/load'
  PactBroker::Config::Load.call(self)
end

#save_to_databaseObject



149
150
151
152
153
# File 'lib/pact_broker/configuration.rb', line 149

def save_to_database
  # Can't require a Sequel::Model class before the connection has been set
  require 'pact_broker/config/save'
  PactBroker::Config::Save.call(self, SAVABLE_SETTING_NAMES)
end