Exception: Safire::Errors::ConfigurationError

Inherits:
Error
  • Object
show all
Defined in:
lib/safire/errors.rb

Overview

Raised when client configuration is missing or invalid.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil, valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: []) ⇒ ConfigurationError

Returns a new instance of ConfigurationError.



41
42
43
44
45
46
47
48
49
50
# File 'lib/safire/errors.rb', line 41

def initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil,
               valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: [])
  @missing_attributes     = Array(missing_attributes)
  @invalid_attribute      = invalid_attribute
  @invalid_value          = invalid_value
  @valid_values           = valid_values
  @invalid_uri_attributes = Array(invalid_uri_attributes)
  @non_https_uri_attributes = Array(non_https_uri_attributes)
  super(build_message)
end

Instance Attribute Details

#invalid_attributeSymbol? (readonly)

Returns attribute whose value is not acceptable.

Returns:

  • (Symbol, nil)

    attribute whose value is not acceptable



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/safire/errors.rb', line 37

class ConfigurationError < Error
  attr_reader :missing_attributes, :invalid_attribute, :invalid_value, :valid_values,
              :invalid_uri_attributes, :non_https_uri_attributes

  def initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil,
                 valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: [])
    @missing_attributes     = Array(missing_attributes)
    @invalid_attribute      = invalid_attribute
    @invalid_value          = invalid_value
    @valid_values           = valid_values
    @invalid_uri_attributes = Array(invalid_uri_attributes)
    @non_https_uri_attributes = Array(non_https_uri_attributes)
    super(build_message)
  end

  private

  def build_message
    if @missing_attributes.any?
      "Configuration missing: #{@missing_attributes.join(', ')}"
    elsif @invalid_attribute
      "Invalid #{@invalid_attribute}: #{@invalid_value.inspect}; valid: #{@valid_values&.join(', ')}"
    else
      build_uri_message
    end
  end

  def build_uri_message
    parts = []
    parts << "Configuration has invalid URIs: #{@invalid_uri_attributes.join(', ')}" if @invalid_uri_attributes.any?
    if @non_https_uri_attributes.any?
      parts << "Configuration requires HTTPS for: #{@non_https_uri_attributes.join(', ')} " \
               '(SMART App Launch 2.2.0 requires TLS; HTTP is only allowed for localhost)'
    end
    parts.any? ? parts.join('. ') : 'Configuration error'
  end
end

#invalid_uri_attributesArray<Symbol> (readonly)

Returns attributes whose URIs are malformed.

Returns:

  • (Array<Symbol>)

    attributes whose URIs are malformed



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/safire/errors.rb', line 37

class ConfigurationError < Error
  attr_reader :missing_attributes, :invalid_attribute, :invalid_value, :valid_values,
              :invalid_uri_attributes, :non_https_uri_attributes

  def initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil,
                 valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: [])
    @missing_attributes     = Array(missing_attributes)
    @invalid_attribute      = invalid_attribute
    @invalid_value          = invalid_value
    @valid_values           = valid_values
    @invalid_uri_attributes = Array(invalid_uri_attributes)
    @non_https_uri_attributes = Array(non_https_uri_attributes)
    super(build_message)
  end

  private

  def build_message
    if @missing_attributes.any?
      "Configuration missing: #{@missing_attributes.join(', ')}"
    elsif @invalid_attribute
      "Invalid #{@invalid_attribute}: #{@invalid_value.inspect}; valid: #{@valid_values&.join(', ')}"
    else
      build_uri_message
    end
  end

  def build_uri_message
    parts = []
    parts << "Configuration has invalid URIs: #{@invalid_uri_attributes.join(', ')}" if @invalid_uri_attributes.any?
    if @non_https_uri_attributes.any?
      parts << "Configuration requires HTTPS for: #{@non_https_uri_attributes.join(', ')} " \
               '(SMART App Launch 2.2.0 requires TLS; HTTP is only allowed for localhost)'
    end
    parts.any? ? parts.join('. ') : 'Configuration error'
  end
end

#invalid_valueObject? (readonly)

Returns the offending value.

Returns:

  • (Object, nil)

    the offending value



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/safire/errors.rb', line 37

class ConfigurationError < Error
  attr_reader :missing_attributes, :invalid_attribute, :invalid_value, :valid_values,
              :invalid_uri_attributes, :non_https_uri_attributes

  def initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil,
                 valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: [])
    @missing_attributes     = Array(missing_attributes)
    @invalid_attribute      = invalid_attribute
    @invalid_value          = invalid_value
    @valid_values           = valid_values
    @invalid_uri_attributes = Array(invalid_uri_attributes)
    @non_https_uri_attributes = Array(non_https_uri_attributes)
    super(build_message)
  end

  private

  def build_message
    if @missing_attributes.any?
      "Configuration missing: #{@missing_attributes.join(', ')}"
    elsif @invalid_attribute
      "Invalid #{@invalid_attribute}: #{@invalid_value.inspect}; valid: #{@valid_values&.join(', ')}"
    else
      build_uri_message
    end
  end

  def build_uri_message
    parts = []
    parts << "Configuration has invalid URIs: #{@invalid_uri_attributes.join(', ')}" if @invalid_uri_attributes.any?
    if @non_https_uri_attributes.any?
      parts << "Configuration requires HTTPS for: #{@non_https_uri_attributes.join(', ')} " \
               '(SMART App Launch 2.2.0 requires TLS; HTTP is only allowed for localhost)'
    end
    parts.any? ? parts.join('. ') : 'Configuration error'
  end
