12345678910111213141516171819202122232425262728293031323334353637 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- module Gql::Mutations
- class System::Import::Configuration < BaseMutation
- description 'Verify and apply third-party system import configuration'
- argument :configuration, Gql::Types::Input::SystemImportConfigurationInputType, description: 'Configuration to validate'
- field :success, Boolean, null: false, description: 'Is the configuration valid?'
- def self.authorize(...)
- true
- end
- def resolve(configuration:)
- klass_name = "Service::System::Import::Apply#{configuration.source.camelize}Configuration"
- klass = klass_name.constantize
- begin
- klass.new(**configuration.to_h.except(:source)).execute
- rescue "#{klass_name}::UnreachableError".constantize, "#{klass_name}::TLSError".constantize => e
- return { success: false }.merge(error_response({ message: e.message, field: 'url' }))
- rescue "#{klass_name}::InaccessibleError".constantize => e
- errors = []
- %i[secret username].each do |field|
- next if !configuration.key?(field)
- errors << { message: e.message, field: field.to_s }
- end
- return { success: false, errors: errors }
- end
- { success: true }
- end
- end
- end
|