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 +4 -0
- data/VERSION +1 -1
- data/examples/activities.rb +2 -1
- data/examples/users.rb +2 -1
- data/lib/teambox-client.rb +1 -0
- data/lib/teambox-client/base.rb +437 -12
- data/teambox-client.gemspec +2 -2
- metadata +5 -5
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
|
+
0.2.0
|
data/examples/activities.rb
CHANGED
data/examples/users.rb
CHANGED
data/lib/teambox-client.rb
CHANGED
data/lib/teambox-client/base.rb
CHANGED
@@ -10,19 +10,387 @@ module Teambox
|
|
10
10
|
@client = client
|
11
11
|
end
|
12
12
|
|
13
|
-
# Teambox
|
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
|
20
|
+
perform_get("/api/1/activities", :query => query)
|
16
21
|
end
|
17
|
-
|
18
|
-
def
|
19
|
-
perform_get("/projects/#{project_id}/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}
|
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
|
-
|
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=\"#{
|
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=\"#{
|
477
|
+
body << "Content-Disposition: form-data; name=\"#{key}\"#{CRLF*2}#{value}"
|
53
478
|
end
|
54
479
|
body << CRLF
|
55
480
|
end
|
data/teambox-client.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{teambox-client}
|
8
|
-
s.version = "0.
|
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-
|
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:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
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-
|
19
|
+
date: 2010-08-09 00:00:00 +02:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|