google_calendar 0.4.2 → 0.4.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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- google_calendar (0.4.1)
4
+ google_calendar (0.4.3)
5
5
  signet (~> 0.5)
6
6
 
7
7
  GEM
@@ -31,7 +31,7 @@ GEM
31
31
  minitest (>= 3.0)
32
32
  hitimes (1.2.2)
33
33
  json (1.8.1)
34
- jwt (1.0.0)
34
+ jwt (1.2.0)
35
35
  listen (2.8.0)
36
36
  celluloid (>= 0.15.2)
37
37
  rb-fsevent (>= 0.9.3)
@@ -2,8 +2,8 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "google_calendar"
5
- s.version = "0.4.2"
6
- s.date = "2014-11-23"
5
+ s.version = "0.4.3"
6
+ s.date = "2014-11-30"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
 
@@ -187,7 +187,11 @@ module Google
187
187
  # Works like the create_event method.
188
188
  #
189
189
  def find_or_create_event_by_id(id, &blk)
190
- setup_event(find_event_by_id(id)[0] || Event.new, &blk)
190
+ if id.nil?
191
+ setup_event(Event.new, &blk)
192
+ else
193
+ setup_event(find_event_by_id(id)[0] || Event.new, &blk)
194
+ end
191
195
  end
192
196
 
193
197
  #
data/lib/google/event.rb CHANGED
@@ -47,8 +47,7 @@ module Google
47
47
  # ]
48
48
  #
49
49
  def initialize(params = {})
50
- [:id, :raw, :html_link,
51
- :title, :location, :calendar, :quickadd, :attendees, :description, :reminders, :start_time, :end_time, ].each do |attribute|
50
+ [:id, :raw, :html_link, :title, :location, :calendar, :quickadd, :attendees, :description, :reminders, :start_time, :end_time, ].each do |attribute|
52
51
  instance_variable_set("@#{attribute}", params[attribute])
53
52
  end
54
53
 
@@ -60,7 +59,7 @@ module Google
60
59
  # Sets the start time of the Event. Must be a Time object or a parse-able string representation of a time.
61
60
  #
62
61
  def start_time=(time)
63
- @start_time = parse_time(time)
62
+ @start_time = Event.parse_time(time)
64
63
  end
65
64
 
66
65
  #
@@ -87,7 +86,7 @@ module Google
87
86
  # Sets the end time of the Event. Must be a Time object or a parse-able string representation of a time.
88
87
  #
89
88
  def end_time=(time)
90
- @end_time = parse_time(time)
89
+ @end_time = Event.parse_time(time)
91
90
  raise ArgumentError, "End Time must be either Time or String" unless (time.is_a?(String) || time.is_a?(Time))
92
91
  @end_time = (time.is_a? String) ? Time.parse(time) : time.dup.utc
93
92
  end
@@ -279,8 +278,8 @@ module Google
279
278
  :title => e['summary'],
280
279
  :description => e['description'],
281
280
  :location => e['location'],
282
- :start_time => (e['start'] ? e['start']['dateTime'] : ''),
283
- :end_time => (e['end'] ? e['end']['dateTime'] : ''),
281
+ :start_time => Event.parse_json_time(e['start']),
282
+ :end_time => Event.parse_json_time(e['end']),
284
283
  :transparency => e['transparency'],
285
284
  :html_link => e['htmlLink'],
286
285
  :updated => e['updated'],
@@ -299,10 +298,20 @@ module Google
299
298
  @html_link = @raw['htmlLink']
300
299
  end
301
300
 
301
+ def self.parse_json_time(time_hash)
302
+ if time_hash['date']
303
+ Time.parse(time_hash['date']).utc
304
+ elsif time_hash['dateTime']
305
+ Time.parse(time_hash['dateTime']).utc
306
+ else
307
+ Time.now.utc
308
+ end
309
+ end
310
+
302
311
  #
303
312
  # A utility method used centralize time parsing.
304
313
  #
305
- def parse_time(time) #:nodoc
314
+ def self.parse_time(time) #:nodoc
306
315
  raise ArgumentError, "Start Time must be either Time or String" unless (time.is_a?(String) || time.is_a?(Time))
307
316
  (time.is_a? String) ? Time.parse(time) : time.dup.utc
308
317
  end
