teambox-client 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,6 +18,10 @@ Now, run `irb -rubygems` and this snippet to get the list of activities:
18
18
  client = Teambox::Base.new(httpauth)
19
19
  puts client.activities
20
20
 
21
+ By default, *teambox-client* will connect to the hosted service at [teambox.com](http://teambox.com/), optionally you can:
22
+
23
+ Teambox::HTTPAuth.new(your_username, your_password, :api_endpoint => 'localhost:3000')
24
+
21
25
  Examples
22
26
  -------------------------------------------------------------------------------
23
27
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -1,4 +1,5 @@
1
- require File.join(File.dirname(__FILE__), '..', 'lib', 'teambox')
1
+ require 'rubygems'
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'teambox-client')
2
3
  require File.join(File.dirname(__FILE__), 'helpers', 'config_store')
3
4
  require 'pp'
4
5
 
data/examples/users.rb CHANGED
@@ -1,4 +1,5 @@
1
- require File.join(File.dirname(__FILE__), '..', 'lib', 'teambox')
1
+ require 'rubygems'
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'teambox-client')
2
3
  require File.join(File.dirname(__FILE__), 'helpers', 'config_store')
3
4
  require 'pp'
4
5
 
@@ -2,6 +2,7 @@ require "forwardable"
2
2
  require "hashie"
3
3
  require "httparty"
4
4
  require "yajl"
5
+ require "cgi"
5
6
 
6
7
  module Teambox
7
8
  include HTTParty
@@ -10,19 +10,387 @@ module Teambox
10
10
  @client = client
11
11
  end
12
12
 
13
- # Teambox method
13
+ # Teambox methods
14
+
15
+ # Todos, Dividers, Note, Page
16
+
17
+ # Activities indexes
18
+ # GET /api/1/activities
14
19
  def activities(query={})
15
- perform_get("/activities.json", :query => query)[:activities]
20
+ perform_get("/api/1/activities", :query => query)
16
21
  end
17
-
18
- def activities_from_project(project_id, query={})
19
- perform_get("/projects/#{project_id}/activities.json", :query => query)[:activities]
22
+ # GET /api/1/projects/:project_id/activities
23
+ def project_activities(project_id, query={})
24
+ perform_get("/api/1/projects/#{project_id}/activities", :query => query)
20
25
  end
