Add content validation endpoint
What does this MR do and why?
In JH we need to integrate with the Content Validation Service, here add a configurable content validation API endpoint.
This MR:
- Add content_validation_endpoint_enabledto allow admin enable content validation feature
- Add a configurable content_validation_endpoint_urlthat must be a valid URL to application settings
- Add encrypted_content_validation_api_keyandencrypted_content_validation_api_key_ivso that Content Validation can be provided a token which it can use to authenticate its requests
See related JH epic
See related JH issue
See related JH Merge request
Database migration output
$ bundle exec rake db:migrate:up VERSION=20211013014228                                           
== 20211013014228 AddContentValidationEndpointToApplicationSettings: migrating
-- add_column(:application_settings, :content_validation_endpoint_url, :text, {:comment=>"JiHu-specific column"})
   -> 0.0041s
-- transaction_open?()
   -> 0.0000s
-- current_schema()
   -> 0.0003s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE application_settings\nADD CONSTRAINT check_5a84c3ffdc\nCHECK ( char_length(content_validation_endpoint_url) <= 255 )\nNOT VALID;\n")
   -> 0.0019s
-- current_schema()
   -> 0.0001s
-- execute("SET statement_timeout TO 0")
   -> 0.0002s
-- execute("ALTER TABLE application_settings VALIDATE CONSTRAINT check_5a84c3ffdc;")
   -> 0.0008s
-- execute("RESET statement_timeout")
   -> 0.0002s
-- add_column(:application_settings, :encrypted_content_validation_api_key, :binary, {:comment=>"JiHu-specific column"})
   -> 0.0011s
-- add_column(:application_settings, :encrypted_content_validation_api_key_iv, :binary, {:comment=>"JiHu-specific column"})
   -> 0.0012s
-- add_column(:application_settings, :content_validation_endpoint_enabled, :boolean, {:null=>false, :default=>false, :comment=>"JiHu-specific column"})
   -> 0.0041s
== 20211013014228 AddContentValidationEndpointToApplicationSettings: migrated (0.0244s)$ bundle exec rake db:migrate:down VERSION=20211013014228
== 20211013014228 AddContentValidationEndpointToApplicationSettings: reverting
-- remove_column(:application_settings, :content_validation_endpoint_url)
   -> 0.0074s
-- remove_column(:application_settings, :encrypted_content_validation_api_key)
   -> 0.0026s
-- remove_column(:application_settings, :encrypted_content_validation_api_key_iv)
   -> 0.0025s
-- remove_column(:application_settings, :content_validation_endpoint_enabled)
   -> 0.0018s
== 20211013014228 AddContentValidationEndpointToApplicationSettings: reverted (0.0121s)Edited  by Dave Liu