Skip to content

Commit

Permalink
Add get_deleted() method
Browse files Browse the repository at this point in the history
Add lastaddedit and lastdelete to get_account_info()

git-svn-id: http://toodledo.rubyforge.org/svn/trunk@71 7a1d1287-79c4-4140-ad4e-221ab6fece8c
  • Loading branch information
wsargent committed Apr 19, 2008
1 parent 1be5144 commit 077cfe3
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 3 deletions.
5 changes: 5 additions & 0 deletions History.txt
@@ -1,3 +1,8 @@
== 1.2.0 / 2008-04-19

* Added get_deleted() method
* Added lastaddedit and lastdeleted to get_account_info()

== 1.1.2 / 2008-03-22

* Added get_session_info()
Expand Down
2 changes: 1 addition & 1 deletion lib/toodledo.rb
Expand Up @@ -5,7 +5,7 @@
module Toodledo

# Required for gem
VERSION = '1.1.2'
VERSION = '1.2.0'

# Returns the configuration object.
def self.get_config()
Expand Down
43 changes: 42 additions & 1 deletion lib/toodledo/session.rb
Expand Up @@ -254,11 +254,32 @@ def get_user_id(email, password)
# hidemonths : If the task is due this many months into the future, the user wants them to be hidden.
# hotlistpriority : The priority value above which tasks should appear on the hotlist.
# hotlistduedate : The due date lead-time by which tasks should will appear on the hotlist.
# lastaddedit: last time this was edited
# lastdelete:
def get_account_info()
result = call('getAccountInfo', {}, @key)

pro = (result.elements['pro'].text.to_i == 1) ? true : false

#<lastaddedit>2008-01-24 12:26:45</lastaddedit>
#<lastdelete>2008-01-23 15:45:55</lastdelete>
fmt = DATETIME_FORMAT

lastaddedit = result.elements['lastaddedit'].text
if (lastaddedit != nil)
last_modified_date = DateTime.strptime(lastaddedit, fmt)
else
last_modified_date = nil
end

lastdelete = result.elements['lastdelete'].text
if (lastdelete != nil)
logger.debug("lastdelete = #{lastdelete}")
last_deleted_date = DateTime.strptime(lastdelete, fmt)
else
last_deleted_date = nil
end

hash = {
:userid => result.elements['userid'].text,
:alias => result.elements['alias'].text,
Expand All @@ -267,7 +288,9 @@ def get_account_info()
:timezone => result.elements['timezone'].text.to_i,
:hidemonths => result.elements['hidemonths'].text.to_i,
:hotlistpriority => result.elements['hotlistpriority'].text.to_i,
:hotlistduedate => result.elements['hotlistduedate'].text.to_i
:hotlistduedate => result.elements['hotlistduedate'].text.to_i,
:lastaddedit => last_modified_date,
:lastdelete => last_deleted_date
}

return hash
Expand Down Expand Up @@ -550,6 +573,24 @@ def delete_task(id)

return (result.text == '1')
end

#
# Returns deleted tasks.
#
# after: a datetime object that indicates the start date after which deletes should be shown.
#
def get_deleted(after )
logger.debug("get_deleted(#{after})") if logger

formatted_after = after.strftime(Session::DATETIME_FORMAT)
result = call('getDeleted', { :after => formatted_after }, @key)
deleted_tasks = []
result.elements.each do |el|
deleted_task = Task.parse_deleted(self, el)
deleted_tasks << deleted_task
end
return deleted_tasks
end

############################################################################
# Contexts
Expand Down
21 changes: 21 additions & 0 deletions lib/toodledo/task.rb
Expand Up @@ -89,6 +89,27 @@ def is_parent?
return ! (@num_children == nil || @num_children == 0)
end

# Returns a hash containing :id and :stamp, a timestamp showing when the task was deleted.
#
# <task>
# <id>12345</id>
# <stamp>2008-02-25 07:46:42</stamp>
# </task>
# <task>
# <id>67890</id>
# <stamp>2008-03-12 14:11:12</stamp>
# </task>
#
def self.parse_deleted(session, el)
id = el.elements['id'].text
stamp = el.elements['stamp'].text

fmt = Session::DATETIME_FORMAT
deleted_stamp = DateTime.strptime(stamp, fmt)

return { :id => id, :stamp => deleted_stamp }
end

# Parses a task element and returns a new Task.
def self.parse(session, el)

Expand Down
15 changes: 14 additions & 1 deletion test/toodledo_functional_test.rb
Expand Up @@ -23,7 +23,7 @@ def setup
proxy = nil

logger = Logger.new(STDOUT)
logger.level = Logger::ERROR
logger.level = Logger::DEBUG

@session = Session.new(@user_id, @password, logger)
@session.connect(base_url, proxy)
Expand Down Expand Up @@ -153,6 +153,19 @@ def test_get_account_info()
assert info_hash[:hidemonths] == 6
assert info_hash[:hotlistpriority] == 3
assert info_hash[:hotlistduedate] == 14

# Doesn't seem to work.
# assert info_hash[:lastaddedit] != nil
assert info_hash[:lastdelete] != nil
end

def test_get_deleted()
deleted_tasks = @session.get_deleted(Time.at(0))

deleted_tasks.each { |deleted_hash|
assert deleted_hash[:id] != nil
assert deleted_hash[:stamp] != nil
}
end

#
Expand Down

0 comments on commit 077cfe3

Please sign in to comment.