rtmilk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.txt ADDED
@@ -0,0 +1,5 @@
1
+ 2007-02-05 mootoh@gmail.com
2
+
3
+ * CHANGELOG.txt:
4
+ packed gem.
5
+
data/Manifest.txt ADDED
@@ -0,0 +1,9 @@
1
+ Rakefile
2
+ README.txt
3
+ CHANGELOG.txt
4
+ Manifest.txt
5
+ setup.rb
6
+ lib/rtmilk/version.rb
7
+ lib/rtmilk.rb
8
+ test/test_helper.rb
9
+ test/rtmilk_test.rb
data/README.txt ADDED
@@ -0,0 +1,4 @@
1
+ README for rtmilk
2
+ =================
3
+
4
+ rtmilk is a "Remember the Milk" wrapper library.
data/Rakefile ADDED
@@ -0,0 +1,54 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/rdoctask'
8
+ require 'rake/contrib/rubyforgepublisher'
9
+ require 'fileutils'
10
+ require 'hoe'
11
+ include FileUtils
12
+ require File.join(File.dirname(__FILE__), 'lib', 'rtmilk', 'version')
13
+
14
+ AUTHOR = "takayama" # can also be an array of Authors
15
+ EMAIL = "mootoh@gmail.com"
16
+ DESCRIPTION = 'a "Remember the Milk" wrapper library.'
17
+ GEM_NAME = "rtmilk" # what ppl will type to install your gem
18
+ RUBYFORGE_PROJECT = "rtmilk" # The unix name for your project
19
+ HOMEPATH = "http://rtmilk.rubyforge.org"
20
+
21
+
22
+ NAME = "rtmilk"
23
+ REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
24
+ VERS = ENV['VERSION'] || (Rtmilk::VERSION::STRING + (REV ? ".#{REV}" : ""))
25
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config']
26
+ RDOC_OPTS = ['--quiet', '--title', "rtmilk documentation",
27
+ "--opname", "index.html",
28
+ "--line-numbers",
29
+ "--main", "README",
30
+ "--inline-source"]
31
+
32
+ class Hoe
33
+ def extra_deps
34
+ @extra_deps.reject { |x| Array(x).first == 'hoe' }
35
+ end
36
+ end
37
+
38
+ # Generate all the Rake tasks
39
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
40
+ hoe = Hoe.new(GEM_NAME, VERS) do |p|
41
+ p.author = AUTHOR
42
+ p.description = DESCRIPTION
43
+ p.email = EMAIL
44
+ p.summary = DESCRIPTION
45
+ p.url = HOMEPATH
46
+ p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
47
+ p.test_globs = ["test/**/*_test.rb"]
48
+ p.clean_globs = CLEAN #An array of file patterns to delete on clean.
49
+
50
+ # == Optional
51
+ #p.changes - A description of the release's latest changes.
52
+ #p.extra_deps - An array of rubygem dependencies.
53
+ #p.spec_extras - A hash of extra values to set in the gemspec.
54
+ end
@@ -0,0 +1,9 @@
1
+ module Rtmilk #:nodoc:
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ TINY = 1
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
data/lib/rtmilk.rb ADDED
@@ -0,0 +1,195 @@
1
+ #
2
+ # for Remember the Milk REST API
3
+ # http://www.rememberthemilk.com/services/api/overview.rtm
4
+ #
5
+ # $Id: rtm.rb 10 2006-12-30 06:37:24Z takayama $
6
+ #
7
+
8
+ require 'rtmilk/api.rb'
9
+
10
+ =begin rdoc
11
+ access Remember the Milk REST APIs.
12
+ =end
13
+ module RTM
14
+
15
+ def RTM.get_timeline
16
+ API::TimeLines.create
17
+ end
18
+
19
+ # use frob for Desktop Application.
20
+ # perm should be one of ['read', 'write', 'delete'].
21
+ def RTM.get_auth_url(h)
22
+ raise unless API::PERMS.include?(h[:perm])
23
+
24
+ API.auth_uri(API.params, h)
25
+ end
26
+
27
+ def RTM.get_frob
28
+ API::Auth.getFrob
29
+ end
30
+
31
+
32
+ class Contact
33
+ attr_accessor :id, :fullname, :username
34
+
35
+ def initialize(id, full=nil, user=nil)
36
+ @id = id
37
+ @fullname = full
38
+ @user = user
39
+ end
40
+ end # Contact
41
+
42
+ class Group
43
+ attr_accessor :id, :name
44
+ end # Group
45
+
46
+ class List
47
+ attr_accessor :id, :name, :deleted, :locked, :archived, :position, :smart, :filter
48
+
49
+ def initialize(h)
50
+ @id = h['id']
51
+ @name = h['name']
52
+ @deleted = h['deleted'] == '0'
53
+ @locked = h['locked'] == '1'
54
+ @archived = h['archived'] == '1'
55
+ @position = h['position']
56
+ @smart = h['smart'] == '1'
57
+ @filter = h['filter']
58
+ end
59
+
60
+ def setDefault
61
+ end # setDefault
62
+
63
+ def setName(name)
64
+ end # setName
65
+
66
+ def archive
67
+ end # archive
68
+
69
+ def unarchive
70
+ end # unarchive
71
+
72
+ def <=>(other)
73
+ @name <=> other.name
74
+ end
75
+ end # List
76
+
77
+ class Lists
78
+ include Enumerable
79
+
80
+ attr_accessor :ls
81
+
82
+ def initialize
83
+ @ls = API::Lists.getList.collect do |x|
84
+ List.new x
85
+ end
86
+ end
87
+
88
+ def each
89
+ @ls.each do |x|
90
+ yield x
91
+ end
92
+ end
93
+
94
+ def Lists.add(name, filter=nil)
95
+ timeline = RTM.get_timeline
96
+ l = API::Lists.add(timeline, name, filter)
97
+ List.new l
98
+ end # add
99
+
100
+ def [](i)
101
+ to_a[i]
102
+ end
103
+
104
+ def size
105
+ to_a.size
106
+ end
107
+ end # Lists
108
+
109
+ class TaskSeries
110
+ attr_accessor :id, :created, :modified, :name, :source,
111
+ :tags, :participants, :notes, :task
112
+
113
+ def initialize(h)
114
+ @id = h['id'] if h['id']
115
+ @created = h['created'] if h['created']
116
+ @modified = h['modified'] if h['modified']
117
+ @name = h['name'] if h['name']
118
+ @source = h['source'] if h['source']
119
+ @tags = h['tags'].first['tag'] if h['tags']
120
+ @participants = h['participants'].first if h['participants']
121
+ @notes = h['notes'].first if h['notes']
122
+
123
+ if h['task']
124
+ @task = h['task'].collect do |t|
125
+ Task.new(t)
126
+ end.flatten.compact
127
+ end
128
+ end
129
+
130
+ class Task
131
+ attr_accessor :id, :due, :has_due_time, :added, :completed,
132
+ :deleted, :priority, :postponed, :estimate
133
+
134
+ def initialize(h)
135
+ @id = h['id'] if h['id']
136
+ @due = h['due'] if h['due']
137
+ @has_due_time = h['has_due_time'] == '1' if h['has_due_time']
138
+ @added = h['added'] if h['added']
139
+ @completed = h['completed'] if h['completed']
140
+ @deleted = h['deleted'] if h['deleted']
141
+ @priority = h['priority'] if h['priority']
142
+ @postponed = h['postponed'] if h['postponed']
143
+ @estimate = h['estimate'] if h['estimate']
144
+ end
145
+ end # Task
146
+ end
147
+
148
+ class Tasks
149
+ include Enumerable
150
+
151
+ attr_accessor :ts
152
+
153
+ def initialize(list=nil, last=nil)
154
+ @ts = API::Tasks.getList(list, last).collect do |x|
155
+ if x['taskseries']
156
+ x['taskseries'].collect do |t|
157
+ TaskSeries.new t
158
+ end
159
+ else
160
+ nil
161
+ end
162
+ end.flatten.compact
163
+ end
164
+
165
+ def each
166
+ @ts.each do |x|
167
+ yield x
168
+ end
169
+ end
170
+
171
+ def Tasks.add(name, list)
172
+ timeline = RTM.get_timeline
173
+ t = API::Tasks.add(timeline, list, name)
174
+ TaskSeries.new t
175
+ end
176
+
177
+ def Tasks.delete(series, task, list)
178
+ timeline = RTM.get_timeline
179
+ t = API::Tasks.delete(timeline, list, series, task)
180
+ TaskSeries.new t
181
+ end
182
+
183
+ def [](i)
184
+ to_a[i]
185
+ end
186
+
187
+ def size
188
+ to_a.size
189
+ end
190
+
191
+ end # Tasks
192
+
193
+ end # RTM
194
+
195
+ # vim:fdm=indent