teambox-client 0.1.1 → 0.2.0

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/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