@@ -0,0 +1,31 @@
1
+ {
2
+ "status": "confirmed",
3
+ "kind": "calendar#event",
4
+ "end": {
5
+ "date": "2008-09-24T11:00:00-07:00"
6
+ },
7
+ "description": "Test Event",
8
+ "created": "2008-09-18T21:17:11.000Z",
9
+ "iCalUID": "fhru34kt6ikmr20knd2456l08n@google.com",
10
+ "reminders": {
11
+ "useDefault": true
12
+ },
13
+ "htmlLink": "https://www.google.com/calendar/event?eid=hJo0SgXn9qMwOHJjYWJpNnBhNTQ5dHRqbGsgZ3FlYjBpNnY3MzdrZnU1bWQwZjNldWtqbGdAZw",
14
+ "sequence": 1,
15
+ "updated": "2008-10-24T23:08:09.010Z",
16
+ "summary": "This is a test event",
17
+ "start": {
18
+ "date": "2008-09-24T10:30:00-07:00"
19
+ },
20
+ "etag": "\"2449779378020000\"",
21
+ "organizer": {
22
+ "self": true,
23
+ "displayName": "Some Person",
24
+ "email": "some.person@gmail.com"
25
+ },
26
+ "creator": {
27
+ "displayName": "Some Person",
28
+ "email": "some.person@gmail.com"
29
+ },
30
+ "id": "fhru34kt6ikmr20knd2456l10n"
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "status": "confirmed",
3
+ "kind": "calendar#event",
4
+ "end": {
5
+ "dateTimes": "2008-09-24T11:00:00-07:00"
6
+ },
7
+ "description": "Test Event",
8
+ "created": "2008-09-18T21:17:11.000Z",
9
+ "iCalUID": "fhru34kt6ikmr20knd2456l08n@google.com",
10
+ "reminders": {
11
+ "useDefault": true
12
+ },
13
+ "htmlLink": "https://www.google.com/calendar/event?eid=hJo0SgXn9qMwOHJjYWJpNnBhNTQ5dHRqbGsgZ3FlYjBpNnY3MzdrZnU1bWQwZjNldWtqbGdAZw",
14
+ "sequence": 1,
15
+ "updated": "2008-10-24T23:08:09.010Z",
16
+ "summary": "This is a test event",
17
+ "start": {
18
+ "dateTimes": "2008-09-24T10:30:00-07:00"
19
+ },
20
+ "etag": "\"2449779378020000\"",
21
+ "organizer": {
22
+ "self": true,
23
+ "displayName": "Some Person",
24
+ "email": "some.person@gmail.com"
25
+ },
26
+ "creator": {
27
+ "displayName": "Some Person",
28
+ "email": "some.person@gmail.com"
29
+ },
30
+ "id": "fhru34kt6ikmr20knd2456l12n"
31
+ }
@@ -79,9 +79,11 @@ class TestGoogleCalendar < Minitest::Test
79
79
  end
80
80
 
81
81
  should "find events in range" do
82
- start_min = Time.new(2011, 2, 1, 11, 1, 1).utc
83
- start_max = Time.new(2011, 2, 28, 23, 59, 59).utc
84
- @calendar.expects(:event_lookup).with('?timeMin=2011-02-01T19:01:01Z&timeMax=2011-03-01T07:59:59Z&orderBy=startTime&maxResults=25&singleEvents=true')
82
+ now = Time.now.utc
83
+ Time.stubs(:now).returns(now)
84
+ start_min = now
85
+ start_max = (now + 60*60*24)
86
+ @calendar.expects(:event_lookup).with("?timeMin=#{start_min.strftime("%FT%TZ")}&timeMax=#{start_max.strftime("%FT%TZ")}&orderBy=startTime&maxResults=25&singleEvents=true")
85
87
  events = @calendar.find_events_in_range(start_min, start_max)
86
88
  end
87
89
 
@@ -139,6 +141,23 @@ class TestGoogleCalendar < Minitest::Test
139
141
  assert_equal event.id, "fhru34kt6ikmr20knd2456l08n"
140
142
  end
141
143
 
144
+ should "find properly parse all day event" do
145
+ @client_mock.stubs(:body).returns( get_mock_body("find__all_day_event_by_id.json") )
146
+ event = @calendar.find_event_by_id('fhru34kt6ikmr20knd2456l10n')
147
+ assert_equal event[0].id, 'fhru34kt6ikmr20knd2456l10n'
148
+ assert_equal event[0].start_time, "2008-09-24T17:30:00Z"
149
+ end
150
+
151
+ should "find properly parse missing date event" do
152
+ now = Time.now.utc
153
+ Time.stubs(:now).returns(now)
154
+ formatted_time = now.strftime("%FT%TZ")
155
+ @client_mock.stubs(:body).returns( get_mock_body("missing_date.json") )
156
+ event = @calendar.find_event_by_id('fhru34kt6ikmr20knd2456l12n')
157
+ assert_equal event[0].id, 'fhru34kt6ikmr20knd2456l12n'
158
+ assert_equal event[0].start_time, formatted_time
159
+ end
160
+
142
161
  should "create a quickadd event" do
143
162
  @client_mock.stubs(:body).returns( get_mock_body("create_quickadd_event.json") )
144
163
 
@@ -204,6 +223,16 @@ class TestGoogleCalendar < Minitest::Test
204
223
  @calendar.events
205
224
  end
206
225
  end
226
+
227
+ should "create event when id is NIL" do
228
+ @client_mock.stubs(:body).returns( get_mock_body("find_event_by_id.json") )
229
+
230
+ event = @calendar.find_or_create_event_by_id(NIL) do |e|
231
+ e.title = 'New Event Update when id is NIL'
232
+ end
233
+
234
+ assert_equal event.title, 'New Event Update when id is NIL'
235
+ end
207
236
 
208
237
  end # Logged on context
