wunderlist-api 0.7.1 → 1.0.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.
- checksums.yaml +4 -4
- data/Gemfile +0 -3
- data/lib/wunderlist/api.rb +50 -13
- data/lib/wunderlist/helper.rb +23 -13
- data/lib/wunderlist/list.rb +3 -0
- data/lib/wunderlist/task.rb +3 -1
- data/lib/wunderlist/user.rb +16 -0
- data/lib/wunderlist/version.rb +1 -1
- data/lib/wunderlist/webhook.rb +26 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/wunderlist/api_spec.rb +2 -6
- data/spec/wunderlist/list_spec.rb +11 -0
- data/spec/wunderlist/note_spec.rb +11 -0
- data/spec/wunderlist/reminder_spec.rb +11 -0
- data/spec/wunderlist/subtask_spec.rb +11 -0
- data/spec/wunderlist/task_comment_spec.rb +11 -0
- data/spec/wunderlist/task_spec.rb +30 -0
- data/spec/wunderlist/webhook_spec.rb +25 -0
- data/wunderlist-api.gemspec +0 -1
- metadata +31 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00ba2e358c15f7a1358da190aca1a8703ee8c561
|
4
|
+
data.tar.gz: 28c243c448adb4996edf3b76b01664096a23abf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5d2231a4d1165ed84d510ac81e92e1b94530c82ca4038784355071af5459d2b32fab6e6be61dd5083e74d1aa160883058983924c9c9d5d23bfecf5f22d9e1dc
|
7
|
+
data.tar.gz: ac6d830580990d4e703ca862805fa810c448861e9186892d0a850dfaf13d9958b700d14103904acba2d51749ba5fa4079b03f4997dd97fdccb2dcb546509faeb
|
data/Gemfile
CHANGED
data/lib/wunderlist/api.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
require "wunderlist/version"
|
2
|
-
require "wunderlist/task"
|
3
1
|
require "wunderlist/list"
|
2
|
+
require "wunderlist/task"
|
3
|
+
require "wunderlist/user"
|
4
|
+
require "wunderlist/webhook"
|
5
|
+
require "wunderlist/version"
|
4
6
|
require 'faraday'
|
5
7
|
require 'json'
|
6
8
|
|
@@ -10,23 +12,26 @@ module Wunderlist
|
|
10
12
|
attr_reader :access_token
|
11
13
|
attr_reader :client_id
|
12
14
|
|
15
|
+
attr_accessor :conn
|
16
|
+
|
13
17
|
API_URL = "https://a.wunderlist.com"
|
14
18
|
|
15
19
|
def initialize(options = {})
|
16
|
-
@
|
20
|
+
@access_token = options[:access_token]
|
21
|
+
@client_id = options[:client_id]
|
22
|
+
end
|
23
|
+
|
24
|
+
def conn
|
25
|
+
@conn ||= Faraday::Connection.new(:url => API_URL) do |builder|
|
17
26
|
builder.use Faraday::Request::UrlEncoded
|
18
27
|
builder.use Faraday::Adapter::NetHttp
|
19
28
|
end
|
20
|
-
@access_token = options[:access_token]
|
21
|
-
@client_id = options[:client_id]
|
22
29
|
end
|
23
30
|
|
24
31
|
def new_list(list_name)
|
25
32
|
list = Wunderlist::List.new('title' => list_name)
|
26
33
|
list.api = self
|
27
|
-
|
28
34
|
list
|
29
|
-
|
30
35
|
end
|
31
36
|
|
32
37
|
def list(list_name)
|
@@ -53,6 +58,17 @@ module Wunderlist
|
|
53
58
|
|
54
59
|
end
|
55
60
|
|
61
|
+
def webhooks(list_name)
|
62
|
+
list_id = get_list_ids([list_name]).first
|
63
|
+
|
64
|
+
res_webhooks = self.request :get, 'api/v1/webhooks', { :list_id => list_id }
|
65
|
+
res_webhooks.reduce([]) do |webhooks, webhook|
|
66
|
+
webhook = Wunderlist::Webhook.new(webhook)
|
67
|
+
webhook.api = self
|
68
|
+
webhooks << webhook
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
56
72
|
def tasks(list_names = [], completed = false)
|
57
73
|
list_ids = get_list_ids(list_names)
|
58
74
|
tasks = []
|
@@ -71,6 +87,15 @@ module Wunderlist
|
|
71
87
|
|
72
88
|
end
|
73
89
|
|
90
|
+
|
91
|
+
def user()
|
92
|
+
res_user = self.request :get, 'api/v1/user'
|
93
|
+
user = Wunderlist::User.new(res_user)
|
94
|
+
user.api = self
|
95
|
+
|
96
|
+
user
|
97
|
+
end
|
98
|
+
|
74
99
|
def new_task(list_name, attrs = {})
|
75
100
|
attrs.stringify_keys
|
76
101
|
list_name = [list_name]
|
@@ -83,6 +108,18 @@ module Wunderlist
|
|
83
108
|
|
84
109
|
end
|
85
110
|
|
111
|
+
def new_webhook(list_name, attrs = {})
|
112
|
+
attrs.stringify_keys
|
113
|
+
list_name = [list_name]
|
114
|
+
list_id = get_list_ids(list_name)[0]
|
115
|
+
attrs['list_id'] = list_id
|
116
|
+
task = Wunderlist::Webhook.new(attrs)
|
117
|
+
task.api = self
|
118
|
+
|
119
|
+
task
|
120
|
+
|
121
|
+
end
|
122
|
+
|
86
123
|
def request(method, url, options = {})
|
87
124
|
case method
|
88
125
|
when :get then self.get(url, options)
|
@@ -94,7 +131,7 @@ module Wunderlist
|
|
94
131
|
|
95
132
|
def get(url, options = {})
|
96
133
|
|
97
|
-
response =
|
134
|
+
response = conn.get do |req|
|
98
135
|
req.url url
|
99
136
|
if options
|
100
137
|
options.each do |k, v|
|
@@ -113,13 +150,13 @@ module Wunderlist
|
|
113
150
|
|
114
151
|
def post(url, options = {})
|
115
152
|
|
116
|
-
response =
|
153
|
+
response = conn.post do |req|
|
117
154
|
req.url url
|
118
155
|
req.body = options.to_json
|
119
156
|
req.headers = {
|
120
157
|
'X-Access-Token' => self.access_token,
|
121
158
|
'X-Client-ID' => self.client_id,
|
122
|
-
'Content-Type' => '
|
159
|
+
'Content-Type' => 'application/json',
|
123
160
|
'Content-Encoding' => 'UTF-8'
|
124
161
|
}
|
125
162
|
end
|
@@ -129,13 +166,13 @@ module Wunderlist
|
|
129
166
|
|
130
167
|
def put(url, options = {})
|
131
168
|
|
132
|
-
response =
|
169
|
+
response = conn.put do |req|
|
133
170
|
req.url url
|
134
171
|
req.body = options.to_json
|
135
172
|
req.headers = {
|
136
173
|
'X-Access-Token' => self.access_token,
|
137
174
|
'X-Client-ID' => self.client_id,
|
138
|
-
'Content-Type' => '
|
175
|
+
'Content-Type' => 'application/json',
|
139
176
|
'Content-Encoding' => 'UTF-8'
|
140
177
|
}
|
141
178
|
end
|
@@ -145,7 +182,7 @@ module Wunderlist
|
|
145
182
|
|
146
183
|
def delete(url, options = {})
|
147
184
|
|
148
|
-
response =
|
185
|
+
response = conn.delete do |req|
|
149
186
|
req.url url
|
150
187
|
req.params[:revision] = options[:revision]
|
151
188
|
req.headers = {
|
data/lib/wunderlist/helper.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
module Wunderlist
|
2
2
|
module Helper
|
3
3
|
|
4
|
-
require 'active_support/inflector'
|
5
|
-
|
6
4
|
def to_hash
|
7
5
|
i_vs = self.instance_variables
|
8
6
|
i_vs.delete_if {|i_v| i_v.to_s == '@api'}
|
9
7
|
hash = {}
|
10
|
-
i_vs.each {|var| hash[var.to_s.delete("@")] = self.instance_variable_get(var) }
|
8
|
+
i_vs.each {|var| hash[var.to_s.delete("@")] = self.instance_variable_get(var) }
|
11
9
|
|
12
10
|
hash
|
13
11
|
|
14
12
|
end
|
15
13
|
|
16
14
|
def update
|
17
|
-
|
18
|
-
|
15
|
+
self.api.request :put, resource_path, self.to_hash
|
16
|
+
end
|
17
|
+
|
18
|
+
def create
|
19
|
+
self.api.request :post, path, self.to_hash
|
19
20
|
end
|
20
|
-
|
21
|
+
|
21
22
|
def save
|
22
|
-
model_name = get_plural_model_name
|
23
23
|
if self.id.nil?
|
24
|
-
res = self.
|
24
|
+
res = self.create
|
25
25
|
else
|
26
26
|
res = self.update
|
27
27
|
end
|
@@ -29,20 +29,30 @@ module Wunderlist
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def destroy
|
32
|
-
|
33
|
-
self.api.request :delete, "api/v1/#{model_name}/#{self.id}", {:revision => self.revision}
|
32
|
+
self.api.request :delete, resource_path, {:revision => self.revision}
|
34
33
|
self.id = nil
|
35
34
|
|
36
35
|
self
|
36
|
+
end
|
37
37
|
|
38
|
+
def resource_path
|
39
|
+
"api/v1/#{plural_model_name}/#{self.id}"
|
38
40
|
end
|
39
41
|
|
40
|
-
|
42
|
+
def path
|
43
|
+
"api/v1/#{plural_model_name}"
|
44
|
+
end
|
41
45
|
|
42
|
-
def
|
43
|
-
self.class.to_s.gsub('Wunderlist::','').
|
46
|
+
def model_name
|
47
|
+
self.class.to_s.gsub('Wunderlist::','').
|
48
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
49
|
+
gsub(/([a-z])([A-Z])/, '\1_\2').
|
50
|
+
downcase
|
44
51
|
end
|
45
52
|
|
53
|
+
def plural_model_name
|
54
|
+
"#{model_name}s"
|
55
|
+
end
|
46
56
|
end
|
47
57
|
end
|
48
58
|
|
data/lib/wunderlist/list.rb
CHANGED
data/lib/wunderlist/task.rb
CHANGED
@@ -9,7 +9,7 @@ module Wunderlist
|
|
9
9
|
|
10
10
|
include Wunderlist::Helper
|
11
11
|
|
12
|
-
attr_accessor :api, :title, :assignee_id, :completed, :revision, :recurrence_type, :recurrence_count, :due_date, :starred, :id, :list_id, :created_at
|
12
|
+
attr_accessor :api, :title, :assignee_id, :completed, :revision, :recurrence_type, :recurrence_count, :due_date, :starred, :id, :list_id, :created_at, :completed_at, :completed_by_id
|
13
13
|
|
14
14
|
def initialize(attrs = {})
|
15
15
|
@api = attrs['api']
|
@@ -19,6 +19,8 @@ module Wunderlist
|
|
19
19
|
@revision = attrs['revision']
|
20
20
|
@assignee_id = attrs['assignee_id']
|
21
21
|
@completed = attrs['completed']
|
22
|
+
@completed_at = attrs['completed_at']
|
23
|
+
@completed_by_id = attrs['completed_by_id']
|
22
24
|
@recurrence_type = attrs['recurrence_type']
|
23
25
|
@recurrence_count = attrs['recurrence_count']
|
24
26
|
@due_date = attrs['due_date']
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Wunderlist
|
2
|
+
class User
|
3
|
+
|
4
|
+
include Wunderlist::Helper
|
5
|
+
|
6
|
+
attr_accessor :api, :id, :name, :email, :created_at
|
7
|
+
|
8
|
+
def initialize(attrs = {})
|
9
|
+
@id = attrs['id']
|
10
|
+
@name = attrs['name']
|
11
|
+
@email = attrs['email']
|
12
|
+
@created_at = attrs['created_at']
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
data/lib/wunderlist/version.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
module Wunderlist
|
2
|
+
class Webhook
|
3
|
+
|
4
|
+
include Wunderlist::Helper
|
5
|
+
|
6
|
+
attr_accessor :api, :id, :list_id, :created_by_id, :processor_type, :url, :configuration, :created_at
|
7
|
+
|
8
|
+
def initialize(attrs = {})
|
9
|
+
@id = attrs['id']
|
10
|
+
@list_id = attrs['list_id']
|
11
|
+
@created_by_id = attrs['created_by_id']
|
12
|
+
@processor_type = attrs['processor_type']
|
13
|
+
@url = attrs['url']
|
14
|
+
@created_at = attrs['created_at']
|
15
|
+
@configuration = attrs['configuration']
|
16
|
+
end
|
17
|
+
|
18
|
+
def destroy
|
19
|
+
# Seems no revision id is needed, contrary to documentation
|
20
|
+
self.api.request :delete, resource_path
|
21
|
+
self.id = nil
|
22
|
+
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
-
require 'wunderlist
|
2
|
+
require 'wunderlist'
|
data/spec/wunderlist/api_spec.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Wunderlist::
|
3
|
+
describe Wunderlist::API do
|
4
4
|
it 'should have a version number' do
|
5
|
-
Wunderlist::
|
6
|
-
end
|
7
|
-
|
8
|
-
it 'should do something useful' do
|
9
|
-
false.should eq(true)
|
5
|
+
expect(Wunderlist::VERSION).to_not be_nil
|
10
6
|
end
|
11
7
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Wunderlist::Task do
|
4
|
+
let(:api) { Wunderlist::API.new }
|
5
|
+
let(:task) { described_class.new }
|
6
|
+
|
7
|
+
describe "a task" do
|
8
|
+
it 'has a hash representation' do
|
9
|
+
expect(task.to_hash.keys).to include(*%w(
|
10
|
+
id
|
11
|
+
list_id
|
12
|
+
title
|
13
|
+
revision
|
14
|
+
assignee_id
|
15
|
+
completed
|
16
|
+
completed_at
|
17
|
+
completed_by_id
|
18
|
+
recurrence_type
|
19
|
+
recurrence_count
|
20
|
+
due_date
|
21
|
+
starred
|
22
|
+
)
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "has a model name" do
|
27
|
+
expect(task.model_name).to eq 'task'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Wunderlist::Webhook do
|
4
|
+
let(:api) { Wunderlist::API.new }
|
5
|
+
let(:webhook) { described_class.new }
|
6
|
+
|
7
|
+
describe "a webhook" do
|
8
|
+
it 'has a hash representation' do
|
9
|
+
expect(webhook.to_hash.keys).to include(*%w(
|
10
|
+
id
|
11
|
+
list_id
|
12
|
+
created_by_id
|
13
|
+
processor_type
|
14
|
+
url
|
15
|
+
created_at
|
16
|
+
configuration
|
17
|
+
)
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "has a model name" do
|
22
|
+
expect(webhook.model_name).to eq 'webhook'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/wunderlist-api.gemspec
CHANGED
@@ -21,6 +21,5 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.5"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "rspec"
|
24
|
-
spec.add_dependency "activesupport", "~> 4.0.0"
|
25
24
|
spec.add_dependency 'faraday', '~> 0.9.1'
|
26
25
|
end
|
metadata
CHANGED
@@ -1,83 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wunderlist-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- shun3475
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.5'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: activesupport
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 4.0.0
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 4.0.0
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: faraday
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - ~>
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: 0.9.1
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- - ~>
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: 0.9.1
|
83
69
|
description: You can manage Your Wunderlist Data with Ruby
|
@@ -87,8 +73,8 @@ executables: []
|
|
87
73
|
extensions: []
|
88
74
|
extra_rdoc_files: []
|
89
75
|
files:
|
90
|
-
- .gitignore
|
91
|
-
- .rspec
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
92
78
|
- Gemfile
|
93
79
|
- LICENSE.txt
|
94
80
|
- README.md
|
@@ -102,9 +88,18 @@ files:
|
|
102
88
|
- lib/wunderlist/subtask.rb
|
103
89
|
- lib/wunderlist/task.rb
|
104
90
|
- lib/wunderlist/task_comment.rb
|
91
|
+
- lib/wunderlist/user.rb
|
105
92
|
- lib/wunderlist/version.rb
|
93
|
+
- lib/wunderlist/webhook.rb
|
106
94
|
- spec/spec_helper.rb
|
107
95
|
- spec/wunderlist/api_spec.rb
|
96
|
+
- spec/wunderlist/list_spec.rb
|
97
|
+
- spec/wunderlist/note_spec.rb
|
98
|
+
- spec/wunderlist/reminder_spec.rb
|
99
|
+
- spec/wunderlist/subtask_spec.rb
|
100
|
+
- spec/wunderlist/task_comment_spec.rb
|
101
|
+
- spec/wunderlist/task_spec.rb
|
102
|
+
- spec/wunderlist/webhook_spec.rb
|
108
103
|
- wunderlist-api.gemspec
|
109
104
|
homepage: https://github.com/shun3475/wunderlist-api
|
110
105
|
licenses:
|
@@ -116,20 +111,27 @@ require_paths:
|
|
116
111
|
- lib
|
117
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
113
|
requirements:
|
119
|
-
- -
|
114
|
+
- - ">="
|
120
115
|
- !ruby/object:Gem::Version
|
121
116
|
version: '0'
|
122
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
118
|
requirements:
|
124
|
-
- -
|
119
|
+
- - ">="
|
125
120
|
- !ruby/object:Gem::Version
|
126
121
|
version: '0'
|
127
122
|
requirements: []
|
128
123
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
124
|
+
rubygems_version: 2.4.5
|
130
125
|
signing_key:
|
131
126
|
specification_version: 4
|
132
127
|
summary: WunderList Ruby API Client.
|
133
128
|
test_files:
|
134
129
|
- spec/spec_helper.rb
|
135
130
|
- spec/wunderlist/api_spec.rb
|
131
|
+
- spec/wunderlist/list_spec.rb
|
132
|
+
- spec/wunderlist/note_spec.rb
|
133
|
+
- spec/wunderlist/reminder_spec.rb
|
134
|
+
- spec/wunderlist/subtask_spec.rb
|
135
|
+
- spec/wunderlist/task_comment_spec.rb
|
136
|
+
- spec/wunderlist/task_spec.rb
|
137
|
+
- spec/wunderlist/webhook_spec.rb
|