require "ostruct" module Todoist module Util class ParseHelper def self.utc_offset_hours return Time.now.utc_offset/60/60 end def self.parse_todoist_date(item, key) if item[key] time = Time.parse(item[key]) return time.to_datetime else return nil end end def self.filter_today(item, key) now = DateTime.now if parse_todoist_date(item, key) && parse_todoist_date(item, key) <= DateTime.new(now.year, now.month, now.day, -utc_offset_hours) + 1 return true else return false end end def self.format_time(datetime) datetime.strftime("%Y-%m-%dT%H:%M") end def self.make_objects_as_array(object_datas, key = "id") objects_as_array = [] object_datas.each do |object_data| begin object = make_object(object_data) objects_as_array << object rescue # Occasionally the API returns arrays of arrays of hashes if object_data.kind_of? Array object = make_object(object_data[1]) objects_as_array << object end end end return objects_as_array end def self.make_objects_as_hash(object_datas, key = "id") objects_as_hash = {} object_datas.each do |object_data| begin object = make_object(object_data) objects_as_hash[object.send(key)] = object rescue # Occasionally the API returns arrays of arrays of hashes if object_data.kind_of? Array object = make_object(object_data[1]) objects_as_hash[object.send(key)] = object end end end return objects_as_hash end def self.make_object(object_as_hash) json = object_as_hash.to_json object = JSON.parse(json, object_class: OpenStruct) return object end end end end