ruby-wunderlist 0.1.pre → 0.1.rc1

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.
@@ -63,6 +63,10 @@ module Wunderlist
63
63
  @lists
64
64
  end
65
65
 
66
+ def inbox
67
+ lists.to_a.first[1]
68
+ end
69
+
66
70
  def tasks(list)
67
71
  list_obj = list.is_a?(Wunderlist::List) ? list : lists[list]
68
72
  list = list.id if list.is_a? Wunderlist::List
@@ -89,6 +93,10 @@ module Wunderlist
89
93
  result
90
94
  end
91
95
 
96
+ def create_list(name)
97
+ Wunderlist::List.new(name, false, self).save
98
+ end
99
+
92
100
  def save(obj)
93
101
  if obj.is_a? Wunderlist::List
94
102
  return save_list obj
@@ -97,7 +105,88 @@ module Wunderlist
97
105
  end
98
106
  end
99
107
 
108
+ def destroy(obj)
109
+ if obj.is_a? Wunderlist::List
110
+ return destroy_list obj
111
+ elsif obj.is_a? Wunderlist::Task
112
+ return destroy_task obj
113
+ end
114
+ end
115
+
116
+ protected
117
+ def destroy_list(obj)
118
+ json_data = { "id" => obj.id, "deleted" => 1 }
119
+ request = prepare_request(Net::HTTP::Post.new "#{@path}/ajax/lists/update")
120
+ request.set_form_data "list" => json_data.to_json
121
+ response = @http.request request
122
+ response_json = JSON.parse(response.body)
123
+
124
+ if response_json["status"] == "success"
125
+ obj.id = nil
126
+ return obj
127
+ end
128
+
129
+ false
130
+ end
131
+
132
+ def save_task(obj)
133
+ return update_task(obj) if obj.id
134
+
135
+ json_data = {"list_id" => obj.list.id, "name" => obj.name, "date" => 0}
136
+ json_data["date"] = obj.date.to_time.to_i if obj.date
137
+
138
+ request = prepare_request(Net::HTTP::Post.new "#{@path}/ajax/tasks/insert")
139
+ request.set_form_data "task" => json_data.to_json
140
+ response = @http.request request
141
+ response_json = JSON.parse(response.body)
142
+
143
+ if response_json["status"] == "success"
144
+ obj.id = response_json["id"]
145
+ obj.list.tasks << obj
146
+ return obj
147
+ end
148
+
149
+ nil
150
+ end
151
+
152
+ def update_task(obj)
153
+ json_data = {}
154
+ json_data["id"] = obj.id
155
+ json_data["important"] = obj.important ? 1 : 0
156
+ json_data["done"] = obj.done ? 1 : 0
157
+ json_data["name"] = obj.name
158
+ json_data["date"] = obj.date ? obj.date.to_time.to_i.to_s : "0"
159
+
160
+ request = prepare_request(Net::HTTP::Post.new "#{@path}/ajax/tasks/update")
161
+ request.set_form_data "task" => json_data.to_json
162
+ response = @http.request request
163
+ response_json = JSON.parse response.body
164
+
165
+ if response_json["status"] == "success"
166
+ return obj
167
+ end
168
+
169
+ nil
170
+ end
171
+
100
172
  def save_list(obj)
173
+ return update_list(obj) if obj.id
174
+
175
+ json_data = {"name" => obj.name}
176
+ request = prepare_request(Net::HTTP::Post.new "#{@path}/ajax/lists/insert")
177
+ request.set_form_data "list" => json_data.to_json
178
+ response = @http.request request
179
+ response_json = JSON.parse(response.body)
180
+
181
+ if response_json["status"] == "success"
182
+ obj.id = response_json["id"]
183
+ return obj
184
+ end
185
+
186
+ nil
187
+ end
188
+
189
+ def update_list(obj)
101
190
  json_data = {}
102
191
  json_data["id"] = obj.id
103
192
  json_data["name"] = obj.name
@@ -107,13 +196,12 @@ module Wunderlist
107
196
  response = @http.request request
108
197
 
109
198
  if JSON.parse(response.body)["status"] == "success"
110
- return true
199
+ return obj
111
200
  end
112
201
 
113
- return false
202
+ nil
114
203
  end
115
204
 
116
- protected
117
205
  def get_session
118
206
  res = @http.request_get("#{@path}/account")
119
207
  @session = res["Set-Cookie"].match(/WLSESSID=([0-9a-zA-Z]+)/)[1]
@@ -25,9 +25,10 @@ module Wunderlist
25
25
  class List
26
26
  attr_accessor :id, :name, :inbox, :shared, :api
27
27
 
28
- def initialize(name = nil, inbox = nil)
28
+ def initialize(name = nil, inbox = nil, api = nil)
29
29
  @name = name
30
30
  @inbox = inbox
31
+ @api = api
31
32
  end
32
33
 
33
34
  def tasks
@@ -35,9 +36,18 @@ module Wunderlist
35
36
  @tasks
36
37
  end
37
38
 
39
+ def create_task(name, date = nil)
40
+ Wunderlist::Task.new(name, date, self, @api).save
41
+ end
42
+
38
43
  def save(api = nil)
39
44
  @api ||= api
40
- @api.save_list(self)
45
+ @api.save(self)
46
+ end
47
+
48
+ def destroy(api = nil)
49
+ @api ||= api
50
+ @api.destroy(self)
41
51
  end
42
52
 
43
53
  def flush
@@ -35,6 +35,6 @@ class Wunderlist::Task
35
35
 
36
36
  def save(api = nil)
37
37
  @api ||= api
38
- @api.save_task self
38
+ @api.save self
39
39
  end
40
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-wunderlist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.pre
4
+ version: 0.1.rc1
5
5
  prerelease: 4
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-10-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &76529340 !ruby/object:Gem::Requirement
16
+ requirement: &76874980 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *76529340
24
+ version_requirements: *76874980
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &76528980 !ruby/object:Gem::Requirement
27
+ requirement: &76874630 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *76528980
35
+ version_requirements: *76874630
36
36
  description:
37
37
  email: fritz+wunderlist@grimpen.net
38
38
  executables: []
@@ -43,8 +43,9 @@ files:
43
43
  - lib/wunderlist/task.rb
44
44
  - lib/wunderlist/api.rb
45
45
  - lib/wunderlist.rb
46
- homepage:
47
- licenses: []
46
+ homepage: http://grimpen.net/wunderlist
47
+ licenses:
48
+ - MIT
48
49
  post_install_message:
49
50
  rdoc_options: []
50
51
  require_paths: