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.



49
50
51
52
53
54
55
56
57
58
# File 'lib/safire/errors.rb', line 49

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



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
74
75
76
77
78
79
80
81
# File 'lib/safire/errors.rb', line 45

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



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
74
75
76
77
78
79
80
81
# File 'lib/safire/errors.rb', line 45

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



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
74
75
76
77
78
79
80
81
# File 'lib/safire/errors.rb', line 45

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



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
74
75
76
77
78
79
80
81
# File 'lib/safire/errors.rb', line 45

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



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
74
75
76
77
78
79
80
81
# File 'lib/safire/errors.rb', line 45

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



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
74
75
76
77
78
79
80
81
# File 'lib/safire/errors.rb', line 45

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