timetree 0.1.2 → 0.1.3
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 +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +4 -0
- data/README.md +0 -2
- data/lib/timetree/activity.rb +1 -4
- data/lib/timetree/base_model.rb +6 -2
- data/lib/timetree/calendar.rb +14 -16
- data/lib/timetree/client.rb +36 -8
- data/lib/timetree/event.rb +21 -27
- data/lib/timetree/version.rb +1 -1
- data/timetree.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a43c7c885e6f0f2e55fdcf9b6c145e13e981fea4fee23dc468f5f16923826c0
|
4
|
+
data.tar.gz: b1dffa32b6a9d80ebca9e6de06a030e43e9d2bfe895bf9ac5ad4fa687d8f3b4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be24215ef1f52ccb2b0c8a8ce87f29dc2132e5987ba99533c73017cbc6a669d45dd5d565c1ff3fa1824d66cadeeddaf91f36ccaf6abd1150c755e0f836383e18
|
7
|
+
data.tar.gz: 1eb41d1864cabaf26293102c7a1b288da4e36930bce4599270e9e57e3b00e85a03e1d0bf2296f1d52ba0d26fcc4418ce287fc45a382da63c99c66209840890c3
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -94,8 +94,6 @@ TimeTree.configuration.logger.level = :debug
|
|
94
94
|
>> client.event 'cal_id_001', 'event_id_001_not_found'
|
95
95
|
I, [2020-06-24T10:05:07.294807] INFO -- : GET https://timetreeapis.com/calendars/cal_id_001/events/event_id_001_not_found?include=creator%2Clabel%2Cattendees
|
96
96
|
D, [2020-06-24T10:05:07.562038] DEBUG -- : Response status:404, body:{:type=>"https://developers.timetreeapp.com/en/docs/api#client-failure", :title=>"Not Found", :status=>404, :errors=>"Event not found"}
|
97
|
-
Traceback (most recent call last):
|
98
|
-
TimeTree::ApiError (TimeTree::ApiError)
|
99
97
|
```
|
100
98
|
|
101
99
|
## Contributing
|
data/lib/timetree/activity.rb
CHANGED
@@ -28,10 +28,7 @@ module TimeTree
|
|
28
28
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
29
29
|
# @since 0.0.1
|
30
30
|
def create
|
31
|
-
|
32
|
-
raise Error, 'calendar_id is required.' if calendar_id.nil?
|
33
|
-
raise Error, 'event_id is required.' if event_id.nil?
|
34
|
-
|
31
|
+
check_client
|
35
32
|
@client.create_activity calendar_id, event_id, data_params
|
36
33
|
end
|
37
34
|
|
data/lib/timetree/base_model.rb
CHANGED
@@ -50,9 +50,9 @@ module TimeTree
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
def initialize(
|
54
|
-
@id = id
|
53
|
+
def initialize(type:, id: nil, client: nil, attributes: nil, relationships: nil, included: nil)
|
55
54
|
@type = type
|
55
|
+
@id = id
|
56
56
|
@client = client
|
57
57
|
set_attributes attributes
|
58
58
|
set_relationships relationships, included
|
@@ -64,6 +64,10 @@ module TimeTree
|
|
64
64
|
|
65
65
|
private
|
66
66
|
|
67
|
+
def check_client
|
68
|
+
raise Error, '@client is nil.' if @client.nil?
|
69
|
+
end
|
70
|
+
|
67
71
|
def to_model(data)
|
68
72
|
self.class.to_model data, client: @client
|
69
73
|
end
|
data/lib/timetree/calendar.rb
CHANGED
@@ -29,8 +29,7 @@ module TimeTree
|
|
29
29
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
30
30
|
# @since 0.0.1
|
31
31
|
def event(event_id)
|
32
|
-
|
33
|
-
|
32
|
+
check_client
|
34
33
|
@client.event id, event_id
|
35
34
|
end
|
36
35
|
|
@@ -46,37 +45,36 @@ module TimeTree
|
|
46
45
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
47
46
|
# @since 0.0.1
|
48
47
|
def upcoming_events(days: 7, timezone: 'UTC')
|
49
|
-
|
50
|
-
|
48
|
+
check_client
|
51
49
|
@client.upcoming_events id, days: days, timezone: timezone
|
52
50
|
end
|
53
51
|
|
54
52
|
#
|
55
|
-
# Get a calendar's
|
53
|
+
# Get a calendar's member information.
|
56
54
|
#
|
57
|
-
# @return [Array<TimeTree::
|
55
|
+
# @return [Array<TimeTree::User>]
|
58
56
|
# @raise [TimeTree::Error] if @client is not set.
|
59
57
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
60
58
|
# @since 0.0.1
|
61
|
-
def
|
62
|
-
return @
|
63
|
-
raise Error, '@client is nil.' if @client.nil?
|
59
|
+
def members
|
60
|
+
return @members if defined? @members
|
64
61
|
|
65
|
-
|
62
|
+
check_client
|
63
|
+
@members = @client.calendar_members id
|
66
64
|
end
|
67
65
|
|
68
66
|
#
|
69
|
-
# Get a calendar's
|
67
|
+
# Get a calendar's label information used in event.
|
70
68
|
#
|
71
|
-
# @return [Array<TimeTree::
|
69
|
+
# @return [Array<TimeTree::Label>]
|
72
70
|
# @raise [TimeTree::Error] if @client is not set.
|
73
71
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
74
72
|
# @since 0.0.1
|
75
|
-
def
|
76
|
-
return @
|
77
|
-
raise Error, '@client is nil.' if @client.nil?
|
73
|
+
def labels
|
74
|
+
return @labels if defined? @labels
|
78
75
|
|
79
|
-
|
76
|
+
check_client
|
77
|
+
@labels = @client.calendar_labels id
|
80
78
|
end
|
81
79
|
end
|
82
80
|
end
|
data/lib/timetree/client.rb
CHANGED
@@ -16,8 +16,7 @@ module TimeTree
|
|
16
16
|
# @param token [String] a TimeTree's access token.
|
17
17
|
def initialize(token = nil)
|
18
18
|
@token = token || TimeTree.configuration.token
|
19
|
-
|
20
|
-
|
19
|
+
check_token
|
21
20
|
@http_cmd = HttpCommand.new(API_HOST, self)
|
22
21
|
end
|
23
22
|
|
@@ -44,6 +43,7 @@ module TimeTree
|
|
44
43
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
45
44
|
# @since 0.0.1
|
46
45
|
def calendar(cal_id, include_relationships: nil)
|
46
|
+
check_calendar_id cal_id
|
47
47
|
params = relationships_params(include_relationships, Calendar::RELATIONSHIPS)
|
48
48
|
res = @http_cmd.get "/calendars/#{cal_id}", params
|
49
49
|
raise ApiError, res if res.status != 200
|
@@ -76,6 +76,7 @@ module TimeTree
|
|
76
76
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
77
77
|
# @since 0.0.1
|
78
78
|
def calendar_labels(cal_id)
|
79
|
+
check_calendar_id cal_id
|
79
80
|
res = @http_cmd.get "/calendars/#{cal_id}/labels"
|
80
81
|
raise ApiError, res if res.status != 200
|
81
82
|
|
@@ -90,6 +91,7 @@ module TimeTree
|
|
90
91
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
91
92
|
# @since 0.0.1
|
92
93
|
def calendar_members(cal_id)
|
94
|
+
check_calendar_id cal_id
|
93
95
|
res = @http_cmd.get "/calendars/#{cal_id}/members"
|
94
96
|
raise ApiError, res if res.status != 200
|
95
97
|
|
@@ -107,6 +109,8 @@ module TimeTree
|
|
107
109
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
108
110
|
# @since 0.0.1
|
109
111
|
def event(cal_id, event_id, include_relationships: nil)
|
112
|
+
check_calendar_id cal_id
|
113
|
+
check_event_id event_id
|
110
114
|
params = relationships_params(include_relationships, Event::RELATIONSHIPS)
|
111
115
|
res = @http_cmd.get "/calendars/#{cal_id}/events/#{event_id}", params
|
112
116
|
raise ApiError, res if res.status != 200
|
@@ -128,6 +132,7 @@ module TimeTree
|
|
128
132
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
129
133
|
# @since 0.0.1
|
130
134
|
def upcoming_events(cal_id, days: 7, timezone: 'UTC', include_relationships: nil)
|
135
|
+
check_calendar_id cal_id
|
131
136
|
params = relationships_params(include_relationships, Event::RELATIONSHIPS)
|
132
137
|
params.merge!(days: days, timezone: timezone)
|
133
138
|
res = @http_cmd.get "/calendars/#{cal_id}/upcoming_events", params
|
@@ -150,6 +155,7 @@ module TimeTree
|
|
150
155
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
151
156
|
# @since 0.0.1
|
152
157
|
def create_event(cal_id, params)
|
158
|
+
check_calendar_id cal_id
|
153
159
|
res = @http_cmd.post "/calendars/#{cal_id}/events", params
|
154
160
|
raise ApiError, res if res.status != 201
|
155
161
|
|
@@ -169,6 +175,8 @@ module TimeTree
|
|
169
175
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
170
176
|
# @since 0.0.1
|
171
177
|
def update_event(cal_id, event_id, params)
|
178
|
+
check_calendar_id cal_id
|
179
|
+
check_event_id event_id
|
172
180
|
res = @http_cmd.put "/calendars/#{cal_id}/events/#{event_id}", params
|
173
181
|
raise ApiError, res if res.status != 200
|
174
182
|
|
@@ -186,6 +194,8 @@ module TimeTree
|
|
186
194
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
187
195
|
# @since 0.0.1
|
188
196
|
def delete_event(cal_id, event_id)
|
197
|
+
check_calendar_id cal_id
|
198
|
+
check_event_id event_id
|
189
199
|
res = @http_cmd.delete "/calendars/#{cal_id}/events/#{event_id}"
|
190
200
|
raise ApiError, res if res.status != 204
|
191
201
|
|
@@ -203,6 +213,8 @@ module TimeTree
|
|
203
213
|
# @raise [TimeTree::ApiError] if the nhttp response status is not success.
|
204
214
|
# @since 0.0.1
|
205
215
|
def create_activity(cal_id, event_id, params)
|
216
|
+
check_calendar_id cal_id
|
217
|
+
check_event_id event_id
|
206
218
|
res = @http_cmd.post "/calendars/#{cal_id}/events/#{event_id}/activities", params
|
207
219
|
raise ApiError, res if res.status != 201
|
208
220
|
|
@@ -214,10 +226,10 @@ module TimeTree
|
|
214
226
|
|
215
227
|
def inspect
|
216
228
|
limit_info = nil
|
217
|
-
if @ratelimit_limit
|
229
|
+
if defined?(@ratelimit_limit) && @ratelimit_limit
|
218
230
|
limit_info = " ratelimit:#{@ratelimit_remaining}/#{@ratelimit_limit}"
|
219
231
|
end
|
220
|
-
if @ratelimit_reset_at
|
232
|
+
if defined?(@ratelimit_reset_at) && @ratelimit_reset_at
|
221
233
|
limit_info = "#{limit_info}, reset_at:#{@ratelimit_reset_at.strftime('%m/%d %R')}"
|
222
234
|
end
|
223
235
|
"\#<#{self.class}:#{object_id}#{limit_info}>"
|
@@ -239,12 +251,28 @@ module TimeTree
|
|
239
251
|
|
240
252
|
private
|
241
253
|
|
242
|
-
def
|
243
|
-
|
254
|
+
def check_token
|
255
|
+
check_required_property(@token, 'token')
|
256
|
+
end
|
257
|
+
|
258
|
+
def check_calendar_id(value)
|
259
|
+
check_required_property(value, 'calendar_id')
|
260
|
+
end
|
261
|
+
|
262
|
+
def check_event_id(value)
|
263
|
+
check_required_property(value, 'event_id')
|
244
264
|
end
|
245
265
|
|
246
|
-
def
|
247
|
-
|
266
|
+
def check_required_property(value, name)
|
267
|
+
err = Error.new "#{name} is required."
|
268
|
+
raise err if value.nil?
|
269
|
+
raise err if value.to_s.empty?
|
270
|
+
|
271
|
+
true
|
272
|
+
end
|
273
|
+
|
274
|
+
def to_model(data, included: nil)
|
275
|
+
TimeTree::BaseModel.to_model data, client: self, included: included
|
248
276
|
end
|
249
277
|
|
250
278
|
def relationships_params(relationships, default)
|
data/lib/timetree/event.rb
CHANGED
@@ -38,9 +38,9 @@ module TimeTree
|
|
38
38
|
# @return [TimeTree::User]
|
39
39
|
attr_reader :creator
|
40
40
|
# @return [TimeTree::Label]
|
41
|
-
|
41
|
+
attr_accessor :label
|
42
42
|
# @return [Array<TimeTree::User>]
|
43
|
-
|
43
|
+
attr_accessor :attendees
|
44
44
|
|
45
45
|
TIME_FIELDS = %i[start_at end_at updated_at created_at].freeze
|
46
46
|
RELATIONSHIPS = %i[creator label attendees].freeze
|
@@ -53,28 +53,10 @@ module TimeTree
|
|
53
53
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
54
54
|
# @since 0.0.1
|
55
55
|
def create
|
56
|
-
|
57
|
-
|
56
|
+
check_client
|
58
57
|
@client.create_event calendar_id, data_params
|
59
58
|
end
|
60
59
|
|
61
|
-
#
|
62
|
-
# Creates comment to the event.
|
63
|
-
#
|
64
|
-
# @return [TimeTree::Activity]
|
65
|
-
# @raise [TimeTree::Error] if @client is not set.
|
66
|
-
# @raise [TimeTree::ApiError] if the http response status will not success.
|
67
|
-
# @since 0.0.1
|
68
|
-
def create_comment(message)
|
69
|
-
raise Error, '@client is nil.' if @client.nil?
|
70
|
-
|
71
|
-
params = { type: 'activity', attributes: { calendar_id: calendar_id, event_id: id, content: message } }
|
72
|
-
activity = to_model params
|
73
|
-
return if activity.nil?
|
74
|
-
|
75
|
-
activity.create
|
76
|
-
end
|
77
|
-
|
78
60
|
#
|
79
61
|
# Updates the event.
|
80
62
|
#
|
@@ -84,9 +66,7 @@ module TimeTree
|
|
84
66
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
85
67
|
# @since 0.0.1
|
86
68
|
def update
|
87
|
-
|
88
|
-
raise Error, 'id is required.' if id.nil?
|
89
|
-
|
69
|
+
check_client
|
90
70
|
@client.update_event calendar_id, id, data_params
|
91
71
|
end
|
92
72
|
|
@@ -99,12 +79,26 @@ module TimeTree
|
|
99
79
|
# @raise [TimeTree::ApiError] if the http response status will not success.
|
100
80
|
# @since 0.0.1
|
101
81
|
def delete
|
102
|
-
|
103
|
-
raise Error, 'id is required.' if id.nil?
|
104
|
-
|
82
|
+
check_client
|
105
83
|
@client.delete_event calendar_id, id
|
106
84
|
end
|
107
85
|
|
86
|
+
#
|
87
|
+
# Creates comment to the event.
|
88
|
+
#
|
89
|
+
# @return [TimeTree::Activity]
|
90
|
+
# @raise [TimeTree::Error] if @client is not set.
|
91
|
+
# @raise [TimeTree::ApiError] if the http response status will not success.
|
92
|
+
# @since 0.0.1
|
93
|
+
def create_comment(message)
|
94
|
+
check_client
|
95
|
+
params = { type: 'activity', attributes: { calendar_id: calendar_id, event_id: id, content: message } }
|
96
|
+
activity = to_model params
|
97
|
+
return if activity.nil?
|
98
|
+
|
99
|
+
activity.create
|
100
|
+
end
|
101
|
+
|
108
102
|
#
|
109
103
|
# convert to a TimeTree request body format.
|
110
104
|
#
|
data/lib/timetree/version.rb
CHANGED
data/timetree.gemspec
CHANGED
@@ -37,4 +37,5 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_development_dependency 'minitest-reporters', '~> 1.4.2'
|
38
38
|
spec.add_development_dependency 'rake', '~> 12.0'
|
39
39
|
spec.add_development_dependency 'webmock', '~> 3.7.6'
|
40
|
+
spec.add_development_dependency 'simplecov', '~> 0.18.5'
|
40
41
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timetree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenji Koshikawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 3.7.6
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: simplecov
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.18.5
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.18.5
|
125
139
|
description: Client for accessing TimeTree APIs
|
126
140
|
email:
|
127
141
|
- koshikawa2009@gmail.com
|
@@ -160,7 +174,7 @@ metadata:
|
|
160
174
|
homepage_uri: https://github.com/koshilife/timetree-api-ruby-client
|
161
175
|
source_code_uri: https://github.com/koshilife/timetree-api-ruby-client
|
162
176
|
changelog_uri: https://github.com/koshilife/timetree-api-ruby-client/blob/master/CHANGELOG.md
|
163
|
-
documentation_uri: https://www.rubydoc.info/gems/timetree/0.1.
|
177
|
+
documentation_uri: https://www.rubydoc.info/gems/timetree/0.1.3
|
164
178
|
post_install_message:
|
165
179
|
rdoc_options: []
|
166
180
|
require_paths:
|