end

#missing_attributesArray<Symbol> (readonly)

Returns required attributes that are absent.

Returns:

  • (Array<Symbol>)

    required attributes that are absent



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/safire/errors.rb', line 37

class ConfigurationError < Error
  attr_reader :missing_attributes, :invalid_attribute, :invalid_value, :valid_values,
              :invalid_uri_attributes, :non_https_uri_attributes

  def initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil,
                 valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: [])
    @missing_attributes     = Array(missing_attributes)
    @invalid_attribute      = invalid_attribute
    @invalid_value          = invalid_value
    @valid_values           = valid_values
    @invalid_uri_attributes = Array(invalid_uri_attributes)
    @non_https_uri_attributes = Array(non_https_uri_attributes)
    super(build_message)
  end

  private

  def build_message
    if @missing_attributes.any?
      "Configuration missing: #{@missing_attributes.join(', ')}"
    elsif @invalid_attribute
      "Invalid #{@invalid_attribute}: #{@invalid_value.inspect}; valid: #{@valid_values&.join(', ')}"
    else
      build_uri_message
    end
  end

  def build_uri_message
    parts = []
    parts << "Configuration has invalid URIs: #{@invalid_uri_attributes.join(', ')}" if @invalid_uri_attributes.any?
    if @non_https_uri_attributes.any?
      parts << "Configuration requires HTTPS for: #{@non_https_uri_attributes.join(', ')} " \
               '(SMART App Launch 2.2.0 requires TLS; HTTP is only allowed for localhost)'
    end
    parts.any? ? parts.join('. ') : 'Configuration error'
  end
end

#non_https_uri_attributesArray<Symbol> (readonly)

Returns attributes whose URIs use HTTP on a non-localhost host.

Returns:

  • (Array<Symbol>)

    attributes whose URIs use HTTP on a non-localhost host



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/safire/errors.rb', line 37

class ConfigurationError < Error
  attr_reader :missing_attributes, :invalid_attribute, :invalid_value, :valid_values,
              :invalid_uri_attributes, :non_https_uri_attributes

  def initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil,
                 valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: [])
    @missing_attributes     = Array(missing_attributes)
    @invalid_attribute      = invalid_attribute
    @invalid_value          = invalid_value
    @valid_values           = valid_values
    @invalid_uri_attributes = Array(invalid_uri_attributes)
    @non_https_uri_attributes = Array(non_https_uri_attributes)
    super(build_message)
  end

  private

  def build_message
    if @missing_attributes.any?
      "Configuration missing: #{@missing_attributes.join(', ')}"
    elsif @invalid_attribute
      "Invalid #{@invalid_attribute}: #{@invalid_value.inspect}; valid: #{@valid_values&.join(', ')}"
    else
      build_uri_message
    end
  end

  def build_uri_message
    parts = []
    parts << "Configuration has invalid URIs: #{@invalid_uri_attributes.join(', ')}" if @invalid_uri_attributes.any?
    if @non_https_uri_attributes.any?
      parts << "Configuration requires HTTPS for: #{@non_https_uri_attributes.join(', ')} " \
               '(SMART App Launch 2.2.0 requires TLS; HTTP is only allowed for localhost)'
    end
    parts.any? ? parts.join('. ') : 'Configuration error'
  end
end

#valid_valuesArray? (readonly)

Returns acceptable values for the attribute.

Returns:

  • (Array, nil)

    acceptable values for the attribute



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/safire/errors.rb', line 37

class ConfigurationError < Error
  attr_reader :missing_attributes, :invalid_attribute, :invalid_value, :valid_values,
              :invalid_uri_attributes, :non_https_uri_attributes

  def initialize(missing_attributes: [], invalid_attribute: nil, invalid_value: nil,
                 valid_values: nil, invalid_uri_attributes: [], non_https_uri_attributes: [])
    @missing_attributes     = Array(missing_attributes)
    @invalid_attribute      = invalid_attribute
    @invalid_value          = invalid_value
    @valid_values           = valid_values
    @invalid_uri_attributes = Array(invalid_uri_attributes)
    @non_https_uri_attributes = Array(non_https_uri_attributes)
    super(build_message)
  end

  private

  def build_message
    if @missing_attributes.any?
      "Configuration missing: #{@missing_attributes.join(', ')}"
    elsif @invalid_attribute
      "Invalid #{@invalid_attribute}: #{@invalid_value.inspect}; valid: #{@valid_values&.join(', ')}"
    else
      build_uri_message
    end
  end

  def build_uri_message
    parts = []
    parts << "Configuration has invalid URIs: #{@invalid_uri_attributes.join(', ')}" if @invalid_uri_attributes.any?
    if @non_https_uri_attributes.any?
      parts << "Configuration requires HTTPS for: #{@non_https_uri_attributes.join(', ')} " \
               '(SMART App Launch 2.2.0 requires TLS; HTTP is only allowed for localhost)'
    end
    parts.any? ? parts.join('. ') : 'Configuration error'
  end
end