Class: Interpreter
- Inherits:
-
Object
- Object
- Interpreter
- Defined in:
- lib/soaspec/interpreter.rb
Overview
Help interpret the general type of a particular object
Class Attribute Summary collapse
-
.json_errors ⇒ Error
JSON Errors found in interpreting response.
-
.xml_errors ⇒ Error
XML Errors found in interpreting response.
Class Method Summary collapse
-
.diagnose_error ⇒ String
Description of error.
-
.html? ⇒ Boolean
Whether valid HTML.
-
.json? ⇒ Boolean
Whether valid JSON.
-
.looks_like_json? ⇒ Boolean
Whether response has bracket like syntax similar to JSON.
-
.looks_like_xml? ⇒ Boolean
Whether response has tag like syntax similar to XML.
-
.response_type_for(response) ⇒ Symbol
Type of provided response.
-
.xml? ⇒ Boolean
Whether valid XML.
Class Attribute Details
.json_errors ⇒ Error
Returns JSON Errors found in interpreting response.
10 11 12 |
# File 'lib/soaspec/interpreter.rb', line 10 def json_errors @json_errors end |
.xml_errors ⇒ Error
Returns XML Errors found in interpreting response.
7 8 9 |
# File 'lib/soaspec/interpreter.rb', line 7 def xml_errors @xml_errors end |
Class Method Details
.diagnose_error ⇒ String
Returns Description of error.
47 48 49 50 51 52 53 |
# File 'lib/soaspec/interpreter.rb', line 47 def diagnose_error return xml_errors if looks_like_xml? return json_errors if looks_like_json? '' end |
.html? ⇒ Boolean
Returns Whether valid HTML. Must include at least one tag.
65 66 67 68 69 70 71 72 73 |
# File 'lib/soaspec/interpreter.rb', line 65 def html? Nokogiri::HTML(@response) do |config| config. = Nokogiri::XML::ParseOptions::DEFAULT_HTML end @response.include?('<') && @response.include?('>') rescue Nokogiri::XML::SyntaxError => e self.xml_errors = e false end |
.json? ⇒ Boolean
Returns Whether valid JSON.
76 77 78 79 80 81 |
# File 'lib/soaspec/interpreter.rb', line 76 def json? JSON.parse(@response) rescue JSON::ParserError => e self.json_errors = e false end |
.looks_like_json? ⇒ Boolean
Returns Whether response has bracket like syntax similar to JSON. Could be a syntax error occurred.
42 43 44 |
# File 'lib/soaspec/interpreter.rb', line 42 def looks_like_json? @response[0] == '{' && @response[-1] == '}' end |
.looks_like_xml? ⇒ Boolean
Returns Whether response has tag like syntax similar to XML. Could be a syntax error occurred.
37 38 39 |
# File 'lib/soaspec/interpreter.rb', line 37 def looks_like_xml? @response[0] == '<' && @response[-1] == '>' end |
.response_type_for(response) ⇒ Symbol
Returns Type of provided response.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/soaspec/interpreter.rb', line 14 def response_type_for(response) @xml_errors = nil @json_errors = nil @response = response case @response when String if xml? :xml elsif json? :json elsif html? :html else :string end when Hash then :hash when Nokogiri::XML::NodeSet, Nokogiri::XML::Document, Savon::Response then :xml else :unknown end end |
.xml? ⇒ Boolean
Returns Whether valid XML.
56 57 58 59 60 61 62 |
# File 'lib/soaspec/interpreter.rb', line 56 def xml? Nokogiri::XML(@response) { |config| config. = Nokogiri::XML::ParseOptions::STRICT } true rescue Nokogiri::XML::SyntaxError => e self.xml_errors = e false end |