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.
-
.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.
46 47 48 49 50 51 52 |
# File 'lib/soaspec/interpreter.rb', line 46 def diagnose_error return xml_errors if looks_like_xml? return json_errors if looks_like_json? '' end |
.json? ⇒ Boolean
Returns Whether valid JSON.
63 64 65 66 67 68 |
# File 'lib/soaspec/interpreter.rb', line 63 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.
41 42 43 |
# File 'lib/soaspec/interpreter.rb', line 41 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.
36 37 38 |
# File 'lib/soaspec/interpreter.rb', line 36 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 |
# File 'lib/soaspec/interpreter.rb', line 14 def response_type_for(response) @xml_errors = nil @json_errors = nil @response = response if @response.is_a? String if xml? :xml elsif json? :json else :string end elsif response.is_a? Hash :hash elsif response.is_a?(Nokogiri::XML::NodeSet) || response.is_a?(Nokogiri::XML::Document) :xml else :unknown end end |
.xml? ⇒ Boolean
Returns Whether valid XML.
55 56 57 58 59 60 |
# File 'lib/soaspec/interpreter.rb', line 55 def xml? Nokogiri::XML(@response) { |config| config. = Nokogiri::XML::ParseOptions::STRICT } rescue Nokogiri::XML::SyntaxError => e self.xml_errors = e false end |