class ZendeskAppsSupport::Validations::ValidationError

Constants

KEY_PREFIX

Attributes

data[R]
key[R]

Public Class Methods

from_hash(hash) click to toggle source
# File lib/zendesk_apps_support/validations/validation_error.rb, line 24
def from_hash(hash)
  fail DeserializationError.new(hash) unless hash['class']
  klass = constantize(hash['class'])
  fail DeserializationError.new(hash) unless klass <= self
  klass.vivify(hash)
end
from_json(json) click to toggle source

Turn a JSON string into a ValidationError.

# File lib/zendesk_apps_support/validations/validation_error.rb, line 16
def from_json(json)
  hash = JSON.load(json)
  fail DeserializationError.new(json) unless hash.is_a?(Hash)
  from_hash(hash)
rescue JSON::ParserError, NameError
  raise DeserializationError.new(json)
end
new(key, data = nil) click to toggle source
# File lib/zendesk_apps_support/validations/validation_error.rb, line 45
def initialize(key, data = nil)
  @key, @data = key, symbolize_keys(data || {})
end
vivify(hash) click to toggle source

Turn a Hash into a ValidationError. Used within from_json.

# File lib/zendesk_apps_support/validations/validation_error.rb, line 32
def vivify(hash)
  new(hash['key'], hash['data'])
end

Private Class Methods

constantize(klass) click to toggle source
# File lib/zendesk_apps_support/validations/validation_error.rb, line 38
def constantize(klass)
  klass.to_s.split('::').inject(Object) { |klass, part| klass.const_get(part) }
end

Public Instance Methods

as_json(*) click to toggle source
# File lib/zendesk_apps_support/validations/validation_error.rb, line 57
def as_json(*)
  {
    'class' => self.class.to_s,
    'key'   => key,
    'data'  => data
  }
end
to_json(*) click to toggle source
# File lib/zendesk_apps_support/validations/validation_error.rb, line 53
def to_json(*)
  JSON.generate(as_json)
end
to_s() click to toggle source
# File lib/zendesk_apps_support/validations/validation_error.rb, line 49
def to_s
  ZendeskAppsSupport::I18n.t("#{KEY_PREFIX}#{key}", data)
end

Private Instance Methods

symbolize_keys(hash) click to toggle source
# File lib/zendesk_apps_support/validations/validation_error.rb, line 67
def symbolize_keys(hash)
  hash.inject({}) do |result, (key, value)|
    result[key.to_sym] = value
    result
  end
end