21
-
26
+ # Activity show
27
+ # GET api/1/projects/:project_id/activities/:id
28
+ def activity(id, query={})
29
+ perform_get("/api/1/activities/#{id}", :query => query)
30
+ end
31
+ # GET /api/1/activities/:id
32
+ def project_activity(project_id, id, query={})
33
+ perform_get("/api/1/projects/#{project_id}/activities/#{id}", :query => query)
34
+ end
35
+ # Comments show
36
+ # GET /api/1/projects/:project_id/comments/:id
37
+ def project_comment(project_id, id, query={})
38
+ perform_get("/api/1/projects/#{project_id}/comments/#{id}", :query => query)
39
+ end
40
+ # GET /api/1/projects/:project_id/tasks/:task_id/comments/:id
41
+ def project_task_comment(project_id, task_id, id, query={})
42
+ perform_get("/api/1/projects/#{project_id}/tasks/#{task_id}/comments/#{id}", :query => query)
43
+ end
44
+ # GET /api/1/projects/:project_id/conversations/:conversation_id/comments/:id
45
+ def project_conversation_comment(project_id, conversation_id, id, query={})
46
+ perform_get("/api/1/projects/#{project_id}/tasks/#{conversation_id}/comments/#{id}", :query => query)
47
+ end
48
+ # Comments index
49
+ # GET /api/1/projects/:project_id/comments
50
+ def project_comments(project_id, query={})
51
+ perform_get("/api/1/projects/#{project_id}/comments", :query => query)
52
+ end
53
+ # GET /api/1/projects/:project_id/conversations/:conversation_id/comments
54
+ def project_conversation_comments(project_id, conversation_id, query={})
55
+ perform_get("/api/1/projects/#{project_id}/conversations/#{conversation_id}/comments", :query => query)
56
+ end
57
+ # GET /api/1/projects/:project_id/tasks/:task_id/comments
58
+ def project_task_comments(project_id, task_id, query={})
59
+ perform_get("/api/1/projects/#{project_id}/tasks/#{task_id}/comments", :query => query)
60
+ end
61
+ # Comment create
62
+ # POST /api/1/projects/:project_id/comments
63
+ def create_project_comment(project_id, query={})
64
+ if include_file?(query)
65
+ perform_post("/api/1/projects/#{project_id}/comments", build_multipart_bodies({:comment => query}) )
66
+ else
67
+ perform_post("/api/1/projects/#{project_id}/comments", :body => {:comment => query})
68
+ end
69
+ end
70
+ # POST /api/1/projects/:project_id/tasks/:task_id/comments
71
+ def create_project_task_comment(project_id, task_id, query={})
72
+ if include_file?(query)
73
+ perform_post("/api/1/projects/#{project_id}/tasks/#{task_id}/comments", build_multipart_bodies({:comment => query}) )
74
+ else
75
+ perform_post("/api/1/projects/#{project_id}/tasks/#{task_id}/comments", :body => {:comment => query})
76
+ end
77
+ end
78
+ # POST /api/1/projects/:project_id/conversations/:conversation_id/comments
79
+ def create_project_conversation_comment(project_id, conversation_id, query={})
80
+ if include_file?(query)
81
+ perform_post("/api/1/projects/#{project_id}/conversations/#{conversation_id}/comments", build_multipart_bodies({:comment => query}) )
82
+ else
83
+ perform_post("/api/1/projects/#{project_id}/conversations/#{conversation_id}/comments", :body => {:comment => query})
84
+ end
85
+ end
86
+ # Comment convert
87
+ # POST /api/1/projects/:project_id/comments/:id/convert
88
+ def convert_project_comment(project_id, id, query={})
89
+ perform_post("/api/1/projects/#{project_id}/comments/#{id}/convert", :body => {:comment => query})
90
+ end
91
+ # Comment update
92
+ # PUT /api/1/projects/:project_id/comments/:id
93
+ def update_project_comment(project_id, id, query={})
94
+ perform_put("/api/1/projects/#{project_id}/comments/#{id}", :body => {:comment => query})
95
+ end
96
+ # PUT /api/1/projects/:project_id/conversations/:conversation_id/comments/:id
97
+ def update_project_conversation_comment(project_id, conversation_id, id, query={})
98
+ perform_put("/api/1/projects/#{project_id}/conversations/#{conversation_id}/comments/#{id}", :body => {:comment => query})
99
+ end
100
+ # PUT /api/1/projects/:project_id/tasks/:task_id/comments/:id
101
+ def update_project_task_comment(project_id, task_id, id, query={})
102
+ perform_put("/api/1/projects/#{project_id}/tasks/#{task_id}/comments/#{id}", :body => {:comment => query})
103
+ end
104
+ # Comment destroy
105
+ # DELETE /api/1/projects/:project_id/comments/:id
106
+ def delete_project_comment(project_id, id, query={})
107
+ perform_delete("/api/1/projects/#{project_id}/comments/#{id}", :query => query)
108
+ end
109
+ # DELETE /api/1/projects/:project_id/conversations/:conversation_id/comments/:id
110
+ def delete_project_conversation_comment(project_id, conversation_id, id, query={})
111
+ perform_delete("/api/1/projects/#{project_id}/conversations/#{conversation_id}/comments/#{id}", :query => query)
112
+ end
113
+ # DELETE /api/1/projects/:project_id/tasks/:task_id/comments/:id
114
+ def delete_project_task_comment(project_id, conversation_id, id, query={})
115
+ perform_delete("/api/1/projects/#{project_id}/tasks/#{task_id}/comments/#{id}", :query => query)
116
+ end
117
+ # Conversations watch
118
+ # PUT /api/1/projects/:project_id/conversations/:id/watch
119
+ def watch_project_conversation(project_id, id, query={})
120
+ perform_put("/api/1/projects/#{project_id}/conversations/#{id}/watch", :query => query)
121
+ end
122
+ # PUT /api/1/projects/:project_id/conversations/:id/unwatch
123
+ def unwatch_project_conversation(project_id, id, query={})
124
+ perform_put("/api/1/projects/#{project_id}/conversations/#{id}/unwatch", :query => query)
125
+ end
126
+ # Conversation update
127
+ # PUT /api/1/projects/:project_id/conversations/:id
128
+ def update_project_conversation(project_id, id, query={})
129
+ perform_put("/api/1/projects/#{project_id}/conversations/#{id}", :body => {:conversation => query})
130
+ end
131
+ # Conversation destroy
132
+ # DELETE /api/1/projects/:project_id/conversations/:id
133
+ def destroy_project_conversation(project_id, id, query={})
134
+ perform_delete("/api/1/projects/#{project_id}/conversations/#{id}", :query => query)
135
+ end
136
+ # Conversation show
137
+ # GET /api/1/projects/:project_id/conversations/:id
138
+ def project_conversation(project_id, id, query={})
139
+ perform_get("/api/1/projects/#{project_id}/conversations/#{id}", :query => query)
140
+ end
141
+ # Conversations index
142
+ # GET /api/1/projects/:project_id/conversations
143
+ def project_conversations(project_id, query={})
144
+ perform_get("/api/1/projects/#{project_id}/conversations", :query => query)
145
+ end
146
+ # Conversation create
147
+ # POST /api/1/projects/:project_id/conversations
148
+ def create_project_conversation(project_id, query={})
149
+ perform_post("/api/1/projects/#{project_id}/conversations", :body => {:conversation => query})
150
+ end
151
+ # Invitation destroy
152
+ # DELETE /api/1/invitations/:id
153
+ def delete_invitation(id, query={})
154
+ perform_delete("/api/1/invitations/#{id}", :query => query)
155
+ end
156
+ # DELETE /api/1/projects/:project_id/invitations/:id
157
+ def delete_invitation(id, query={})
158
+ perform_delete("/api/1/invitations/#{id}", :query => query)
159
+ end
160
+ # Invition accept
161
+ # PUT /api/1/invitations/:id/accept
162
+ def invitaiton_accept(id, query={})
163
+ perform_put("/api/1/invitations/#{id}", :query => query)
164
+ end
165
+ # Invitation resend
166
+ # PUT /api/1/projects/:project_id/invitations/:id/resend
167
+ def project_invitation_resend(project_id, id, query={})
168
+ perform_put("/api/1/projects/#{project_id}/invitations/#{id}/resend", :query => query)
169
+ end
170
+ # Invitation create
171
+ # POST /api/1/projects/:project_id/invitations
172
+ def create_project_invitation(project_id, query={})
173
+ perform_post("/api/1/projects/#{project_id}/invitations", :query => query)
174
+ end
175
+ # Invitation indexes
176
+ # GET /api/1/invitations/:id
177
+ def invitations(query={})
178
+ perform_get("/api/1/invitations", :query => query)
179
+ end
180
+ # GET /api/1/projects/:project_id/invitations
181
+ def project_invitations(project_id, query={})
182
+ perform_get("/api/1/projects/#{project_id}/invitations", :query => query)
183
+ end
184
+ # Invitaiton show
185
+ # GET /api/1/invitations/:id
186
+ def invitation(id, query={})
187
+ perform_get("/api/1/invitations/#{id}", :query => query)
188
+ end
189
+ # GET /api/1/projects/:project_id/invitations/:id
190
+ def project_invitation(project_id, id, query={})
191
+ perform_get("/api/1/projects/#{project_id}/invitations/#{id}", :query => query)
192
+ end
193
+ # People index
194
+ # GET /api/1/projects/:project_id/people
195
+ def project_people(project_id, query={})
196
+ perform_get("/api/1/projects/#{project_id}/people", :query => query)
197
+ end
198
+ # Person show
199
+ # GET /api/1/projects/:project_id/people/:id
200
+ def project_person(project_id, id, query={})
201
+ perform_get("/api/1/projects/#{project_id}/people/#{id}", :query => query)
202
+ end
203
+ # Person update
204
+ # PUT /api/1/projects/:project_id/people/:id
205
+ def update_project_person(project_id, id, query={})
206
+ perform_put("/api/1/projects/#{project_id}/people/#{id}", :body => {:person => query})
207
+ end
208
+ # Person destroy
209
+ # DELETE /api/1/projects/:project_id/people/:id
210
+ def destroy_project_person(project_id, id, query={})
211
+ perform_delete("/api/1/projects/#{project_id}/people/#{id}", :query => query)
212
+ end
213
+ # Projects index
214
+ # GET /api/1/projects
215
+ def projects(query={})
216
+ perform_get("/api/1/projects", :query => query)
217
+ end
218
+ # Project show
219
+ # GET /api/1/projects/:id
220
+ def project(project_id, query={})
221
+ perform_get("/api/1/projects/#{project_id}", :query => query)
222
+ end
223
+ # Project update
224
+ # PUT /api/1/projects/:id
225
+ def update_project(project_id, query={})
226
+ perform_put("/api/1/projects/#{project_id}", :body => {:project => query})
227
+ end
228
+ # PUT /api/1/projects/:id/transfer
229
+ def transfer_project(project_id, query={})
230
+ perform_put("/api/1/projects/#{project_id}/transfer", :body => {:project => query})
231
+ end
232
+ # Project create
233
+ # POST /api/1/projects
234
+ def create_project(query={})
235
+ perform_post("/api/1/projects", :body => {:project => query})
236
+ end
237
+ # Project destroy
238
+ # DELETE /api/1/projects/:id
239
+ def destroy_project(project_id, query={})
240
+ perform_delete("/api/1/projects/#{project_id}", :query => query)
241
+ end
242
+ # Task_lists index
243
+ # GET /api/1/projects/:project_id/task_lists
244
+ def project_task_lists(project_id, query={})
245
+ perform_get("/api/1/projects/#{project_id}/task_lists", :query => query)
246
+ end
247
+ # Task_list show
248
+ # GET /api/1/projects/:project_id/task_lists/:id
249
+ def project_task_list(project_id, id, query={})
250
+ perform_get("/api/1/projects/#{project_id}/task_lists/#{id}", :query => query)
251
+ end
252
+ # Task_list update
253
+ # PUT /api/1/projects/:project_id/task_lists/:id
254
+ def update_project_task_list(project_id, id, query={})
255
+ perform_put("/api/1/projects/#{project_id}/task_lists/#{id}", :body => {:task_list => query})
256
+ end
257
+ # PUT /api/1/projects/:project_id/task_lists/:id/archive
258
+ def archive_project_task_list(project_id, id, query={})
259
+ perform_put("/api/1/projects/#{project_id}/task_lists/#{id}/archive", :query => query)
260
+ end
261
+ # PUT /api/1/projects/:project_id/task_lists/:id/unarchive
262
+ def unarchive_project_task_list(project_id, id, query={})
263
+ perform_put("/api/1/projects/#{project_id}/task_lists/#{id}/unarchive", :query => query)
264
+ end
265
+ # PUT /api/1/projects/:project_id/task_lists/reorder
266
+ def reorder_project_task_list(project_id, query={})
267
+ perform_put("/api/1/projects/#{project_id}/task_lists/reorder", :query => query)
268
+ end
269
+ # Task_list create
270
+ # POST /api/1/projects/:project_id/task_lists
271
+ def create_project_task_list(project_id, query={})
272
+ perform_post("/api/1/projects/#{project_id}/task_lists", :body => {:task_lists => query})
273
+ end
274
+ # Task_list destroy
275
+ # DELETE /api/1/projects/:project_id/task_lists/:id
276
+ def destroy_project_task_list(project_id, id, query={})
277
+ perform_delete("/api/1/projects/#{project_id}/task_lists/#{id}", :query => query)
278
+ end
279
+ # Tasks indexes
280
+ # GET /api/1/projects/:project_id/tasks
281
+ def project_tasks(project_id, query={})
282
+ perform_get("/api/1/projects/#{project_id}/tasks", :query => query)
283
+ end
284
+ # GET /api/1/projects/:project_id/task_lists/:task_list_id/tasks
285
+ def project_task_list_tasks(project_id, task_list_id, query={})
286
+ perform_get("/api/1/projects/#{project_id}/task_lists/#{task_list_id}/tasks", :query => query)
287
+ end
288
+ # GET /api/1/tasks
289
+ def tasks(query={})
290
+ perform_get("/api/1/tasks", :query => query)
291
+ end
292
+ # Task show
293
+ # GET /api/1/projects/:project_id/tasks/:id
294
+ def project_task(project_id, id, query={})
295
+ perform_get("/api/1/projects/#{project_id}/tasks/#{id}", :query => query)
296
+ end
297
+ # GET /api/1/projects/:project_id/task_lists/:task_list_id/tasks/:id
298
+ def project_task_list_task(project_id, task_list_id, id, query={})
299
+ perform_get("/api/1/projects/#{project_id}/task_lists/#{task_list_id}/tasks/#{id}", :query => query)
300
+ end
301
+ # GET /api/1/tasks/:id
302
+ def task(id, query={})
303
+ perform_get("/api/1/tasks/#{id}", :query => query)
304
+ end
305
+ # Task create
306
+ # POST /api/1/projects/:project_id/task_lists/:task_list_id/tasks
307
+ def create_project_task_list_task(project_id, task_list_id, query={})
308
+ perform_post("/api/1/projects/#{project_id}/task_lists/#{task_list_id}/tasks", :body => {:task => query})
309
+ end
310
+ # Task update
311
+ # PUT /api/1/projects/:project_id/tasks/:id
312
+ def update_project_task(project_id, id, query={})
313
+ perform_put("/api/1/projects/#{project_id}/tasks/#{id}", :body => {:task => query})
314
+ end
315
+ # PUT /api/1/projects/:project_id/task_lists/:task_list_id/tasks/:id
316
+ def update_project_task_list_task(project_id, task_list_id, id, query={})
317
+ perform_put("/api/1/projects/#{project_id}/task_lists/#{task_list_id}/tasks/#{id}", :body => {:task => query})
318
+ end
319
+ # PUT /api/1/tasks/:id
320
+ def update_task(id, query={})
321
+ perform_put("/api/1/tasks/#{id}", :body => {:task => query})
322
+ end
323
+ # Task watch
324
+ # PUT /api/1/projects/:project_id/tasks/:id/watch
325
+ def watch_project_task(project_id, id, query={})
326
+ perform_put("/api/1/projects/#{project_id}/tasks/#{id}/watch", :query => query)
327
+ end
328
+ # PUT /api/1/tasks/:id/watch
329
+ def watch_task(id, query={})
330
+ perform_put("/api/1/tasks/#{id}/watch", :query => query)
331
+ end
332
+ # PUT /api/1/projects/:project_id/tasks/:id/unwatch
333
+ def unwatch_project_task(project_id, id, query={})
334
+ perform_put("/api/1/projects/#{project_id}/tasks/#{id}/unwatch", :query => query)
335
+ end
336
+ # PUT /api/1/tasks/:id/unwatch
337
+ def unwatch_task(id, query={})
338
+ perform_put("/api/1/tasks/#{id}/unwatch", :query => query)
339
+ end
340
+ # Task reorder
341
+ # PUT /api/1/projects/:project_id/tasks/reorder
342
+ def reorder_project_tasks(id, query={})
343
+ perform_put("/api/1/projects/#{project_id}/tasks/reorder", :query => query)
344
+ end
345
+ # Task destroy
346
+ # DELETE /api/1/projects/:project_id/tasks/:id
347
+ def destroy_project_task(project_id, id, query={})
348
+ perform_delete("/api/1/projects/#{project_id}/tasks/#{id}", :query => query)
349
+ end
350
+ # DELETE /api/1/projects/:project_id/task_lists/:task_list_id/tasks/:id
351
+ def destroy_project_task_list_task(project_id, task_list_id, id, query={})
352
+ perform_delete("/api/1/projects/#{project_id}/task_lists/#{task_list_id}/tasks/#{id}", :query => query)
353
+ end
354
+ # DELETE /api/1/tasks/:id
355
+ def destroy_task(id, query={})
356
+ perform_delete("/api/1/tasks/#{id}", :query => query)
357
+ end
358
+ # Uploads index
359
+ # GET /api/1/projects/:project_id/uploads
360
+ def project_uploads(project_id, query={})
361
+ perform_get("/api/1/projects/#{project_id}/uploads", :query => query)
362
+ end
363
+ # Upload show
364
+ # GET /api/1/projects/:project_id/uploads/:id
365
+ def project_upload(project_id, id, query={})
366
+ perform_get("/api/1/projects/#{project_id}/uploads/#{id}", :query => query)
367
+ end
368
+ # Upload create
369
+ # POST /api/1/projects/:project_id/uploads
370
+ def create_project_upload(project_id, query={})
371
+ perform_post("/api/1/projects/#{project_id}/uploads", build_multipart_bodies({:upload => query}) )
372
+ end
373
+ # Upload destroy
374
+ # DELETE /api/1/projects/:project_id/uploads/:id
375
+ def destroy_project_upload(project_id, id, query={})
376
+ perform_delete("/api/1/projects/#{project_id}/uploads/#{id}", :query => query)
377
+ end
378
+ # Users index
379
+ # GET /api/1/users
380
+ def users(query={})
381
+ perform_get("/api/1/users", :query => query)
382
+ end
383
+ # User show
384
+ # GET /api/1/users/:id
22
385
  def user(id, query={})
