rtodoist 0.0.1
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.
- data/lib/rtodoist.rb +130 -0
- data/rtodoist-0.0.1.gem +0 -0
- data/rtodoist.gemspec +12 -0
- metadata +52 -0
data/lib/rtodoist.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'net/http'
|
4
|
+
require 'cgi'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
class Todoist
|
8
|
+
|
9
|
+
def initialize(token)
|
10
|
+
@token = token
|
11
|
+
|
12
|
+
if (check_connection(2, 'http://todoist.com') == false)
|
13
|
+
raise 'http://todoist.com not accessible. Program will now exit.'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def pretty_print_json(data)
|
18
|
+
if (data.nil? == false)
|
19
|
+
data.each { |result|
|
20
|
+
result.each { |key, value|
|
21
|
+
puts "#{key} = #{value}"
|
22
|
+
}
|
23
|
+
puts "--------"
|
24
|
+
}
|
25
|
+
else
|
26
|
+
puts "No data returned - cannot print"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_all_projects()
|
31
|
+
base_url = "http://todoist.com/API/getProjects"
|
32
|
+
url = %<#{base_url}?token=#{@token}>
|
33
|
+
return get_json_data(url)
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_project(project_id)
|
37
|
+
base_url = "http://todoist.com/API/getProject"
|
38
|
+
url = %<#{base_url}?project_id=#{project_id}&token=#{@token}>
|
39
|
+
return get_json_data(url)
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_labels()
|
43
|
+
base_url = "http://todoist.com/API/getLabels"
|
44
|
+
url = %<#{base_url}?token=#{@token}>
|
45
|
+
return get_json_data(url)
|
46
|
+
end
|
47
|
+
|
48
|
+
def get_uncompleted_items(project_id)
|
49
|
+
base_url = "http://todoist.com/API/getUncompletedItems"
|
50
|
+
url = %<#{base_url}?project_id=#{project_id}&token=#{@token}>
|
51
|
+
return get_json_data(url)
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_completed_items(project_id)
|
55
|
+
base_url = "http://todoist.com/API/getCompletedItems"
|
56
|
+
url = %<#{base_url}?project_id=#{project_id}&token=#{@token}>
|
57
|
+
return get_json_data(url)
|
58
|
+
end
|
59
|
+
|
60
|
+
def query(query)
|
61
|
+
base_url = "http://todoist.com/API/query"
|
62
|
+
url = %<#{base_url}?queries=#{query}&token=#{@token}>
|
63
|
+
return get_json_data(url)
|
64
|
+
end
|
65
|
+
|
66
|
+
def add_item(project_id, content, due_date, priority)
|
67
|
+
base_url = "http://todoist.com/API/addItem"
|
68
|
+
# URL encode the content to deal with spaces and special characters
|
69
|
+
content = CGI.escape(content)
|
70
|
+
url = %<#{base_url}?content=#{content}&project_id=#{project_id}&priority=#{priority}token=#{@token}>
|
71
|
+
return get_json_data(url)
|
72
|
+
end
|
73
|
+
|
74
|
+
def update_item(item_id, content, due_date, priority)
|
75
|
+
base_url = "http://todoist.com/API/updateItem"
|
76
|
+
# URL encode the content to deal with spaces and special characters
|
77
|
+
content = CGI.escape(content)
|
78
|
+
url = %<#{base_url}?content=#{content}&id=#{id}&priority=#{priority}token=#{@token}>
|
79
|
+
return get_json_data(url)
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
###################################################################################
|
85
|
+
# All methods below are private, and therefore accessible only to the class itself
|
86
|
+
###################################################################################
|
87
|
+
private
|
88
|
+
|
89
|
+
def check_connection(max_tries, url)
|
90
|
+
tries = 0
|
91
|
+
begin
|
92
|
+
tries += 1
|
93
|
+
open(url) {
|
94
|
+
return true
|
95
|
+
}
|
96
|
+
rescue
|
97
|
+
if (tries > max_tries)
|
98
|
+
puts "Connection error: #{url} not accessible"
|
99
|
+
return false
|
100
|
+
else
|
101
|
+
retry
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def get_json_data(url)
|
107
|
+
resp = Net::HTTP.get_response(URI.parse(url))
|
108
|
+
data = resp.body
|
109
|
+
|
110
|
+
if (data[0,1] != "[")
|
111
|
+
return nil
|
112
|
+
end
|
113
|
+
|
114
|
+
# we convert the returned JSON data to native Ruby
|
115
|
+
# data structure - a hash
|
116
|
+
result = JSON.parse(data)
|
117
|
+
|
118
|
+
return result
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
#td = Todoist.new('1c932299bec6eda2bfb24a3a031296e9cfe2d310')
|
125
|
+
|
126
|
+
#result = td.query('[%22viewall%22]')
|
127
|
+
|
128
|
+
#pp(result[0]['data'][2])
|
129
|
+
|
130
|
+
#json_result = JSON.parse(result[0])
|
data/rtodoist-0.0.1.gem
ADDED
File without changes
|
data/rtodoist.gemspec
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
spec = Gem::Specification.new do |s|
|
4
|
+
s.name = 'rtodoist'
|
5
|
+
s.version = '0.0.1'
|
6
|
+
s.summary = "RTodoist allows easy access to the Todoist todo list manager (http://todoist.com"
|
7
|
+
s.files = Dir.glob("**/**/**")
|
8
|
+
s.test_files = Dir.glob("test/*_test.rb")
|
9
|
+
s.author = "Robin Wilson"
|
10
|
+
s.email = "r.t.wilson@rmplc.co.uk"
|
11
|
+
s.has_rdoc = false
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
4
|
+
name: rtodoist
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.0.1
|
7
|
+
date: 2008-06-07 00:00:00 +01:00
|
8
|
+
summary: RTodoist allows easy access to the Todoist todo list manager (http://todoist.com
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: r.t.wilson@rmplc.co.uk
|
12
|
+
homepage:
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Robin Wilson
|
31
|
+
files:
|
32
|
+
- doc
|
33
|
+
- lib
|
34
|
+
- lib/rtodoist.rb
|
35
|
+
- pkg
|
36
|
+
- rtodoist-0.0.1.gem
|
37
|
+
- rtodoist.gemspec
|
38
|
+
- test
|
39
|
+
test_files: []
|
40
|
+
|
41
|
+
rdoc_options: []
|
42
|
+
|
43
|
+
extra_rdoc_files: []
|
44
|
+
|
45
|
+
executables: []
|
46
|
+
|
47
|
+
extensions: []
|
48
|
+
|
49
|
+
requirements: []
|
50
|
+
|
51
|
+
dependencies: []
|
52
|
+
|