wunderlist-api 0.7.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cec87e89349284cb7aaf0030cb03698244151e02
4
- data.tar.gz: 92f8e75f79f54437d2c6b41497e98a422bec73a4
3
+ metadata.gz: 00ba2e358c15f7a1358da190aca1a8703ee8c561
4
+ data.tar.gz: 28c243c448adb4996edf3b76b01664096a23abf1
5
5
  SHA512:
6
- metadata.gz: b3c1cf1b7a9e3d65c290bd150efebfc5e0c953de42060e803a9271d132236cc58792c0c9a64cef8f3d9be9f7380f585d955e7cc9f17bfaebe4164033d1a2996d
7
- data.tar.gz: fdb140305b6a8f5a380af6205bb17520f0cd4a32081d04d7cb6f07c4ebff1e5c353305eca8d2d9348dfbec0e25ae050bcd084d7a3d9bbffb284994c5b6ad8b0b
6
+ metadata.gz: b5d2231a4d1165ed84d510ac81e92e1b94530c82ca4038784355071af5459d2b32fab6e6be61dd5083e74d1aa160883058983924c9c9d5d23bfecf5f22d9e1dc
7
+ data.tar.gz: ac6d830580990d4e703ca862805fa810c448861e9186892d0a850dfaf13d9958b700d14103904acba2d51749ba5fa4079b03f4997dd97fdccb2dcb546509faeb
data/Gemfile CHANGED
@@ -2,6 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in wunderlist-api.gemspec
4
4
  gemspec
5
-
6
- gem 'faraday', '~> 0.9.1'
7
- gem 'activesupport', '~> 4.0.0'
@@ -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
- @conn = Faraday::Connection.new(:url => API_URL) do |builder|
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 = @conn.get do |req|
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 = @conn.post do |req|
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' => 'text/json',
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 = @conn.put do |req|
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' => 'text/json',
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 = @conn.delete do |req|
185
+ response = conn.delete do |req|
149
186
  req.url url
150
187
  req.params[:revision] = options[:revision]
151
188
  req.headers = {
@@ -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
- model_name = get_plural_model_name
18
- self.api.request :put, "api/v1/#{model_name}/#{self.id}", self.to_hash
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.api.request :post, "api/v1/#{model_name}", self.to_hash
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
- model_name = get_plural_model_name
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
- private
42
+ def path
43
+ "api/v1/#{plural_model_name}"
44
+ end
41
45
 
42
- def get_plural_model_name
43
- self.class.to_s.gsub('Wunderlist::','').tableize
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
 
@@ -23,6 +23,9 @@ module Wunderlist
23
23
  self.api.tasks([self.title], completed)
24
24
  end
25
25
 
26
+ def webhooks
27
+ self.api.webhooks(self.title)
28
+ end
26
29
  private
27
30
 
28
31
  def set_attrs(attrs = {})
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Wunderlist
2
- VERSION = "0.7.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -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/api'
2
+ require 'wunderlist'
@@ -1,11 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Wunderlist::Api do
3
+ describe Wunderlist::API do
4
4
  it 'should have a version number' do
5
- Wunderlist::Api::VERSION.should_not be_nil
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,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wunderlist::List do
4
+ let(:list) { described_class.new }
5
+
6
+ describe "a list" do
7
+ it "has a model name" do
8
+ expect(list.model_name).to eq 'list'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wunderlist::Note do
4
+ let(:note) { described_class.new }
5
+
6
+ describe "a note" do
7
+ it "has a model name" do
8
+ expect(note.model_name).to eq 'note'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wunderlist::Reminder do
4
+ let(:reminder) { described_class.new }
5
+
6
+ describe "a reminder" do
7
+ it "has a model name" do
8
+ expect(reminder.model_name).to eq 'reminder'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wunderlist::Subtask do
4
+ let(:subtask) { described_class.new }
5
+
6
+ describe "a subtask" do
7
+ it "has a model name" do
8
+ expect(subtask.model_name).to eq 'subtask'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wunderlist::TaskComment do
4
+ let(:task_comment) { described_class.new }
5
+
6
+ describe "a task_comment" do
7
+ it "has a model name" do
8
+ expect(task_comment.model_name).to eq 'task_comment'
9
+ end
10
+ end
11
+ 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
@@ -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.7.1
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: 2015-07-22 00:00:00.000000000 Z
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.0.14
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