23
- perform_get("/users/#{id}.json", :query => query)[:user]
386
+ perform_get("/api/1/users/#{id}", :query => query)
24
387
  end
25
-
388
+ # Account
389
+ # GET /api/1/account/
390
+ def account(query={})
391
+ perform_get("/api/1/account", :query => query)
392
+ end
393
+
26
394
  protected
27
395
 
28
396
  def self.mime_type(file)
@@ -38,18 +406,75 @@ module Teambox
38
406
 
39
407
  CRLF = "\r\n"
40
408
 
409
+ def self.include_file?(hash)
410
+ stack = []
411
+
412
+ hash.each do |k, v|
413
+ if v.is_a?(Hash)
414
+ stack << [k,v]
415
+ elsif v.is_a?(Array)
416
+ v.each_with_index do |value,index|
417
+ stack << ["#{k}[#{index}]", value]
418
+ end
419
+ else
420
+ return true if v.class == File
421
+ end
422
+ end
423
+
424
+ stack.each do |parent, hash|
425
+ hash.each do |k, v|
426
+ if v.is_a?(Hash)
427
+ stack << ["#{parent}[#{k}]", v]
428
+ else
429
+ return true if v.class == File
430
+ end
431
+ end
432
+ end
433
+ false
434
+ end
435
+
436
+ def include_file?(hash) self.class.include_file?(hash) end
437
+
41
438
  def self.build_multipart_bodies(parts)
