Class: PactBroker::Configuration
- Inherits:
-
Object
- Object
- PactBroker::Configuration
- 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, :webhook_http_method_whitelist, :webhook_scheme_whitelist, :webhook_host_whitelist, :webhook_http_code_success, :base_equality_only_on_content_that_affects_verification_results, :seed_example_data, :badge_provider_mode, :warning_error_class_names, :base_url, :log_dir, :allow_missing_migration_files, :auto_migrate_db_data, :use_rack_protection, :metrics_sql_statement_timeout ]
Instance Attribute Summary collapse
-
#allow_missing_migration_files ⇒ Object
Returns the value of attribute allow_missing_migration_files.
-
#api_error_reporters ⇒ Object
readonly
Returns the value of attribute api_error_reporters.
-
#auto_migrate_db ⇒ Object
Returns the value of attribute auto_migrate_db.
-
#auto_migrate_db_data ⇒ Object
Returns the value of attribute auto_migrate_db_data.
-
#badge_provider_mode ⇒ Object
Returns the value of attribute badge_provider_mode.
-
#base_equality_only_on_content_that_affects_verification_results ⇒ Object
Returns the value of attribute base_equality_only_on_content_that_affects_verification_results.
-
#base_resource_class_factory ⇒ Object
Returns the value of attribute base_resource_class_factory.
-
#base_url ⇒ Object
Returns the value of attribute base_url.
-
#check_for_potential_duplicate_pacticipant_names ⇒ Object
Returns the value of attribute check_for_potential_duplicate_pacticipant_names.
-
#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.
-
#disable_ssl_verification ⇒ Object
Returns the value of attribute disable_ssl_verification.
-
#enable_diagnostic_endpoints ⇒ Object
Returns the value of attribute enable_diagnostic_endpoints.
-
#enable_public_badge_access ⇒ Object
Returns the value of attribute enable_public_badge_access.
-
#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.
-
#log_dir ⇒ Object
Returns the value of attribute log_dir.
-
#metrics_sql_statement_timeout ⇒ Object
Returns the value of attribute metrics_sql_statement_timeout.
-
#order_versions_by_date ⇒ Object
Returns the value of attribute order_versions_by_date.
-
#policy_builder ⇒ Object
Returns the value of attribute policy_builder.
-
#policy_scope_builder ⇒ Object
Returns the value of attribute policy_scope_builder.
-
#seed_example_data ⇒ Object
Returns the value of attribute seed_example_data.
-
#semver_formats ⇒ Object
Returns the value of attribute semver_formats.
-
#sha_generator ⇒ Object
Returns the value of attribute sha_generator.
-
#shields_io_base_url ⇒ Object
Returns the value of attribute shields_io_base_url.
-
#use_case_sensitive_resource_names ⇒ Object
Returns the value of attribute use_case_sensitive_resource_names.
-
#use_hal_browser ⇒ Object
Returns the value of attribute use_hal_browser.
-
#use_rack_protection ⇒ Object
Returns the value of attribute use_rack_protection.
-
#user_agent ⇒ Object
Returns the value of attribute user_agent.
-
#validate_database_connection_config ⇒ Object
Returns the value of attribute validate_database_connection_config.
-
#version_parser ⇒ Object
Returns the value of attribute version_parser.
-
#warning_error_class_names ⇒ Object
Returns the value of attribute warning_error_class_names.
-
#webhook_host_whitelist ⇒ Object
Returns the value of attribute webhook_host_whitelist.
-
#webhook_http_code_success ⇒ Object
Returns the value of attribute webhook_http_code_success.
-
#webhook_http_method_whitelist ⇒ Object
Returns the value of attribute webhook_http_method_whitelist.
-
#webhook_retry_schedule ⇒ Object
Returns the value of attribute webhook_retry_schedule.
-
#webhook_scheme_whitelist ⇒ Object
Returns the value of attribute webhook_scheme_whitelist.
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
- #base_urls ⇒ 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
- #save_to_database ⇒ Object
- #show_backtrace_in_error_response? ⇒ Boolean
- #show_webhook_response? ⇒ Boolean
- #warning_error_classes ⇒ Object
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
68 69 70 71 72 73 74 75 |
# File 'lib/pact_broker/configuration.rb', line 68 def initialize @before_resource_hook = ->(resource){} @after_resource_hook = ->(resource){} @authenticate_with_basic_auth = nil @authorize = nil @api_error_reporters = [] @semantic_logger = SemanticLogger["root"] end |
Instance Attribute Details
#allow_missing_migration_files ⇒ Object
Returns the value of attribute allow_missing_migration_files.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def allow_missing_migration_files @allow_missing_migration_files end |
#api_error_reporters ⇒ Object (readonly)
Returns the value of attribute api_error_reporters.
60 61 62 |
# File 'lib/pact_broker/configuration.rb', line 60 def api_error_reporters @api_error_reporters end |
#auto_migrate_db ⇒ Object
Returns the value of attribute auto_migrate_db.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def auto_migrate_db @auto_migrate_db end |
#auto_migrate_db_data ⇒ Object
Returns the value of attribute auto_migrate_db_data.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def auto_migrate_db_data @auto_migrate_db_data end |
#badge_provider_mode ⇒ Object
Returns the value of attribute badge_provider_mode.
56 57 58 |
# File 'lib/pact_broker/configuration.rb', line 56 def badge_provider_mode @badge_provider_mode end |
#base_equality_only_on_content_that_affects_verification_results ⇒ Object
Returns the value of attribute base_equality_only_on_content_that_affects_verification_results.
59 60 61 |
# File 'lib/pact_broker/configuration.rb', line 59 def base_equality_only_on_content_that_affects_verification_results @base_equality_only_on_content_that_affects_verification_results end |
#base_resource_class_factory ⇒ Object
Returns the value of attribute base_resource_class_factory.
62 63 64 |
# File 'lib/pact_broker/configuration.rb', line 62 def base_resource_class_factory @base_resource_class_factory end |
#base_url ⇒ Object
Returns the value of attribute base_url.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def base_url @base_url end |
#check_for_potential_duplicate_pacticipant_names ⇒ Object
Returns the value of attribute check_for_potential_duplicate_pacticipant_names.
51 52 53 |
# File 'lib/pact_broker/configuration.rb', line 51 def check_for_potential_duplicate_pacticipant_names @check_for_potential_duplicate_pacticipant_names end |
#content_security_policy ⇒ Object
Returns the value of attribute content_security_policy.
58 59 60 |
# File 'lib/pact_broker/configuration.rb', line 58 def content_security_policy @content_security_policy end |
#custom_logger ⇒ Object (readonly)
Returns the value of attribute custom_logger.
61 62 63 |
# File 'lib/pact_broker/configuration.rb', line 61 def custom_logger @custom_logger end |
#database_connection ⇒ Object
Returns the value of attribute database_connection.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def database_connection @database_connection end |
#disable_ssl_verification ⇒ Object
Returns the value of attribute disable_ssl_verification.
57 58 59 |
# File 'lib/pact_broker/configuration.rb', line 57 def disable_ssl_verification @disable_ssl_verification end |
#enable_diagnostic_endpoints ⇒ Object
Returns the value of attribute enable_diagnostic_endpoints.
48 49 50 |
# File 'lib/pact_broker/configuration.rb', line 48 def enable_diagnostic_endpoints @enable_diagnostic_endpoints end |
#enable_public_badge_access ⇒ Object
Returns the value of attribute enable_public_badge_access.
56 57 58 |
# File 'lib/pact_broker/configuration.rb', line 56 def enable_public_badge_access @enable_public_badge_access end |
#example_data_seeder ⇒ Object
Returns the value of attribute example_data_seeder.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 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.
58 59 60 |
# File 'lib/pact_broker/configuration.rb', line 58 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.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def html_pact_renderer @html_pact_renderer end |
#log_dir ⇒ Object
Returns the value of attribute log_dir.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def log_dir @log_dir end |
#metrics_sql_statement_timeout ⇒ Object
Returns the value of attribute metrics_sql_statement_timeout.
63 64 65 |
# File 'lib/pact_broker/configuration.rb', line 63 def metrics_sql_statement_timeout @metrics_sql_statement_timeout end |
#order_versions_by_date ⇒ Object
Returns the value of attribute order_versions_by_date.
49 50 51 |
# File 'lib/pact_broker/configuration.rb', line 49 def order_versions_by_date @order_versions_by_date end |
#policy_builder ⇒ Object
Returns the value of attribute policy_builder.
62 63 64 |
# File 'lib/pact_broker/configuration.rb', line 62 def policy_builder @policy_builder end |
#policy_scope_builder ⇒ Object
Returns the value of attribute policy_scope_builder.
62 63 64 |
# File 'lib/pact_broker/configuration.rb', line 62 def policy_scope_builder @policy_scope_builder end |
#seed_example_data ⇒ Object
Returns the value of attribute seed_example_data.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def seed_example_data @seed_example_data end |
#semver_formats ⇒ Object
Returns the value of attribute semver_formats.
55 56 57 |
# File 'lib/pact_broker/configuration.rb', line 55 def semver_formats @semver_formats end |
#sha_generator ⇒ Object
Returns the value of attribute sha_generator.
48 49 50 |
# File 'lib/pact_broker/configuration.rb', line 48 def sha_generator @sha_generator end |
#shields_io_base_url ⇒ Object
Returns the value of attribute shields_io_base_url.
56 57 58 |
# File 'lib/pact_broker/configuration.rb', line 56 def shields_io_base_url @shields_io_base_url end |
#use_case_sensitive_resource_names ⇒ Object
Returns the value of attribute use_case_sensitive_resource_names.
49 50 51 |
# File 'lib/pact_broker/configuration.rb', line 49 def use_case_sensitive_resource_names @use_case_sensitive_resource_names end |
#use_hal_browser ⇒ Object
Returns the value of attribute use_hal_browser.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def use_hal_browser @use_hal_browser end |
#use_rack_protection ⇒ Object
Returns the value of attribute use_rack_protection.
47 48 49 |
# File 'lib/pact_broker/configuration.rb', line 47 def use_rack_protection @use_rack_protection end |
#user_agent ⇒ Object
Returns the value of attribute user_agent.
53 54 55 |
# File 'lib/pact_broker/configuration.rb', line 53 def user_agent @user_agent end |
#validate_database_connection_config ⇒ Object
Returns the value of attribute validate_database_connection_config.
48 49 50 |
# File 'lib/pact_broker/configuration.rb', line 48 def validate_database_connection_config @validate_database_connection_config end |
#version_parser ⇒ Object
Returns the value of attribute version_parser.
48 49 50 |
# File 'lib/pact_broker/configuration.rb', line 48 def version_parser @version_parser end |
#warning_error_class_names ⇒ Object
Returns the value of attribute warning_error_class_names.
50 51 52 |
# File 'lib/pact_broker/configuration.rb', line 50 def warning_error_class_names @warning_error_class_names end |
#webhook_host_whitelist ⇒ Object
Returns the value of attribute webhook_host_whitelist.
54 55 56 |
# File 'lib/pact_broker/configuration.rb', line 54 def webhook_host_whitelist @webhook_host_whitelist end |
#webhook_http_code_success ⇒ Object
Returns the value of attribute webhook_http_code_success.
54 55 56 |
# File 'lib/pact_broker/configuration.rb', line 54 def webhook_http_code_success @webhook_http_code_success end |
#webhook_http_method_whitelist ⇒ Object
Returns the value of attribute webhook_http_method_whitelist.
54 55 56 |
# File 'lib/pact_broker/configuration.rb', line 54 def webhook_http_method_whitelist @webhook_http_method_whitelist end |
#webhook_retry_schedule ⇒ Object
Returns the value of attribute webhook_retry_schedule.
52 53 54 |
# File 'lib/pact_broker/configuration.rb', line 52 def webhook_retry_schedule @webhook_retry_schedule end |
#webhook_scheme_whitelist ⇒ Object
Returns the value of attribute webhook_scheme_whitelist.
54 55 56 |
# File 'lib/pact_broker/configuration.rb', line 54 def webhook_scheme_whitelist @webhook_scheme_whitelist end |
Class Method Details
.default_configuration ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/pact_broker/configuration.rb', line 77 def self.default_configuration require 'pact_broker/versions/parse_semantic_version' require 'pact_broker/pacts/generate_sha' config = Configuration.new config.log_dir = File.("./log") config.auto_migrate_db = true config.auto_migrate_db_data = true config.allow_missing_migration_files = false config.use_rack_protection = 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.badge_provider_mode = :proxy # other option is :redirect config.use_case_sensitive_resource_names = true config.html_pact_renderer = default_html_pact_render config.version_parser = PactBroker::Versions::ParseSemanticVersion config.sha_generator = PactBroker::Pacts::GenerateSha config.seed_example_data = true config.example_data_seeder = lambda do require 'pact_broker/db/seed_example_data' PactBroker::DB::SeedExampleData.call end config.user_agent = "Pact Broker v#{PactBroker::VERSION}" config.base_equality_only_on_content_that_affects_verification_results = true config.order_versions_by_date = true 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.webhook_http_method_whitelist = ['POST'] config.webhook_http_code_success = [200, 201, 202, 203, 204, 205, 206] config.webhook_scheme_whitelist = ['https'] config.webhook_host_whitelist = [] # 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.base_resource_class_factory = -> () { require 'pact_broker/api/resources/default_base_resource' PactBroker::Api::Resources::DefaultBaseResource } config.warning_error_class_names = ['Sequel::ForeignKeyConstraintViolation', 'PG::QueryCanceled'] config.metrics_sql_statement_timeout = 30 config end |
.default_html_pact_render ⇒ Object
152 153 154 155 156 157 |
# File 'lib/pact_broker/configuration.rb', line 152 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
211 212 213 214 215 216 217 218 219 |
# File 'lib/pact_broker/configuration.rb', line 211 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
203 204 205 206 207 208 209 |
# File 'lib/pact_broker/configuration.rb', line 203 def after_resource &block if block_given? @after_resource_hook = block else @after_resource_hook end end |
#authenticate(&block) ⇒ Object
167 168 169 170 171 172 173 |
# File 'lib/pact_broker/configuration.rb', line 167 def authenticate &block if block_given? @authenticate = block else @authenticate end end |
#authenticate_with_basic_auth(&block) ⇒ Object
175 176 177 178 179 180 181 |
# File 'lib/pact_broker/configuration.rb', line 175 def authenticate_with_basic_auth &block if block_given? @authenticate_with_basic_auth = block else @authenticate_with_basic_auth end end |
#authentication_configured? ⇒ Boolean
163 164 165 |
# File 'lib/pact_broker/configuration.rb', line 163 def authentication_configured? !!authenticate || !!authenticate_with_basic_auth end |
#authorization_configured? ⇒ Boolean
183 184 185 |
# File 'lib/pact_broker/configuration.rb', line 183 def !! end |
#authorize(&block) ⇒ Object
187 188 189 190 191 192 193 |
# File 'lib/pact_broker/configuration.rb', line 187 def &block if block_given? @authorize = block else @authorize end end |
#base_urls ⇒ Object
258 259 260 |
# File 'lib/pact_broker/configuration.rb', line 258 def base_urls base_url ? base_url.split(" ") : [] end |
#before_resource(&block) ⇒ Object
195 196 197 198 199 200 201 |
# File 'lib/pact_broker/configuration.rb', line 195 def before_resource &block if block_given? @before_resource_hook = block else @before_resource_hook end end |
#enable_badge_resources=(enable_badge_resources) ⇒ Object
225 226 227 228 |
# File 'lib/pact_broker/configuration.rb', line 225 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
236 237 238 239 240 |
# File 'lib/pact_broker/configuration.rb', line 236 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 |
#log_configuration ⇒ Object
146 147 148 149 150 |
# File 'lib/pact_broker/configuration.rb', line 146 def log_configuration SAVABLE_SETTING_NAMES.sort.each do | setting | logger.info "PactBroker.configuration.#{setting}=#{PactBroker.configuration.send(setting).inspect}" end end |
#logger ⇒ Object
138 139 140 |
# File 'lib/pact_broker/configuration.rb', line 138 def logger custom_logger || @semantic_logger end |
#logger=(logger) ⇒ Object
142 143 144 |
# File 'lib/pact_broker/configuration.rb', line 142 def logger= logger @custom_logger = logger end |
#save_to_database ⇒ Object
230 231 232 233 234 |
# File 'lib/pact_broker/configuration.rb', line 230 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 |
#show_backtrace_in_error_response? ⇒ Boolean
159 160 161 |
# File 'lib/pact_broker/configuration.rb', line 159 def show_backtrace_in_error_response? !!(ENV['RACK_ENV'] && ENV['RACK_ENV'].downcase != 'production') end |
#show_webhook_response? ⇒ Boolean
221 222 223 |
# File 'lib/pact_broker/configuration.rb', line 221 def show_webhook_response? webhook_host_whitelist.any? end |
#warning_error_classes ⇒ Object
262 263 264 265 266 267 268 269 270 271 |
# File 'lib/pact_broker/configuration.rb', line 262 def warning_error_classes warning_error_class_names.collect do | class_name | begin Object.const_get(class_name) rescue NameError => e logger.warn("Class #{class_name} couldn't be loaded as a warning error class (#{e.class} - #{e.}). Ignoring.") nil end end.compact end |