todoist-ruby 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +201 -0
- data/Rakefile +20 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/fixtures/.gitignore +6 -0
- data/fixtures/uuid/.gitignore +4 -0
- data/fixtures/vcr_cassettes/.gitignore +4 -0
- data/lib/todoist.rb +23 -0
- data/lib/todoist/misc/activity.rb +51 -0
- data/lib/todoist/misc/backups.rb +13 -0
- data/lib/todoist/misc/completed.rb +34 -0
- data/lib/todoist/misc/items.rb +55 -0
- data/lib/todoist/misc/projects.rb +31 -0
- data/lib/todoist/misc/query.rb +30 -0
- data/lib/todoist/misc/quick.rb +15 -0
- data/lib/todoist/misc/templates.rb +29 -0
- data/lib/todoist/misc/uploads.rb +28 -0
- data/lib/todoist/misc/user.rb +16 -0
- data/lib/todoist/sync/filters.rb +44 -0
- data/lib/todoist/sync/items.rb +107 -0
- data/lib/todoist/sync/labels.rb +39 -0
- data/lib/todoist/sync/notes.rb +32 -0
- data/lib/todoist/sync/projects.rb +56 -0
- data/lib/todoist/sync/reminders.rb +36 -0
- data/lib/todoist/util/api_helper.rb +89 -0
- data/lib/todoist/util/command_synchronizer.rb +54 -0
- data/lib/todoist/util/config.rb +78 -0
- data/lib/todoist/util/network_helper.rb +100 -0
- data/lib/todoist/util/parse_helper.rb +62 -0
- data/lib/todoist/util/uuid.rb +17 -0
- data/lib/todoist/version.rb +3 -0
- data/todoist.gemspec +44 -0
- metadata +227 -0
@@ -0,0 +1,62 @@
|
|
1
|
+
require "ostruct"
|
2
|
+
|
3
|
+
module Todoist
|
4
|
+
module Util
|
5
|
+
class ParseHelper
|
6
|
+
|
7
|
+
def self.utcOffsetHours
|
8
|
+
return Time.now.utc_offset/60/60
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.parseTodoistDate(item, key)
|
12
|
+
if item[key]
|
13
|
+
time = Time.parse(item[key])
|
14
|
+
return time.to_datetime
|
15
|
+
else
|
16
|
+
return nil
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def self.filterToday(item, key)
|
22
|
+
|
23
|
+
now = DateTime.now
|
24
|
+
if parseTodoistDate(item, key) && parseTodoistDate(item, key) <= DateTime.new(now.year, now.month, now.day, -utcOffsetHours) + 1
|
25
|
+
return true
|
26
|
+
else
|
27
|
+
return false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.formatTime(datetime)
|
32
|
+
datetime.strftime("%Y-%m-%dT%H:%M")
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.make_objects_as_array(objects_as_hashes, key = "id")
|
36
|
+
objects = {}
|
37
|
+
|
38
|
+
objects_as_hashes.each do |object_data|
|
39
|
+
begin
|
40
|
+
object = make_object(object_data)
|
41
|
+
objects[object.send(key)] = object
|
42
|
+
rescue
|
43
|
+
# Occasionally the API returns arrays of arrays of hashes
|
44
|
+
if object_data.kind_of? Array
|
45
|
+
|
46
|
+
object = make_object(object_data[1])
|
47
|
+
objects[object.send(key)] = object
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
return objects
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.make_object(object_as_hash)
|
55
|
+
json = object_as_hash.to_json
|
56
|
+
object = JSON.parse(json, object_class: OpenStruct)
|
57
|
+
return object
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/todoist.gemspec
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'todoist/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "todoist-ruby"
|
8
|
+
spec.version = Todoist::VERSION
|
9
|
+
spec.authors = ["Han Yuan"]
|
10
|
+
spec.email = ["han.yuan@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{This gem provides access to the latest Todoist API.}
|
13
|
+
spec.description = %q{This gem provides access to the latest Todoist API. It is designed to be as lightweight as possible. While the gem provides interfaces for the sync API calls, no support is provided for persisting the result of these calls. Collaboration API calls are not supported at this time.}
|
14
|
+
spec.homepage = "https://github.com/h6y3/todoist-ruby"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
21
|
+
else
|
22
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
23
|
+
"public gem pushes."
|
24
|
+
end
|
25
|
+
|
26
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
27
|
+
f.match(%r{^(test|spec|features)/})
|
28
|
+
end
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
spec.add_development_dependency "bundler", "~> 1.13"
|
34
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
35
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
36
|
+
spec.add_development_dependency "pry"
|
37
|
+
spec.add_development_dependency "vcr"
|
38
|
+
spec.add_development_dependency "webmock"
|
39
|
+
spec.add_development_dependency "simplecov"
|
40
|
+
spec.add_dependency "concurrent-ruby"
|
41
|
+
spec.add_dependency "multipart-post"
|
42
|
+
spec.add_dependency "mimemagic"
|
43
|
+
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,227 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: todoist-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Han Yuan
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.13'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: vcr
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: concurrent-ruby
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: multipart-post
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: mimemagic
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: This gem provides access to the latest Todoist API. It is designed to
|
154
|
+
be as lightweight as possible. While the gem provides interfaces for the sync API
|
155
|
+
calls, no support is provided for persisting the result of these calls. Collaboration
|
156
|
+
API calls are not supported at this time.
|
157
|
+
email:
|
158
|
+
- han.yuan@gmail.com
|
159
|
+
executables: []
|
160
|
+
extensions: []
|
161
|
+
extra_rdoc_files: []
|
162
|
+
files:
|
163
|
+
- ".gitignore"
|
164
|
+
- ".rspec"
|
165
|
+
- ".travis.yml"
|
166
|
+
- CODE_OF_CONDUCT.md
|
167
|
+
- Gemfile
|
168
|
+
- LICENSE.txt
|
169
|
+
- README.md
|
170
|
+
- Rakefile
|
171
|
+
- bin/console
|
172
|
+
- bin/setup
|
173
|
+
- fixtures/.gitignore
|
174
|
+
- fixtures/uuid/.gitignore
|
175
|
+
- fixtures/vcr_cassettes/.gitignore
|
176
|
+
- lib/todoist.rb
|
177
|
+
- lib/todoist/misc/activity.rb
|
178
|
+
- lib/todoist/misc/backups.rb
|
179
|
+
- lib/todoist/misc/completed.rb
|
180
|
+
- lib/todoist/misc/items.rb
|
181
|
+
- lib/todoist/misc/projects.rb
|
182
|
+
- lib/todoist/misc/query.rb
|
183
|
+
- lib/todoist/misc/quick.rb
|
184
|
+
- lib/todoist/misc/templates.rb
|
185
|
+
- lib/todoist/misc/uploads.rb
|
186
|
+
- lib/todoist/misc/user.rb
|
187
|
+
- lib/todoist/sync/filters.rb
|
188
|
+
- lib/todoist/sync/items.rb
|
189
|
+
- lib/todoist/sync/labels.rb
|
190
|
+
- lib/todoist/sync/notes.rb
|
191
|
+
- lib/todoist/sync/projects.rb
|
192
|
+
- lib/todoist/sync/reminders.rb
|
193
|
+
- lib/todoist/util/api_helper.rb
|
194
|
+
- lib/todoist/util/command_synchronizer.rb
|
195
|
+
- lib/todoist/util/config.rb
|
196
|
+
- lib/todoist/util/network_helper.rb
|
197
|
+
- lib/todoist/util/parse_helper.rb
|
198
|
+
- lib/todoist/util/uuid.rb
|
199
|
+
- lib/todoist/version.rb
|
200
|
+
- todoist.gemspec
|
201
|
+
homepage: https://github.com/h6y3/todoist-ruby
|
202
|
+
licenses:
|
203
|
+
- MIT
|
204
|
+
metadata:
|
205
|
+
allowed_push_host: https://rubygems.org
|
206
|
+
post_install_message:
|
207
|
+
rdoc_options: []
|
208
|
+
require_paths:
|
209
|
+
- lib
|
210
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - ">="
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '0'
|
220
|
+
requirements: []
|
221
|
+
rubyforge_project:
|
222
|
+
rubygems_version: 2.5.1
|
223
|
+
signing_key:
|
224
|
+
specification_version: 4
|
225
|
+
summary: This gem provides access to the latest Todoist API.
|
226
|
+
test_files: []
|
227
|
+
has_rdoc:
|