439
+ params = {}
440
+ stack = []
441
+
442
+ parts.each do |k, v|
443
+ if v.is_a?(Hash)
444
+ stack << [k,v]
445
+ elsif v.is_a?(Array)
446
+ v.each_with_index do |value,index|
447
+ stack << ["[#{k}][#{index}]", value]
448
+ end
449
+ else
450
+ params.merge!({"#{k}" => v})
451
+ end
452
+ end
453
+
454
+ stack.each do |parent, hash|
455
+ hash.each do |k, v|
456
+ if v.is_a?(Hash)
457
+ stack << ["#{parent}[#{k}]", v]
458
+ elsif v.is_a?(Array)
459
+ v.each_with_index do |value,index|
460
+ stack << ["#{parent}[#{k}][#{index}]", value]
461
+ end
462
+ else
463
+ params.merge!({"#{parent}[#{k}]" => v})
464
+ end
465
+ end
466
+ end
467
+
42
468
  boundary = Time.now.to_i.to_s(16)
43
469
  body = ""
44
- parts.each do |key, value|
45
- esc_key = CGI.escape(key.to_s)
470
+ params.each do |key, value|
46
471
  body << "--#{boundary}#{CRLF}"
47
472
  if value.respond_to?(:read)
48
- body << "Content-Disposition: form-data; name=\"#{esc_key}\"; filename=\"#{File.basename(value.path)}\"#{CRLF}"
473
+ body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{File.basename(value.path)}\"#{CRLF}"
49
474
  body << "Content-Type: #{mime_type(value.path)}#{CRLF*2}"
50
475
  body << value.read
51
476
  else
52
- body << "Content-Disposition: form-data; name=\"#{esc_key}\"#{CRLF*2}#{value}"
477
+ body << "Content-Disposition: form-data; name=\"#{key}\"#{CRLF*2}#{value}"
53
478
  end
54
479
  body << CRLF
55
480
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{teambox-client}
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Pablo Villalba", "John Nunemaker"]
12
- s.date = %q{2010-06-19}
12
+ s.date = %q{2010-08-09}
13
13
  s.description = %q{Provides methods to read and write to Teambox for ruby apps}
14
14
  s.email = %q{pablo@teambox.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teambox-client
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Pablo Villalba
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-06-19 00:00:00 +02:00
19
+ date: 2010-08-09 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency