Class: AnalyticsOps::Configuration::Validator
- Inherits:
-
Object
- Object
- AnalyticsOps::Configuration::Validator
- Includes:
- ExperimentalValidation, ReportingValidation
- Defined in:
- lib/analytics_ops/configuration/validator.rb,
lib/analytics_ops/configuration/validator_reporting.rb,
lib/analytics_ops/configuration/validator_experimental.rb
Overview
Reopens the strict validator to add opt-in feature validation.
Defined Under Namespace
Modules: ExperimentalValidation, ReportingValidation
Constant Summary collapse
- TOP_LEVEL_KEYS =
%w[version profiles].freeze
- PROFILE_KEYS =
%w[property_id streams retention google_signals key_events custom_dimensions custom_metrics manual_requirements labels reports health funnels bigquery governance].freeze
- REPORT_KEYS =
%w[ kind dimensions metrics date_ranges dimension_filter metric_filter order_bys limit ].freeze
- HEALTH_KEYS =
%w[ expected_events minimum_sessions traffic_drop_percent key_event_drop_percent unassigned_percent not_set_percent ].freeze
- GOVERNANCE_KEYS =
%w[ enhanced_measurement_required email_redaction_required query_parameter_redaction_required reporting_identity bigquery_link_required expected_channel_groups expected_calculated_metrics expected_event_create_rules expected_event_edit_rules experimental ].freeze
- BIGQUERY_KEYS =
%w[project_id dataset location maximum_bytes_billed experimental].freeze
- FUNNEL_KEYS =
%w[steps experimental].freeze
- FUNNEL_STEP_KEYS =
%w[name event_name].freeze
- STREAM_KEYS =
%w[stream_id default_uri enhanced_measurement].freeze
- ENHANCED_MEASUREMENT_KEYS =
%w[enabled experimental].freeze
- RETENTION_KEYS =
%w[event_data user_data reset_on_new_activity].freeze
- GOOGLE_SIGNALS_KEYS =
%w[state experimental].freeze
- DIMENSION_KEYS =
%w[parameter_name display_name description scope disallow_ads_personalization].freeze
- METRIC_KEYS =
%w[ parameter_name display_name description scope measurement_unit restricted_metric_types ].freeze
- RETENTION_VALUES =
%w[2_months 14_months 26_months 38_months 50_months].freeze
- USER_RETENTION_VALUES =
%w[2_months 14_months].freeze
- DIMENSION_SCOPES =
%w[event user item].freeze
- METRIC_UNITS =
%w[standard currency feet meters kilometers miles milliseconds seconds minutes hours].freeze
- RESTRICTED_METRIC_TYPES =
%w[cost_data revenue_data].freeze
- SECRET_KEY =
/ (?:\A|_) (?: credentials?|password|private_key|client_(?:id|secret)| access_token|refresh_token|api_key|service_account|oauth ) (?:\z|_) /ix- NAME =
/\A[a-z][a-z0-9_]*\z/i- DISPLAY_NAME =
/\A[A-Za-z][A-Za-z0-9_ ]{0,81}\z/- EVENT_NAME =
/\A[a-z][a-z0-9_]{0,39}\z/i- ID =
/\A\d{1,50}\z/
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(raw) ⇒ Validator
constructor
A new instance of Validator.
Constructor Details
#initialize(raw) ⇒ Validator
Returns a new instance of Validator.
57 58 59 |
# File 'lib/analytics_ops/configuration/validator.rb', line 57 def initialize(raw) @raw = raw end |
Instance Method Details
#call ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/analytics_ops/configuration/validator.rb', line 61 def call hash!(@raw, "$root") reject_secret_keys!(@raw) exact_keys!(@raw, TOP_LEVEL_KEYS, "$root") unless @raw["version"] == 1 raise UnsupportedVersionError, "Unsupported configuration version #{@raw["version"].inspect}; expected 1" end profiles = hash!(@raw["profiles"], "profiles") raise ConfigurationError, "profiles must contain at least one profile" if profiles.empty? normalized = profiles.to_h do |name, profile| validate_name!(name, "profile name") [name, validate_profile(name, profile)] end Document.new(version: 1, profiles: normalized) end |