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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de434a07fd2b0d7024c41f1bc6a555a053fe07da002a60b91479a3f239a5bac6
4
- data.tar.gz: a6ab608d7d5bceb77e05d97b2243bc804171602d538f29494b3c6796737f7fc1
3
+ metadata.gz: 1a43c7c885e6f0f2e55fdcf9b6c145e13e981fea4fee23dc468f5f16923826c0
4
+ data.tar.gz: b1dffa32b6a9d80ebca9e6de06a030e43e9d2bfe895bf9ac5ad4fa687d8f3b4a
5
5
  SHA512:
6
- metadata.gz: 67ba773c6beef87fb6e23c9e386b6d685ac4317b99516690ca321f3c216df695fa9a5b7a33c979dd142e37cd95d9ab0f400ffb3c421f77ac20339b2ed344495c
7
- data.tar.gz: 85957d72ca8df7f9be67cfaa7b962d892add2a3d2c5745efd41d89a0120553628e36c828de5b6b482e57e0cce7a67ce9959df2542222e4217f339a495283997c
6
+ metadata.gz: be24215ef1f52ccb2b0c8a8ce87f29dc2132e5987ba99533c73017cbc6a669d45dd5d565c1ff3fa1824d66cadeeddaf91f36ccaf6abd1150c755e0f836383e18
7
+ data.tar.gz: 1eb41d1864cabaf26293102c7a1b288da4e36930bce4599270e9e57e3b00e85a03e1d0bf2296f1d52ba0d26fcc4418ce287fc45a382da63c99c66209840890c3
data/.gitignore CHANGED
@@ -7,4 +7,5 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
 
10
+ coverage
10
11
  Gemfile.lock
@@ -1,3 +1,7 @@
1
+ # 0.1.3
2
+
3
+ - refs #7 #9 make the code coverage 100%.
4
+
1
5
  # 0.1.2
2
6
 
3
7
  - refs #1 fix typo Event#recurrences to recurrence
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
@@ -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
- raise Error, '@client is nil.' if @client.nil?
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
 
@@ -50,9 +50,9 @@ module TimeTree
50
50
  end
51
51
  end
52
52
 
53
- def initialize(id:, type:, client: nil, attributes: nil, relationships: nil, included: nil)
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
@@ -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
- raise Error, '@client is nil.' if @client.nil?
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
- raise Error, '@client is nil.' if @client.nil?
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 label information used in event.
53
+ # Get a calendar's member information.
56
54
  #
57
- # @return [Array<TimeTree::Label>]
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 labels
62
- return @labels if defined? @labels
63
- raise Error, '@client is nil.' if @client.nil?
59
+ def members
60
+ return @members if defined? @members
64
61
 
65
- @labels = @client.calendar_labels id
62
+ check_client
63
+ @members = @client.calendar_members id
66
64
  end
67
65
 
68
66
  #
69
- # Get a calendar's member information.
67
+ # Get a calendar's label information used in event.
70
68
  #
71
- # @return [Array<TimeTree::User>]
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 members
76
- return @members if defined? @members
77
- raise Error, '@client is nil.' if @client.nil?
73
+ def labels
74
+ return @labels if defined? @labels
78
75
 
79
- @members = @client.calendar_members id
76
+ check_client
77
+ @labels = @client.calendar_labels id
80
78
  end
81
79
  end
82
80
  end
@@ -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
- raise Error, 'token is required.' unless ready_token?
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 to_model(data, included: nil)
243
- TimeTree::BaseModel.to_model data, client: self, included: included
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 ready_token?
247
- @token.is_a?(String) && !@token.empty?
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)
@@ -38,9 +38,9 @@ module TimeTree
38
38
  # @return [TimeTree::User]
39
39
  attr_reader :creator
40
40
  # @return [TimeTree::Label]
41
- attr_reader :label
41
+ attr_accessor :label
42
42
  # @return [Array<TimeTree::User>]
43
- attr_reader :attendees
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
- raise Error, 'client is required.' if @client.nil?
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
- raise Error, '@client is nil.' if @client.nil?
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
- raise Error, '@client is nil.' if @client.nil?
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
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TimeTree
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
@@ -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.2
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-24 00:00:00.000000000 Z
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.2
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: