lib/spark_api/models/subresource.rb in spark_api-1.1.1 vs lib/spark_api/models/subresource.rb in spark_api-1.1.2

- old
+ new

@@ -1,39 +1,59 @@ module SparkApi module Models - module Subresource - + module Subresource + def build_subclass Class.new(self) end def find_by_listing_key(key, arguments={}) collect(connection.get("/listings/#{key}#{self.path}", arguments)) end - + def find_by_id(id, parent_id, arguments={}) collect(connection.get("/listings/#{parent_id}#{self.path}/#{id}", arguments)).first end - + def parse_date_start_and_end_times(attributes) # Transform the date strings unless attributes['Date'].nil? date = Date.strptime attributes['Date'], '%m/%d/%Y' ['StartTime','EndTime'].each do |time| next if attributes[time].nil? - format = '%m/%d/%YT%H:%M%z' - if attributes[time].split(':').size > 3 - format = '%m/%d/%YT%H:%M:%S%z' + formatted_date = "#{attributes['Date']}T#{attributes[time]}" + datetime = nil + + begin + datetime = DateTime.strptime(formatted_date, '%m/%d/%YT%l:%M %P') + rescue => ex + ; # Do nothing; doesn't matter end - formatted_date = "#{attributes['Date']}T#{attributes[time]} FORMAT: #{format}" - datetime = DateTime.strptime(formatted_date, format) - datetime = datetime.new_offset DateTime.now.offset - attributes[time] = Time.local(datetime.year, datetime.month, datetime.day, datetime.hour, datetime.min, - datetime.sec) + + unless datetime + other_formats = ['%m/%d/%YT%H:%M%z', '%m/%d/%YT%H:%M:%S%z'] + other_formats.each_with_index do |format, i| + begin + datetime = DateTime.strptime(formatted_date, format) + datetime = datetime.new_offset DateTime.now.offset + break + rescue => ex + next + end + end + end + + # if we still don't have a valid time, raise an error + unless datetime + raise ArgumentError.new('invalid date') + end + + attributes[time] = Time.local(datetime.year, datetime.month, datetime.day, + datetime.hour, datetime.min, datetime.sec) end attributes['Date'] = date end end - + end end end