togglv8 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/lib/togglv8.rb +4 -0
- data/lib/togglv8/time_entries.rb +1 -1
- data/lib/togglv8/version.rb +1 -1
- data/spec/lib/togglv8/clients_spec.rb +2 -2
- data/spec/lib/togglv8/dashboard_spec.rb +2 -2
- data/spec/lib/togglv8/projects_spec.rb +2 -2
- data/spec/lib/togglv8/tags_spec.rb +2 -2
- data/spec/lib/togglv8/tasks_spec.rb +2 -2
- data/spec/lib/togglv8/users_spec.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d725d89aea919d3f3eed4468bb6d7cb5809d396
|
4
|
+
data.tar.gz: e66e5464bd76daac97a9ed67eb04b0b3373844b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9704d75caa47000e37c957b10e75599e3837fd55b4d28ff9db9c2442a8ca3e0db5cf57804329e737f78f25852182566fe9b149b0f56775cfc9140e9b8fd7ed3
|
7
|
+
data.tar.gz: 84f27430a51dfe0b085b581bd9378b8a8dba85c6ed9867b593d8ddde430048af15563d1146f605706c2e08d944fe4866062cb2c7d459b88f3b317f5e5421a095
|
data/README.md
CHANGED
@@ -51,6 +51,26 @@ See specs for more examples.
|
|
51
51
|
|
52
52
|
> For rate limiting we have implemented a Leaky bucket. When a limit has been hit the request will get a HTTP 429 response and it's the task of the client to sleep/wait until bucket is empty. Limits will and can change during time, but a safe window will be 1 request per second. Limiting is applied per api token per IP, meaning two users from the same IP will get their rate allocated separately.
|
53
53
|
|
54
|
+
## Debugging
|
55
|
+
|
56
|
+
The `TogglV8::API#debug` method determines if debug output is printed to STDOUT. (The default is `true`.) This code snippet demonstrates the debug output.
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
require 'togglv8'
|
60
|
+
|
61
|
+
toggl = TogglV8::API.new
|
62
|
+
|
63
|
+
toggl.debug(true) # or simply toggl.debug
|
64
|
+
user1 = toggl.me
|
65
|
+
puts "user: #{user1['fullname']}, debug: true"
|
66
|
+
|
67
|
+
puts '-'*80
|
68
|
+
|
69
|
+
toggl.debug(false)
|
70
|
+
user2 = toggl.me
|
71
|
+
puts "user: #{user2['fullname']}, debug: false"
|
72
|
+
```
|
73
|
+
|
54
74
|
## Documentation
|
55
75
|
|
56
76
|
Run `rdoc` to generate documentation. Open `doc/index.html` in your browser.
|
data/lib/togglv8.rb
CHANGED
@@ -105,6 +105,7 @@ module TogglV8
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def get(resource)
|
108
|
+
resource.gsub!('+', '%2B')
|
108
109
|
full_resp = _call_api(debug_output: lambda { "GET #{resource}" },
|
109
110
|
api_call: lambda { self.conn.get(resource) } )
|
110
111
|
return {} if full_resp == {}
|
@@ -114,6 +115,7 @@ module TogglV8
|
|
114
115
|
end
|
115
116
|
|
116
117
|
def post(resource, data='')
|
118
|
+
resource.gsub!('+', '%2B')
|
117
119
|
full_resp = _call_api(debug_output: lambda { "POST #{resource} / #{data}" },
|
118
120
|
api_call: lambda { self.conn.post(resource, Oj.dump(data)) } )
|
119
121
|
return {} if full_resp == {}
|
@@ -122,6 +124,7 @@ module TogglV8
|
|
122
124
|
end
|
123
125
|
|
124
126
|
def put(resource, data='')
|
127
|
+
resource.gsub!('+', '%2B')
|
125
128
|
full_resp = _call_api(debug_output: lambda { "PUT #{resource} / #{data}" },
|
126
129
|
api_call: lambda { self.conn.put(resource, Oj.dump(data)) } )
|
127
130
|
return {} if full_resp == {}
|
@@ -130,6 +133,7 @@ module TogglV8
|
|
130
133
|
end
|
131
134
|
|
132
135
|
def delete(resource)
|
136
|
+
resource.gsub!('+', '%2B')
|
133
137
|
full_resp = _call_api(debug_output: lambda { "DELETE #{resource}" },
|
134
138
|
api_call: lambda { self.conn.delete(resource) } )
|
135
139
|
return {} if full_resp == {}
|
data/lib/togglv8/time_entries.rb
CHANGED
@@ -38,7 +38,7 @@ module TogglV8
|
|
38
38
|
if !params.has_key?('wid') and !params.has_key?('pid') and !params.has_key?('tid') then
|
39
39
|
raise ArgumentError, "one of params['wid'], params['pid'], params['tid'] is required"
|
40
40
|
end
|
41
|
-
post "time_entries/start", {time_entry
|
41
|
+
post "time_entries/start", { 'time_entry' => params }
|
42
42
|
end
|
43
43
|
|
44
44
|
def stop_time_entry(time_entry_id)
|
data/lib/togglv8/version.rb
CHANGED
@@ -17,7 +17,7 @@ describe 'Clients' do
|
|
17
17
|
|
18
18
|
context 'new client' do
|
19
19
|
before :all do
|
20
|
-
@client = @toggl.create_client({ 'name' => 'new client', 'wid' => @workspace_id })
|
20
|
+
@client = @toggl.create_client({ 'name' => 'new client +1', 'wid' => @workspace_id })
|
21
21
|
client_ids = @toggl.my_clients.map { |c| c['id'] }
|
22
22
|
expect(client_ids).to eq [ @client['id'] ]
|
23
23
|
end
|
@@ -60,7 +60,7 @@ describe 'Clients' do
|
|
60
60
|
|
61
61
|
it 'creates a client' do
|
62
62
|
expect(@client).to_not be nil
|
63
|
-
expect(@client['name']).to eq 'new client'
|
63
|
+
expect(@client['name']).to eq 'new client +1'
|
64
64
|
expect(@client['notes']).to eq nil
|
65
65
|
expect(@client['wid']).to eq @workspace_id
|
66
66
|
end
|
@@ -12,7 +12,7 @@ describe 'Dashboard' do
|
|
12
12
|
|
13
13
|
context 'gets dashboard time entries' do
|
14
14
|
before :all do
|
15
|
-
@new_time_entry = @toggl.start_time_entry({ 'wid' => @workspace_id, 'description' => 'new time entry' })
|
15
|
+
@new_time_entry = @toggl.start_time_entry({ 'wid' => @workspace_id, 'description' => 'new time entry +1' })
|
16
16
|
end
|
17
17
|
|
18
18
|
after :all do
|
@@ -25,7 +25,7 @@ describe 'Dashboard' do
|
|
25
25
|
expect(dashboard['activity']).to_not be nil
|
26
26
|
expect(dashboard['activity'].first['user_id']).to eq @toggl.me['id']
|
27
27
|
expect(dashboard['activity'].first['project_id']).to be nil
|
28
|
-
expect(dashboard['activity'].first['description']).to eq 'new time entry'
|
28
|
+
expect(dashboard['activity'].first['description']).to eq 'new time entry +1'
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -12,7 +12,7 @@ describe 'Projects' do
|
|
12
12
|
|
13
13
|
context 'new project' do
|
14
14
|
before :all do
|
15
|
-
@project = @toggl.create_project({ 'name' => 'new project', 'wid' => @workspace_id })
|
15
|
+
@project = @toggl.create_project({ 'name' => 'new project +1', 'wid' => @workspace_id })
|
16
16
|
project_ids = @toggl.my_projects.map { |p| p['id'] }
|
17
17
|
expect(project_ids).to eq [ @project['id'] ]
|
18
18
|
end
|
@@ -25,7 +25,7 @@ describe 'Projects' do
|
|
25
25
|
|
26
26
|
it 'creates a project' do
|
27
27
|
expect(@project).to_not be nil
|
28
|
-
expect(@project['name']).to eq 'new project'
|
28
|
+
expect(@project['name']).to eq 'new project +1'
|
29
29
|
expect(@project['billable']).to eq false
|
30
30
|
expect(@project['is_private']).to eq true
|
31
31
|
expect(@project['active']).to eq true
|
@@ -7,7 +7,7 @@ describe 'Tags' do
|
|
7
7
|
|
8
8
|
context 'new tag' do
|
9
9
|
before :all do
|
10
|
-
@tag = @toggl.create_tag({ 'name' => 'new tag', 'wid' => @workspace_id })
|
10
|
+
@tag = @toggl.create_tag({ 'name' => 'new tag +1', 'wid' => @workspace_id })
|
11
11
|
tag_ids = @toggl.my_tags.map { |t| t['id'] }
|
12
12
|
expect(tag_ids).to eq [ @tag['id'] ]
|
13
13
|
end
|
@@ -20,7 +20,7 @@ describe 'Tags' do
|
|
20
20
|
|
21
21
|
it 'creates a tag' do
|
22
22
|
expect(@tag).to_not be nil
|
23
|
-
expect(@tag['name']).to eq 'new tag'
|
23
|
+
expect(@tag['name']).to eq 'new tag +1'
|
24
24
|
expect(@tag['notes']).to eq nil
|
25
25
|
expect(@tag['wid']).to eq @workspace_id
|
26
26
|
end
|
@@ -12,7 +12,7 @@ describe 'Tasks', :pro_account do
|
|
12
12
|
|
13
13
|
context 'new task' do
|
14
14
|
before :all do
|
15
|
-
@task = @toggl.create_task({ 'name' => 'new task', 'pid' => @project['id'] })
|
15
|
+
@task = @toggl.create_task({ 'name' => 'new task +1', 'pid' => @project['id'] })
|
16
16
|
@task_ids = @toggl.get_project_tasks(@project['id']).map { |t| t['id'] }
|
17
17
|
expect(@task_ids).to eq [ @task['id'] ]
|
18
18
|
end
|
@@ -25,7 +25,7 @@ describe 'Tasks', :pro_account do
|
|
25
25
|
|
26
26
|
it 'creates a task' do
|
27
27
|
expect(@task).to_not be nil
|
28
|
-
expect(@task['name']).to eq 'new task'
|
28
|
+
expect(@task['name']).to eq 'new task +1'
|
29
29
|
expect(@task['pid']).to eq @project['id']
|
30
30
|
expect(@task['wid']).to eq @workspace_id
|
31
31
|
expect(@task['active']).to eq true
|
@@ -70,10 +70,10 @@ describe 'Users' do
|
|
70
70
|
it 'creates a new user' do
|
71
71
|
now = Time.now.to_i
|
72
72
|
user_info = {
|
73
|
-
'email' => "test-#{now}@mailinator.com",
|
73
|
+
'email' => "test-#{now}+1@mailinator.com",
|
74
74
|
'timezone' => 'Etc/UTC'
|
75
75
|
}
|
76
|
-
user_password = { 'password' => "password-#{now}" }
|
76
|
+
user_password = { 'password' => "password-#{now}+1" }
|
77
77
|
|
78
78
|
new_user = @toggl.create_user(user_info.merge(user_password))
|
79
79
|
expect(new_user).to include(user_info)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Kane
|
@@ -223,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
223
|
requirements:
|
224
224
|
- A Toggl account (https://toggl.com/)
|
225
225
|
rubyforge_project:
|
226
|
-
rubygems_version: 2.
|
226
|
+
rubygems_version: 2.5.1
|
227
227
|
signing_key:
|
228
228
|
specification_version: 4
|
229
229
|
summary: Toggl v8 API wrapper (See https://github.com/toggl/toggl_api_docs)
|