Class: WebIde::Settings::ExtensionMarketplaceValidator

Inherits:
Object
  • Object
show all
Includes:
Messages
Defined in:
lib/web_ide/settings/extension_marketplace_validator.rb

Constant Summary

Constants included from Messages

Messages::SettingsCurrentSettingsReadFailed, Messages::SettingsEnvironmentVariableOverrideFailed, Messages::SettingsGetSuccessful, Messages::SettingsVscodeExtensionMarketplaceMetadataValidationFailed, Messages::SettingsVscodeExtensionMarketplaceValidationFailed

Class Method Summary collapse

Class Method Details

.validate(context) ⇒ Gitlab::Fp::Result

Parameters:

  • context (Hash)

Returns:



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/web_ide/settings/extension_marketplace_validator.rb', line 10

def self.validate(context)
  unless context.fetch(:requested_setting_names).intersect?([:vscode_extension_marketplace])
    return Gitlab::Fp::Result.ok(context)
  end

  context => { settings: Hash => settings }
  settings => { vscode_extension_marketplace: Hash => vscode_extension_marketplace }

  # NOTE: We deep_stringify_keys here, so we can still pass keys as symbols during tests.
  #       This is the only place where keys need to be strings, because of the JSON schema
  #       validation, all other places we convert and work with the keys as symbols.
  errors = validate_against_schema(vscode_extension_marketplace.deep_stringify_keys)

  if errors.none?
    Gitlab::Fp::Result.ok(context)
  else
    Gitlab::Fp::Result.err(SettingsVscodeExtensionMarketplaceValidationFailed.new(details: errors.join(". ")))
  end
end