Method: Soaspec::RestHandler#value_from_path
- Defined in:
- lib/soaspec/exchange_handlers/rest_handler.rb
#value_from_path(response, path, attribute: nil) ⇒ String
Based on a exchange, return the value at the provided xpath If the path does not begin with a ‘/’, a ‘//’ is added to it
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/soaspec/exchange_handlers/rest_handler.rb', line 190 def value_from_path(response, path, attribute: nil) path = path.to_s case Interpreter.response_type_for(response) when :xml result = xpath_elements_for(response: response, xpath: path, attribute: attribute).first raise NoElementAtPath, "No value at Xpath '#{prefix_xpath(path, attribute)}' in '#{response.body}'" unless result return result.inner_text if attribute.nil? return result.attributes[attribute].inner_text when :json matching_values = calculated_json_path_matches(path, response, attribute, not_empty: true) matching_values.first else # Assume this is a String raise NoElementAtPath, 'Response is empty' if response.to_s.empty? response.to_s[/#{path}/] # Perform regular expression using path if not XML nor JSON end end |