209
238
 
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_calendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Steve Zich
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-11-23 00:00:00.000000000 Z
12
+ date: 2014-11-30 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: signet
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: terminal-notifier-guard
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rb-fsevent
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: guard-minitest
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: minitest
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: minitest-reporters
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ~>
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ~>
95
108
  - !ruby/object:Gem::Version
@@ -97,6 +110,7 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: shoulda-context
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - ~>
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - ~>
109
124
  - !ruby/object:Gem::Version
@@ -111,20 +126,23 @@ dependencies:
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: bundler
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
- - - '>='
131
+ - - ! '>='
116
132
  - !ruby/object:Gem::Version
117
133
  version: '1.2'
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
- - - '>='
139
+ - - ! '>='
123
140
  - !ruby/object:Gem::Version
124
141
  version: '1.2'
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: mocha
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
147
  - - ~>
130
148
  - !ruby/object:Gem::Version
@@ -132,6 +150,7 @@ dependencies:
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
155
  - - ~>
137
156
  - !ruby/object:Gem::Version
@@ -139,6 +158,7 @@ dependencies:
139
158
  - !ruby/object:Gem::Dependency
140
159
  name: rake
141
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
142
162
  requirements:
143
163
  - - ~>
144
164
  - !ruby/object:Gem::Version
@@ -146,6 +166,7 @@ dependencies:
146
166
  type: :development
147
167
  prerelease: false
148
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
149
170
  requirements:
150
171
  - - ~>
151
172
  - !ruby/object:Gem::Version
@@ -153,6 +174,7 @@ dependencies:
153
174
  - !ruby/object:Gem::Dependency
154
175
  name: rdoc
155
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
156
178
  requirements:
157
179
  - - ~>
158
180
  - !ruby/object:Gem::Version
@@ -160,6 +182,7 @@ dependencies:
160
182
  type: :development
161
183
  prerelease: false
162
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
163
186
  requirements:
164
187
  - - ~>
165
188
  - !ruby/object:Gem::Version
@@ -197,10 +220,12 @@ files:
197
220
  - test/mocks/create_quickadd_event.json
198
221
  - test/mocks/empty_events.json
199
222
  - test/mocks/events.json
223
+ - test/mocks/find__all_day_event_by_id.json
200
224
  - test/mocks/find_event_by_id.json
201
225
  - test/mocks/login_with_auth_code_fail.json
202
226
  - test/mocks/login_with_auth_code_success.json
203
227
  - test/mocks/login_with_refresh_token_success.json
228
+ - test/mocks/missing_date.json
204
229
  - test/mocks/query_events.json
205
230
  - test/mocks/repeating_events.json
206
231
  - test/mocks/successful_login.json
@@ -208,26 +233,27 @@ files:
208
233
  homepage: http://northworld.github.io/google_calendar/
209
234
  licenses:
210
235
  - MIT
211
- metadata: {}
212
236
  post_install_message:
213
237
  rdoc_options: []
214
238
  require_paths:
215
239
  - lib
216
240
  required_ruby_version: !ruby/object:Gem::Requirement
241
+ none: false
217
242
  requirements:
218
- - - '>='
243
+ - - ! '>='
219
244
  - !ruby/object:Gem::Version
220
245
  version: '0'
221
246
  required_rubygems_version: !ruby/object:Gem::Requirement
247
+ none: false
222
248
  requirements:
223
- - - '>='
249
+ - - ! '>='
224
250
  - !ruby/object:Gem::Version
225
251
  version: '0'
226
252
  requirements: []
227
253
  rubyforge_project:
228
- rubygems_version: 2.0.3
254
+ rubygems_version: 1.8.24
229
255
  signing_key:
230
- specification_version: 4
256
+ specification_version: 3
231
257
  summary: A lightweight Google Calendar API wrapper
232
258
  test_files:
233
259
  - test/helper.rb
@@ -238,10 +264,12 @@ test_files:
238
264
  - test/mocks/create_quickadd_event.json
239
265
  - test/mocks/empty_events.json
240
266
  - test/mocks/events.json
267
+ - test/mocks/find__all_day_event_by_id.json
241
268
  - test/mocks/find_event_by_id.json
242
269
  - test/mocks/login_with_auth_code_fail.json
243
270
  - test/mocks/login_with_auth_code_success.json
244
271
  - test/mocks/login_with_refresh_token_success.json
272
+ - test/mocks/missing_date.json
245
273
  - test/mocks/query_events.json
246
274
  - test/mocks/repeating_events.json
247
275
  - test/mocks/successful_login.json
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: c297b3a72681304aedd3ab416624ad08cf0a81a0
4
- data.tar.gz: e442a228ba475e8aaffc59450146ba5f1ebe0fec
5
- SHA512:
6
- metadata.gz: 6e9f87759fb2caaecc84a997afef82fcced67b8551d5c71da44d4043106f192bed69c520951dde71c9b1d870f681433ab1b52b0255fc5d9cffa1035012900f7e
7
- data.tar.gz: 5fcd845f10346f292710c16c5cba98c35aae2a0889fc1affb3ea623bf02b89877998c8c734baef722b63d648364cbe0f802c8147f11df88779260c22961a69ca