lib/peddler/handlers.rb in peddler-0.1.3 vs lib/peddler/handlers.rb in peddler-0.2.0
- old
+ new
@@ -1,49 +1,25 @@
module Peddler
module Handlers
class XMLHandler
- # Decodes an XML response.
- def self.decode_response(res)
- XmlSimple.xml_in(res)
- end
- # Parses responses to uploads and status queries for feeds in Section 7 of the docs. Walks
- # through lists and returns an array of hashes.
- def self.parse(name, xml)
- name = name.to_s.capitalize
- list = xml["#{name}sStatusList"] || xml["#{name}sList"]
- if list
- list.collect { |s| parse_status(name, s) }
- else
- [ parse_status(name, xml) ]
- end
- end
# Parses legacy responses to queries on statuses of generated reports and inventory uploads.
- def self.parse_legacy(xml)
- if xml["Batch"]
- xml["Batch"].collect { |input| Peddler::LegacyReports::UploadStatus.new(input) }
- elsif xml["Report"]
- xml["Report"].collect { |input| Peddler::LegacyReports::ReportStatus.new(input) }
+ def self.parse_legacy(hash)
+ if hash['Batches']
+ hash['Batches']['Batch'].collect { |input| Peddler::LegacyReports::UploadStatus.new(input) }
+ elsif hash['Reports']
+ hash['Reports']['Report'].collect { |input| Peddler::LegacyReports::ReportStatus.new(input) }
end
end
- protected
- def self.parse_status(name, xml)
- if xml[name]
- xml[name][0].inject({}) do |memo, pair|
- key, value = pair
- value[0] = Time.parse(value[0]) if key =~ /Date$/
- memo.merge!({ key => value[0] })
- end
- end
- end
end
class TabDelimitedHandler
- # Decodes tab-delimited content into an array of OpenStruct objects.
+ # Decodes tab-delimited content into an array of OpenStruct objects. It
+ # assumes first line contains parameter names.
def self.decode_response(res)
lines = res.split("\n")
if lines.size > 1
- params = lines[0].split("\t").collect{ |value| value.gsub(/-/, "_") }
+ params = lines[0].split("\t").collect{ |value| value.gsub(/-/, '_') }
params_size = params.size
(1..(lines.size - 1)).collect do |line_key|
values = lines[line_key].split("\t")
data = (0..(params_size - 1)).inject({}) { |memo, key| memo.merge( { params[key] => values[key] } ) }
OpenStruct.new(data)
\ No newline at end of file