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