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 @authorize = 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
141 142 143 144 145 146 |
# File 'lib/pact_broker/configuration.rb', line 141 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
200 201 202 203 204 205 206 207 208 |
# File 'lib/pact_broker/configuration.rb', line 200 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
192 193 194 195 196 197 198 |
# File 'lib/pact_broker/configuration.rb', line 192 def after_resource &block if block_given? @after_resource_hook = block else @after_resource_hook end end |
#authenticate(&block) ⇒ Object
156 157 158 159 160 161 162 |
# File 'lib/pact_broker/configuration.rb', line 156 def authenticate &block if block_given? @authenticate = block else @authenticate end end |
#authenticate_with_basic_auth(&block) ⇒ Object
164 165 166 167 168 169 170 |
# File 'lib/pact_broker/configuration.rb', line 164 def authenticate_with_basic_auth &block if block_given? @authenticate_with_basic_auth = block else @authenticate_with_basic_auth end end |
#authentication_configured? ⇒ Boolean
152 153 154 |
# File 'lib/pact_broker/configuration.rb', line 152 def authentication_configured? !!authenticate || !!authenticate_with_basic_auth end |
#authorization_configured? ⇒ Boolean
172 173 174 |
# File 'lib/pact_broker/configuration.rb', line 172 def !! end |
#authorize(&block) ⇒ Object
176 177 178 179 180 181 182 |
# File 'lib/pact_broker/configuration.rb', line 176 def &block if block_given? @authorize = block else @authorize end end |
#before_resource(&block) ⇒ Object
184 185 186 187 188 189 190 |
# File 'lib/pact_broker/configuration.rb', line 184 def before_resource &block if block_given? @before_resource_hook = block else @before_resource_hook end end |
#enable_badge_resources=(enable_badge_resources) ⇒ Object
214 215 216 217 |
# File 'lib/pact_broker/configuration.rb', line 214 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
219 220 221 222 223 |
# File 'lib/pact_broker/configuration.rb', line 219 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
134 135 136 137 138 139 |
# File 'lib/pact_broker/configuration.rb', line 134 def log_configuration logger.info "------------------------------------------------------------------------" logger.info "PACT BROKER CONFIGURATION:" runtime_configuration.log_configuration(logger) logger.info "------------------------------------------------------------------------" end |
#logger ⇒ Object
122 123 124 |
# File 'lib/pact_broker/configuration.rb', line 122 def logger custom_logger || logger_from_runtime_configuration end |
#logger=(logger) ⇒ Object
126 127 128 129 130 131 132 |
# File 'lib/pact_broker/configuration.rb', line 126 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
107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/pact_broker/configuration.rb', line 107 def logger_from_runtime_configuration @logger_from_runtime_configuration ||= begin runtime_configuration.validate_logging_attributes! 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 97 98 99 100 101 102 103 104 105 |
# File 'lib/pact_broker/configuration.rb', line 83 def override_runtime_configuration!(overrides) new_runtime_configuration = runtime_configuration.dup valid_overrides = {} invalid_overrides = {} overrides.each do | key, value | if new_runtime_configuration.respond_to?("#{key}=") valid_overrides[key] = Anyway::AutoCast.call(value) else invalid_overrides[key] = Anyway::AutoCast.call(value) end end if logger.debug? logger.debug("Overridding runtime configuration", payload: { overrides: valid_overrides, ignoring: invalid_overrides }) end valid_overrides.each do | key, value | new_runtime_configuration.public_send("#{key}=", value) end self.runtime_configuration = new_runtime_configuration end |
#show_backtrace_in_error_response? ⇒ Boolean
148 149 150 |
# File 'lib/pact_broker/configuration.rb', line 148 def show_backtrace_in_error_response? !!(ENV["RACK_ENV"] && ENV["RACK_ENV"].downcase != "production") end |
#show_webhook_response? ⇒ Boolean
210 211 212 |
# File 'lib/pact_broker/configuration.rb', line 210 def show_webhook_response? webhook_host_whitelist&.any? end |