lib/faraday/xml/response.rb in faraday-xml-0.0.1 vs lib/faraday/xml/response.rb in faraday-xml-0.1.0
- old
+ new
@@ -2,22 +2,32 @@
module Faraday
module XML
# Parse response bodies as XML
class Response < Faraday::Middleware
- def initialize(app = nil, parser_options: nil, content_type: /\bxml$/, preserve_raw: false)
+ def initialize(app = nil, options = {})
super(app)
- @parser_options = parser_options
- @content_types = Array(content_type)
- @preserve_raw = preserve_raw
+ @parser_options = options[:parser_options]
+ @content_types = Array(options.fetch(:content_type, /\bxml$/))
+ @preserve_raw = options.fetch(:preserve_raw, false)
end
+ ruby2_keywords :initialize if respond_to?(:ruby2_keywords, true)
# @param env [Faraday::Env] the environment of the response being processed.
def on_complete(env)
process_response(env) if parse_response?(env)
end
+ def parser
+ @parser ||= nil
+ if @parser.nil?
+ @parser = set_parser
+ @parser && test_parser
+ end
+ @parser or raise 'Missing dependencies ActiveSupport::XmlMini or MultiXml'
+ end
+
private
def process_response(env)
env[:raw_body] = env[:body] if @preserve_raw
env[:body] = parse(env[:body])
@@ -30,34 +40,24 @@
parser.call(body, @parser_options || {})
end
def test_parser
- parse("<success>true</success>")
+ parse('<success>true</success>')
end
- def parser # rubocop:disable Metrics/MethodLength
- @parser ||= nil
- if @parser.nil?
- @parser = set_parser
- @parser && test_parser
- end
- @parser or raise 'Missing dependencies ActiveSupport::XmlMini or MultiXml'
- end
-
- def set_parser
+ def set_parser # rubocop:disable Metrics/MethodLength
@parser ||=
begin
require 'multi_xml'
lambda do |xml, options|
::MultiXml.parse(xml, options)
end
rescue LoadError # rubocop:disable Lint/SuppressedException
end
- @parser ||=
+ @parser ||= # rubocop:disable Naming/MemoizedInstanceVariableName
begin
require 'active_support'
- # require 'active_support/isolated_execution_state'
require 'active_support/xml_mini'
require 'active_support/core_ext/hash/conversions'
require 'active_support/core_ext/array/conversions'
lambda do |xml, options|
disallowed_types = options[:disallowed_types]