Class: PactBroker::Configuration
- Inherits:
-
Object
- Object
- PactBroker::Configuration
- Extended by:
- Forwardable
- Defined in:
- lib/pact_broker/configuration.rb
Instance Attribute Summary collapse
-
#api_error_reporters ⇒ Object
Returns the value of attribute api_error_reporters.
-
#content_security_policy ⇒ Object
Returns the value of attribute content_security_policy.
-
#custom_logger ⇒ Object
readonly
Returns the value of attribute custom_logger.
-
#database_connection ⇒ Object
Returns the value of attribute database_connection.
-
#example_data_seeder ⇒ Object
Returns the value of attribute example_data_seeder.
-
#hal_browser_content_security_policy_overrides ⇒ Object
Returns the value of attribute hal_browser_content_security_policy_overrides.
-
#html_pact_renderer ⇒ Object
Returns the value of attribute html_pact_renderer.
-
#policy_builder ⇒ Object
Returns the value of attribute policy_builder.
-
#policy_scope_builder ⇒ Object
Returns the value of attribute policy_scope_builder.
-
#runtime_configuration ⇒ Object
Returns the value of attribute runtime_configuration.
-
#sha_generator ⇒ Object
Returns the value of attribute sha_generator.
-
#version_parser ⇒ Object
Returns the value of attribute version_parser.
Class Method Summary collapse
Instance Method Summary collapse
- #add_api_error_reporter(&block) ⇒ Object
- #after_resource(&block) ⇒ Object
- #authenticate(&block) ⇒ Object
- #authenticate_with_basic_auth(&block) ⇒ Object
- #authentication_configured? ⇒ Boolean
- #authorization_configured? ⇒ Boolean
- #authorize(&block) ⇒ Object
- #before_resource(&block) ⇒ Object
- #enable_badge_resources=(enable_badge_resources) ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #load_from_database! ⇒ Object
- #log_configuration ⇒ Object
- #logger ⇒ Object
- #logger=(logger) ⇒ Object
- #logger_from_runtime_configuration ⇒ Object
- #override_runtime_configuration!(overrides) ⇒ Object
- #show_backtrace_in_error_response? ⇒ Boolean
- #show_webhook_response? ⇒ Boolean
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
40 41 42 43 44 45 46 47 |
# File 'lib/pact_broker/configuration.rb', line 40 def initialize @runtime_configuration = PactBroker::Config::RuntimeConfiguration.new @before_resource_hook = ->(resource){} @after_resource_hook = ->(resource){} @authenticate_with_basic_auth = nil = nil @api_error_reporters = [] end |
Instance Attribute Details
#api_error_reporters ⇒ Object
Returns the value of attribute api_error_reporters.
32 33 34 |
# File 'lib/pact_broker/configuration.rb', line 32 def api_error_reporters @api_error_reporters end |
#content_security_policy ⇒ Object
Returns the value of attribute content_security_policy.
31 32 33 |
# File 'lib/pact_broker/configuration.rb', line 31 def content_security_policy @content_security_policy end |
#custom_logger ⇒ Object (readonly)
Returns the value of attribute custom_logger.
33 34 35 |
# File 'lib/pact_broker/configuration.rb', line 33 def custom_logger @custom_logger end |
#database_connection ⇒ Object
Returns the value of attribute database_connection.
28 29 30 |
# File 'lib/pact_broker/configuration.rb', line 28 def database_connection @database_connection end |
#example_data_seeder ⇒ Object
Returns the value of attribute example_data_seeder.
29 30 31 |
# File 'lib/pact_broker/configuration.rb', line 29 def example_data_seeder @example_data_seeder end |
#hal_browser_content_security_policy_overrides ⇒ Object
Returns the value of attribute hal_browser_content_security_policy_overrides.
31 32 33 |
# File 'lib/pact_broker/configuration.rb', line 31 def hal_browser_content_security_policy_overrides @hal_browser_content_security_policy_overrides end |
#html_pact_renderer ⇒ Object
Returns the value of attribute html_pact_renderer.
30 31 32 |
# File 'lib/pact_broker/configuration.rb', line 30 def html_pact_renderer @html_pact_renderer end |
#policy_builder ⇒ Object
Returns the value of attribute policy_builder.
34 35 36 |
# File 'lib/pact_broker/configuration.rb', line 34 def policy_builder @policy_builder end |
#policy_scope_builder ⇒ Object
Returns the value of attribute policy_scope_builder.
34 35 36 |
# File 'lib/pact_broker/configuration.rb', line 34 def policy_scope_builder @policy_scope_builder end |
#runtime_configuration ⇒ Object
Returns the value of attribute runtime_configuration.
38 39 40 |
# File 'lib/pact_broker/configuration.rb', line 38 def runtime_configuration @runtime_configuration end |
#sha_generator ⇒ Object
Returns the value of attribute sha_generator.
30 31 32 |
# File 'lib/pact_broker/configuration.rb', line 30 def sha_generator @sha_generator end |
#version_parser ⇒ Object
Returns the value of attribute version_parser.
30 31 32 |
# File 'lib/pact_broker/configuration.rb', line 30 def version_parser @version_parser end |
Class Method Details
.default_configuration ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/pact_broker/configuration.rb', line 49 def self.default_configuration require "pact_broker/versions/parse_semantic_version" require "pact_broker/pacts/generate_sha" config = Configuration.new config.html_pact_renderer = default_html_pact_render config.version_parser = PactBroker::Versions::ParseSemanticVersion config.sha_generator = PactBroker::Pacts::GenerateSha config.example_data_seeder = lambda do # Do the require in the lambda, not at the top of the file, because we need # the database connection to be made before loading any Sequel::Model classes. require "pact_broker/db/seed_example_data" PactBroker::DB::SeedExampleData.call end # TODO get rid of unsafe-inline config.content_security_policy = { script_src: "'self' 'unsafe-inline'", style_src: "'self' 'unsafe-inline'", img_src: "'self' data: #{URI(config.shields_io_base_url).host}", font_src: "'self' data:", base_uri: "'self'", frame_src: "'self'", frame_ancestors: "'self'" } config.hal_browser_content_security_policy_overrides = { script_src: "'self' 'unsafe-inline' 'unsafe-eval'", frame_ancestors: "'self'" } config.policy_builder = -> (object) { DefaultPolicy.new(nil, object) } config.policy_scope_builder = -> (scope) { scope } config end |
.default_html_pact_render ⇒ Object
131 132 133 134 135 136 |
# File 'lib/pact_broker/configuration.rb', line 131 def self.default_html_pact_render lambda { |pact, | require "pact_broker/api/renderers/html_pact_renderer" PactBroker::Api::Renderers::HtmlPactRenderer.call pact, } end |
Instance Method Details
#add_api_error_reporter(&block) ⇒ Object
190 191 192 193 194 195 196 197 198 |
# File 'lib/pact_broker/configuration.rb', line 190 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
182 183 184 185 186 187 188 |
# File 'lib/pact_broker/configuration.rb', line 182 def after_resource &block if block_given? @after_resource_hook = block else @after_resource_hook end end |
#authenticate(&block) ⇒ Object
146 147 148 149 150 151 152 |
# File 'lib/pact_broker/configuration.rb', line 146 def authenticate &block if block_given? @authenticate = block else @authenticate end end |
#authenticate_with_basic_auth(&block) ⇒ Object
154 155 156 157 158 159 160 |
# File 'lib/pact_broker/configuration.rb', line 154 def authenticate_with_basic_auth &block if block_given? @authenticate_with_basic_auth = block else @authenticate_with_basic_auth end end |
#authentication_configured? ⇒ Boolean
142 143 144 |
# File 'lib/pact_broker/configuration.rb', line 142 def authentication_configured? !!authenticate || !!authenticate_with_basic_auth end |
#authorization_configured? ⇒ Boolean
162 163 164 |
# File 'lib/pact_broker/configuration.rb', line 162 def !! end |
#authorize(&block) ⇒ Object
166 167 168 169 170 171 172 |
# File 'lib/pact_broker/configuration.rb', line 166 def &block if block_given? = block else end end |
#before_resource(&block) ⇒ Object
174 175 176 177 178 179 180 |
# File 'lib/pact_broker/configuration.rb', line 174 def before_resource &block if block_given? @before_resource_hook = block else @before_resource_hook end end |
#enable_badge_resources=(enable_badge_resources) ⇒ Object
204 205 206 207 |
# File 'lib/pact_broker/configuration.rb', line 204 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
209 210 211 212 213 |
# File 'lib/pact_broker/configuration.rb', line 209 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(runtime_configuration) end |
#log_configuration ⇒ Object
124 125 126 127 128 129 |
# File 'lib/pact_broker/configuration.rb', line 124 def log_configuration logger.info "------------------------------------------------------------------------" logger.info "PACT BROKER CONFIGURATION:" runtime_configuration.log_configuration(logger) logger.info "------------------------------------------------------------------------" end |
#logger ⇒ Object
112 113 114 |
# File 'lib/pact_broker/configuration.rb', line 112 def logger custom_logger || logger_from_runtime_configuration end |
#logger=(logger) ⇒ Object
116 117 118 119 120 121 122 |
# File 'lib/pact_broker/configuration.rb', line 116 def logger= logger if @default_appender && SemanticLogger.appenders.include?(@default_appender) SemanticLogger.remove_appender(@default_appender) @default_appender = nil end @custom_logger = logger end |
#logger_from_runtime_configuration ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/pact_broker/configuration.rb', line 98 def logger_from_runtime_configuration @logger_from_runtime_configuration ||= begin SemanticLogger.default_level = runtime_configuration.log_level if runtime_configuration.log_stream == :file path = runtime_configuration.log_dir + "/pact_broker.log" FileUtils.mkdir_p(runtime_configuration.log_dir) @default_appender = SemanticLogger.add_appender(file_name: path, formatter: runtime_configuration.log_format) else @default_appender = SemanticLogger.add_appender(io: $stdout, formatter: runtime_configuration.log_format) end @logger_from_runtime_configuration = SemanticLogger["pact-broker"] end end |
#override_runtime_configuration!(overrides) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/pact_broker/configuration.rb', line 83 def override_runtime_configuration!(overrides) new_runtime_configuration = runtime_configuration.dup valid_overrides, invalid_overrides = identify_valid_and_invalid_configuration_overrides(new_runtime_configuration, overrides) if logger.debug? logger.debug("Overriding runtime configuration", overrides: valid_overrides, ignoring: invalid_overrides) end valid_overrides.each do | key, value | override_or_merge_value(new_runtime_configuration, key, value) end self.runtime_configuration = new_runtime_configuration end |
#show_backtrace_in_error_response? ⇒ Boolean
138 139 140 |
# File 'lib/pact_broker/configuration.rb', line 138 def show_backtrace_in_error_response? !!(ENV["RACK_ENV"] && ENV["RACK_ENV"].downcase != "production") end |
#show_webhook_response? ⇒ Boolean
200 201 202 |
# File 'lib/pact_broker/configuration.rb', line 200 def show_webhook_response? webhook_host_whitelist&.any? end |