Module: Halidate::PureRuby
- Defined in:
- lib/halidate/pure_ruby.rb
Instance Method Summary collapse
- #_embedded ⇒ Object
- #_links ⇒ Object
- #embedded_valid? ⇒ Boolean
- #has_links ⇒ Object
- #link_valid?(link) ⇒ Boolean
- #links_all_valid? ⇒ Boolean
- #links_has_self ⇒ Object
- #meets_minimal_JSON_representation? ⇒ Boolean
- #self_has_href ⇒ Object
- #template_valid?(link) ⇒ Boolean
- #validate_json_as_hal ⇒ Object
Instance Method Details
#_embedded ⇒ Object
74 75 76 |
# File 'lib/halidate/pure_ruby.rb', line 74 def @json['_embedded'] end |
#_links ⇒ Object
78 79 80 |
# File 'lib/halidate/pure_ruby.rb', line 78 def _links @json['_links'] end |
#embedded_valid? ⇒ Boolean
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/halidate/pure_ruby.rb', line 52 def return true if .nil? .all? do |resource_type, resource| case resource when Array resource.all?{|x| Halidator.new(x).valid?} else begin Halidator.new(resource).valid? rescue JSON::ParserError errors << "'#{resource}' is not a valid embedded object" return false end end end end |
#has_links ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'lib/halidate/pure_ruby.rb', line 82 def has_links if _links true else errors << '_links does not exist' false end end |
#link_valid?(link) ⇒ Boolean
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/halidate/pure_ruby.rb', line 20 def link_valid?(link) debug " #{link}" unless link['href'] errors << "no href in #{link}" return false end unless template_valid?(link) errors << "invalid template for #{link}" return false end true end |
#links_all_valid? ⇒ Boolean
7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/halidate/pure_ruby.rb', line 7 def links_all_valid? _links.all? do |k, v| debug "\n\n", k, v case v when Array # is an array of links v.all?{|x| link_valid?(x)} else link_valid?(v) end end end |
#links_has_self ⇒ Object
91 92 93 94 95 96 97 98 |
# File 'lib/halidate/pure_ruby.rb', line 91 def links_has_self if _links['self'] true else errors << "no self in #{_links.inspect}" false end end |
#meets_minimal_JSON_representation? ⇒ Boolean
70 71 72 |
# File 'lib/halidate/pure_ruby.rb', line 70 def meets_minimal_JSON_representation? has_links && links_has_self && self_has_href end |
#self_has_href ⇒ Object
100 101 102 103 104 105 106 107 |
# File 'lib/halidate/pure_ruby.rb', line 100 def self_has_href if _links['self']['href'] true else errors << "no href in #{_links['self']}" false end end |
#template_valid?(link) ⇒ Boolean
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/halidate/pure_ruby.rb', line 34 def template_valid?(link) return true unless link['templated'] == true pairs = 0 res = link['href'].each_char.all? do |c| if '{' == c pairs += 1 pairs == 1 elsif '}' == c pairs -= 1 pairs == 0 else true end end res && (pairs == 0) && link['href'].include?('{') end |
#validate_json_as_hal ⇒ Object
3 4 5 |
# File 'lib/halidate/pure_ruby.rb', line 3 def validate_json_as_hal meets_minimal_JSON_representation? && links_all_valid? && end |