ruby-wunderlist 0.1.pre → 0.1.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: