togglv8 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/togglv8.rb +9 -1
- data/lib/togglv8/version.rb +1 -1
- metadata +2 -3
- data/API calls.md +0 -330
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f08bb5759304ca1a721e28f335d5db0108f5539a
|
4
|
+
data.tar.gz: ec94cd237fe7db781fec895b50caf7015ef56a8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76c25d3b0534bc3f6b4c50b95d3151d1ef5a054fd4397836bd66258634312f938d2ae0e6c14f598c245be3aaeee0ed7684216b2442887a0b3335463b054ffd05
|
7
|
+
data.tar.gz: e7a5d4be646c46db1313ae5ea512f5e2654ebe6ba41f2284cd3053f5750e89dc40335278ef8f07849fa4f89b5c4364ba88f53bc888c956d103c7002280011a95
|
data/lib/togglv8.rb
CHANGED
@@ -50,6 +50,14 @@ module TogglV8
|
|
50
50
|
@conn = TogglV8::API.connection(username, password, opts)
|
51
51
|
end
|
52
52
|
|
53
|
+
def debug(debug=true)
|
54
|
+
if debug
|
55
|
+
@logger.level = Logger::DEBUG
|
56
|
+
else
|
57
|
+
@logger.level = Logger::WARN
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
53
61
|
#---------#
|
54
62
|
# Private #
|
55
63
|
#---------#
|
@@ -85,7 +93,7 @@ module TogglV8
|
|
85
93
|
loop do
|
86
94
|
i += 1
|
87
95
|
full_resp = procs[:api_call].call
|
88
|
-
|
96
|
+
@logger.ap(full_resp.env, :debug)
|
89
97
|
break if full_resp.status != 429 || i >= MAX_RETRIES
|
90
98
|
sleep(DELAY_SEC)
|
91
99
|
end
|
data/lib/togglv8/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: togglv8
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -176,7 +176,6 @@ files:
|
|
176
176
|
- ".rdoc_options"
|
177
177
|
- ".rspec"
|
178
178
|
- ".travis.yml"
|
179
|
-
- API calls.md
|
180
179
|
- Gemfile
|
181
180
|
- LICENSE.txt
|
182
181
|
- README.md
|
data/API calls.md
DELETED
@@ -1,330 +0,0 @@
|
|
1
|
-
# Toggl v8 API calls
|
2
|
-
|
3
|
-
These API calls with [curl](http://curl.haxx.se/) were useful when prototyping togglv8.
|
4
|
-
|
5
|
-
The calls have since been converted to use [resty](https://github.com/micha/resty) (a wrapper for curl). They are included here only for reference.
|
6
|
-
|
7
|
-
See [Toggl API Documentation](https://github.com/toggl/toggl_api_docs) for more authoritative, comprehensive, and up-to-date information.
|
8
|
-
|
9
|
-
As of 2013-08-11, the calls listed here cover almost the entire [Toggl API](https://github.com/toggl/toggl_api_docs/blob/master/toggl_api.md) section. The following calls are not yet supported by [togglv8](/):
|
10
|
-
* [Add multiple users to a project](/API%20calls.md#add-multiple-users-to-a-project)
|
11
|
-
* [Update multiple project users](/API%20calls.md#update-multiple-project-users)
|
12
|
-
* [Delete multiple project users](/API%20calls.md#delete-multiple-project-users)
|
13
|
-
* [Sign up new user](/API%20calls.md#sign-up-new-user) (Will increase the cost of your Toggl account.)
|
14
|
-
* [Invite users to workspace](/API%20calls.md#invite-users-to-workspace)
|
15
|
-
* [Delete workspace user](/API%20calls.md#delete-workspace-user)
|
16
|
-
* [Get workspace users for a workspace](/API%20calls.md#get-workspace-users-for-a-workspace)
|
17
|
-
|
18
|
-
# Authentication
|
19
|
-
|
20
|
-
Toggl API uses Basic Auth. Resty is initialized with basic auth info (-u), as well as headers (-H).
|
21
|
-
|
22
|
-
### HTTP Basic Auth with API token
|
23
|
-
The user API Token for an account is available under [My Profile](https://www.toggl.com/user/edit) after logging into [Toggl.com](https://www.toggl.com).
|
24
|
-
|
25
|
-
When using an API Token, the user is your API Token and the password is "api_token".
|
26
|
-
```
|
27
|
-
resty https://www.toggl.com/api/v8 -u 1971800d4d82861d8f2c1651fea4d212:api_token -H "Content-type: application/json"
|
28
|
-
```
|
29
|
-
|
30
|
-
### (Alternative method) HTTP Basic Auth with e-mail and password
|
31
|
-
It is also possible to use your email address and Toggl password.
|
32
|
-
```
|
33
|
-
resty https://www.toggl.com/api/v8 -u your.email@example.com:SuperSecretPassword -H "Content-type: application/json"
|
34
|
-
```
|
35
|
-
|
36
|
-
# Displaying JSON
|
37
|
-
It is helpful to use a JSON parsing tool such as [Jazor](https://github.com/mconigliaro/jazor).
|
38
|
-
|
39
|
-
For example, ```GET /me | jazor -c``` outputs
|
40
|
-
|
41
|
-
```
|
42
|
-
{
|
43
|
-
since: 1370938972,
|
44
|
-
data: {
|
45
|
-
id: {<user_id>},
|
46
|
-
api_token: "<api_token>",
|
47
|
-
default_wid: <wid>,
|
48
|
-
email: "<email_address>",
|
49
|
-
fullname: "<fullname>",
|
50
|
-
jquery_timeofday_format: H:i,
|
51
|
-
jquery_date_format: "m/d/Y",
|
52
|
-
timeofday_format: H:mm,
|
53
|
-
date_format: "MM/DD/YYYY",
|
54
|
-
store_start_and_stop_time: true,
|
55
|
-
beginning_of_week: 1,
|
56
|
-
language: "en_US",
|
57
|
-
image_url: https://www.toggl.com/system/avatars/<image.jpg>,
|
58
|
-
sidebar_piechart: false,
|
59
|
-
at: "2013-06-11T07:00:44+00:00",
|
60
|
-
created_at: "2012-08-01T12:41:56+00:00",
|
61
|
-
retention: 9,
|
62
|
-
record_timeline: true,
|
63
|
-
render_timeline: true,
|
64
|
-
timeline_enabled: true,
|
65
|
-
timeline_experiment: true,
|
66
|
-
manual_mode: true,
|
67
|
-
new_blog_post: {
|
68
|
-
},
|
69
|
-
invitation: {
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
|
-
```
|
74
|
-
|
75
|
-
rather than
|
76
|
-
|
77
|
-
```
|
78
|
-
{"since":1370938972,"data":{"id":<user_id>},"api_token":"<api_token>","default_wid":<wid>,"email":"<email_address>","fullname":"<fullname>","jquery_timeofday_format":"H:i","jquery_date_format":"m/d/Y","timeofday_format":"H:mm","date_format":"MM/DD/YYYY","store_start_and_stop_time":true,"beginning_of_week":1,"language":"en_US","image_url":"https://www.toggl.com/system/avatars/<image.jpg>","sidebar_piechart":false,"at":"2013-06-11T07:00:44+00:00","created_at":"2012-08-01T12:41:56+00:00","retention":9,"record_timeline":true,"render_timeline":true,"timeline_enabled":true,"timeline_experiment":true,"manual_mode":true,"new_blog_post":{},"invitation":{}}}
|
79
|
-
```
|
80
|
-
|
81
|
-
---
|
82
|
-
|
83
|
-
# Clients
|
84
|
-
|
85
|
-
### Create client
|
86
|
-
```
|
87
|
-
POST /clients -d '{"client":{"name":"Very Big Company","wid":282224}}'
|
88
|
-
```
|
89
|
-
|
90
|
-
### Read client
|
91
|
-
```
|
92
|
-
GET /clients/1101632
|
93
|
-
```
|
94
|
-
|
95
|
-
### Update client
|
96
|
-
```
|
97
|
-
PUT /clients/1150638 -d '{"client":{"notes":"this client must go!"}}'
|
98
|
-
```
|
99
|
-
|
100
|
-
### Delete client
|
101
|
-
```
|
102
|
-
DELETE /clients/1150758
|
103
|
-
```
|
104
|
-
|
105
|
-
### Get clients visible to user
|
106
|
-
```
|
107
|
-
GET /clients
|
108
|
-
```
|
109
|
-
|
110
|
-
### Get client projects
|
111
|
-
```
|
112
|
-
GET /clients/1150488/projects
|
113
|
-
```
|
114
|
-
|
115
|
-
# Projects
|
116
|
-
|
117
|
-
### Create project
|
118
|
-
```
|
119
|
-
POST /projects -d '{"project":{"name":"TEST project","wid":282224,"is_private":true}}'
|
120
|
-
```
|
121
|
-
|
122
|
-
### Read project
|
123
|
-
```
|
124
|
-
GET /projects/2882160
|
125
|
-
```
|
126
|
-
|
127
|
-
### Update project
|
128
|
-
```
|
129
|
-
PUT /projects/2931253 -d '{"project":{"name":"Changed the name","is_private":false,"template":true}}'
|
130
|
-
```
|
131
|
-
|
132
|
-
### Get project users
|
133
|
-
```
|
134
|
-
GET /projects/2883126/project_users
|
135
|
-
```
|
136
|
-
|
137
|
-
# Project users
|
138
|
-
|
139
|
-
### Create project user
|
140
|
-
```
|
141
|
-
POST /project_users -d '{"project_user":{"pid":2931296,"uid":509726,"rate":30.0,"manager":true}}'
|
142
|
-
```
|
143
|
-
|
144
|
-
### Update project user
|
145
|
-
```
|
146
|
-
PUT /project_users/8310314 -d '{"project_user":{"manager":false,"rate":15,"fields":"fullname"}}'
|
147
|
-
```
|
148
|
-
|
149
|
-
### Delete project user
|
150
|
-
```
|
151
|
-
DELETE /project_users/8310314
|
152
|
-
```
|
153
|
-
### Add multiple users to a project
|
154
|
-
**Note:** Not yet supported by [togglv8](/)
|
155
|
-
|
156
|
-
### Update multiple project users
|
157
|
-
**Note:** Not yet supported by [togglv8](/)
|
158
|
-
|
159
|
-
### Delete multiple project users
|
160
|
-
**Note:** Not yet supported by [togglv8](/)
|
161
|
-
|
162
|
-
# Tags
|
163
|
-
|
164
|
-
### Create tag
|
165
|
-
```
|
166
|
-
POST /tags -d '{"tag":{"name":"tag"}}'
|
167
|
-
```
|
168
|
-
|
169
|
-
### Update tag
|
170
|
-
```
|
171
|
-
PUT /tags/294414 -d '{"tag":{"name":"taggggg"}}'
|
172
|
-
```
|
173
|
-
|
174
|
-
### Delete tag
|
175
|
-
```
|
176
|
-
DELETE /tags/294414
|
177
|
-
```
|
178
|
-
|
179
|
-
# Tasks
|
180
|
-
|
181
|
-
### Create task
|
182
|
-
```
|
183
|
-
POST /tasks -d '{"task":{"name":"A new task","pid":2883129}}'
|
184
|
-
```
|
185
|
-
|
186
|
-
### Get task details
|
187
|
-
```
|
188
|
-
GET /tasks/1894675
|
189
|
-
```
|
190
|
-
|
191
|
-
### Update task
|
192
|
-
```
|
193
|
-
PUT /tasks/1894675 -d '{"task":{"id": 1894675, "active": true, "estimated_seconds": 7200, "fields": "done_seconds,uname"}}'
|
194
|
-
```
|
195
|
-
|
196
|
-
### Delete task
|
197
|
-
```
|
198
|
-
DELETE /tasks/1893464
|
199
|
-
```
|
200
|
-
|
201
|
-
### Update multiple tasks
|
202
|
-
```
|
203
|
-
PUT /tasks/1894758,1894751 -d '{"task":{"active":false,"fields":"done_seconds,uname"}}'
|
204
|
-
```
|
205
|
-
|
206
|
-
### Delete multiple Tasks
|
207
|
-
```
|
208
|
-
DELETE /tasks/1922656,1922683,1922684
|
209
|
-
```
|
210
|
-
|
211
|
-
# Time entries
|
212
|
-
|
213
|
-
### Create time entry
|
214
|
-
```
|
215
|
-
POST /time_entries -d '{"time_entry":{"description":"Meeting with possible clients","tags":["billed"],"duration":1200,"start":"2013-03-05T07:58:58.000Z","pid":2931296}}'
|
216
|
-
```
|
217
|
-
|
218
|
-
### Get time entry details
|
219
|
-
```
|
220
|
-
GET /time_entries/77628973
|
221
|
-
```
|
222
|
-
|
223
|
-
### Start a time entry
|
224
|
-
```
|
225
|
-
POST /time_entries/start -d '{"time_entry":{"description":"New time entry","wid":282224}}'
|
226
|
-
```
|
227
|
-
|
228
|
-
### Stop a time entry
|
229
|
-
```
|
230
|
-
PUT /time_entries/86229778/stop
|
231
|
-
```
|
232
|
-
|
233
|
-
### Update time entry
|
234
|
-
```
|
235
|
-
PUT /time_entries/86229778 -d '{"time_entry":{"description":"Renamed new time entry","duration":180}}'
|
236
|
-
```
|
237
|
-
|
238
|
-
### Delete time entry
|
239
|
-
```
|
240
|
-
DELETE /time_entries/86229778
|
241
|
-
```
|
242
|
-
|
243
|
-
### Get time entries started in a specific time range
|
244
|
-
**Note:**
|
245
|
-
|
246
|
-
- `start_date` and `end_date` are in [ISO 8601 date and time format](http://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations), (e.g. "2013-03-10T15:42:46+02:00")
|
247
|
-
- It is necessary to use the encoded value %2B for '+' in order to avoid JSON parsing error. (Using %3A for ':' is not strictly necessary.)
|
248
|
-
|
249
|
-
```
|
250
|
-
GET /time_entries -q 'start_date=2013-05-22T15:42:46%2B02:00&end_date=2013-05-22T16:42:46%2B02:00'
|
251
|
-
```
|
252
|
-
|
253
|
-
```
|
254
|
-
GET /time_entries -q 'start_date=2013-06-04T18:32:12%2B00:00'
|
255
|
-
```
|
256
|
-
|
257
|
-
# Users
|
258
|
-
|
259
|
-
### Get current user data
|
260
|
-
```
|
261
|
-
GET /me
|
262
|
-
```
|
263
|
-
|
264
|
-
### Get current user with related data
|
265
|
-
```
|
266
|
-
GET /me?with_related_data=true -Q
|
267
|
-
```
|
268
|
-
or
|
269
|
-
```
|
270
|
-
GET /me -q 'with_related_data=true'
|
271
|
-
```
|
272
|
-
|
273
|
-
### Sign up new user
|
274
|
-
**Note:** This is not implemented in [togglv8](/) wrapper because it will increase the cost of your Toggl account. See [Toggl Pricing and Payments](http://support.toggl.com/pricing-and-payments/) for details.
|
275
|
-
```
|
276
|
-
POST /signups -d '{"user":{"email":"<email_address>","password":"<password>"}}'
|
277
|
-
```
|
278
|
-
|
279
|
-
# Workspaces
|
280
|
-
|
281
|
-
### Get user workspaces
|
282
|
-
```
|
283
|
-
GET /workspaces
|
284
|
-
```
|
285
|
-
|
286
|
-
### Get workspace users
|
287
|
-
```
|
288
|
-
GET /workspaces/282224/users
|
289
|
-
```
|
290
|
-
|
291
|
-
### Get workspace clients
|
292
|
-
```
|
293
|
-
GET /workspaces/282224/clients
|
294
|
-
```
|
295
|
-
|
296
|
-
### Get workspace projects
|
297
|
-
```
|
298
|
-
GET /workspaces/282224/projects
|
299
|
-
```
|
300
|
-
|
301
|
-
### Get workspace tasks
|
302
|
-
```
|
303
|
-
GET /workspaces/282224/tasks
|
304
|
-
```
|
305
|
-
```
|
306
|
-
GET /workspaces/282224/tasks?active=true
|
307
|
-
```
|
308
|
-
```
|
309
|
-
GET /workspaces/282224/tasks?active=false
|
310
|
-
```
|
311
|
-
```
|
312
|
-
GET /workspaces/282224/tasks?active=both
|
313
|
-
```
|
314
|
-
|
315
|
-
# Workspace Users
|
316
|
-
|
317
|
-
### Invite users to workspace
|
318
|
-
**Note:** Not yet supported by [togglv8](/)
|
319
|
-
|
320
|
-
### Update workspace user (can only update admin flag)
|
321
|
-
**Note:** Call fails with error message "Cannot access workspace users"
|
322
|
-
```
|
323
|
-
PUT /workspace_users/282224 -d '{"workspace_user":{"admin":true}}'
|
324
|
-
```
|
325
|
-
|
326
|
-
### Delete workspace user
|
327
|
-
**Note:** Not yet supported by [togglv8](/)
|
328
|
-
|
329
|
-
### Get workspace users for a workspace
|
330
|
-
**Note:** Not yet supported by [togglv8](/)
|