clio-gcal4ruby 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/gcal4ruby/base.rb +2 -0
- data/lib/gcal4ruby/calendar.rb +9 -8
- data/lib/gcal4ruby/event.rb +38 -11
- metadata +3 -3
data/lib/gcal4ruby/base.rb
CHANGED
data/lib/gcal4ruby/calendar.rb
CHANGED
@@ -35,7 +35,7 @@ module GCal4Ruby
|
|
35
35
|
CALENDAR_FEED = "http://www.google.com/calendar/feeds/default/owncalendars/full"
|
36
36
|
|
37
37
|
attr_accessor :title, :summary, :hidden, :timezone, :color, :where, :selected
|
38
|
-
attr_reader :service, :id, :event_feed, :editable, :edit_feed
|
38
|
+
attr_reader :service, :id, :event_feed, :editable, :edit_feed, :self_feed
|
39
39
|
|
40
40
|
def initialize(service, attributes = {})
|
41
41
|
super()
|
@@ -108,7 +108,7 @@ module GCal4Ruby
|
|
108
108
|
#calendar object is cleared.
|
109
109
|
def delete
|
110
110
|
if @exists
|
111
|
-
if @service.send_delete(
|
111
|
+
if @service.send_delete(@id)
|
112
112
|
@exists = false
|
113
113
|
@title = nil
|
114
114
|
@summary = nil
|
@@ -171,11 +171,11 @@ module GCal4Ruby
|
|
171
171
|
ret
|
172
172
|
end
|
173
173
|
|
174
|
-
def self.get(service,
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
174
|
+
def self.get(service, self_feed)
|
175
|
+
ret = service.send_get(self_feed)
|
176
|
+
c = Calendar.new(service)
|
177
|
+
c.load(ret.body)
|
178
|
+
return c
|
179
179
|
end
|
180
180
|
|
181
181
|
def self.query(service, query_term)
|
@@ -229,7 +229,7 @@ module GCal4Ruby
|
|
229
229
|
xml.root.elements.each(){}.map do |ele|
|
230
230
|
case ele.name
|
231
231
|
when "id"
|
232
|
-
@id = ele.text.gsub("http://www.google.com/calendar/feeds/default/calendars/", "")
|
232
|
+
@id = ele.text #ele.text.gsub("http://www.google.com/calendar/feeds/default/calendars/", "")
|
233
233
|
when 'title'
|
234
234
|
@title = ele.text
|
235
235
|
when 'summary'
|
@@ -245,6 +245,7 @@ module GCal4Ruby
|
|
245
245
|
when "link"
|
246
246
|
href = ele.attributes['href']
|
247
247
|
case ele.attributes['rel']
|
248
|
+
when "self" then @self_feed = href
|
248
249
|
when "edit" then @edit_feed = href
|
249
250
|
when "http://schemas.google.com/gCal/2005#eventFeed" then @event_feed = href
|
250
251
|
when "http://schemas.google.com/acl/2007#accessControlList" then @acl_feed = href
|
data/lib/gcal4ruby/event.rb
CHANGED
@@ -64,6 +64,9 @@ module GCal4Ruby
|
|
64
64
|
attr_accessor :id
|
65
65
|
#Flag indicating whether it is an all day event
|
66
66
|
attr_accessor :all_day
|
67
|
+
|
68
|
+
attr_accessor :clio_id
|
69
|
+
attr_accessor :clio_updated_at
|
67
70
|
|
68
71
|
@attendees
|
69
72
|
|
@@ -80,6 +83,7 @@ module GCal4Ruby
|
|
80
83
|
#The date the event was last edited
|
81
84
|
attr_reader :edited
|
82
85
|
|
86
|
+
|
83
87
|
#Sets the reminder options for the event. Parameter must be a hash containing one of
|
84
88
|
#:hours, :minutes and :days, which are simply the number of each before the event start date you'd like to
|
85
89
|
#receive the reminder.
|
@@ -189,8 +193,8 @@ module GCal4Ruby
|
|
189
193
|
end
|
190
194
|
@xml ||= EVENT_XML
|
191
195
|
@calendar ||= calendar
|
192
|
-
@transparency ||= "http://schemas.google.com/g/2005#event.opaque"
|
193
|
-
@status ||= "http://schemas.google.com/g/2005#event.confirmed"
|
196
|
+
# @transparency ||= "http://schemas.google.com/g/2005#event.opaque"
|
197
|
+
# @status ||= "http://schemas.google.com/g/2005#event.confirmed"
|
194
198
|
@attendees ||= []
|
195
199
|
@all_day ||= false
|
196
200
|
end
|
@@ -219,6 +223,7 @@ module GCal4Ruby
|
|
219
223
|
|
220
224
|
#Returns an XML representation of the event.
|
221
225
|
def to_xml()
|
226
|
+
updated_clio_id = false
|
222
227
|
xml = REXML::Document.new(@xml)
|
223
228
|
xml.root.elements.each(){}.map do |ele|
|
224
229
|
case ele.name
|
@@ -278,6 +283,12 @@ module GCal4Ruby
|
|
278
283
|
w.attributes["endTime"] = @all_day ? @end.strftime("%Y-%m-%d") : @end.xmlschema
|
279
284
|
set_reminder(w)
|
280
285
|
end
|
286
|
+
when "extendedProperty"
|
287
|
+
ele.attributes["value"] = case ele.attributes["name"]
|
288
|
+
when "http://schemas.goclio.com/g/2010#event" then
|
289
|
+
updated_clio_id = true
|
290
|
+
{ :guid => @clio_id, :updated_at => @clio_updated_at }.to_json
|
291
|
+
end
|
281
292
|
end
|
282
293
|
end
|
283
294
|
if not @attendees.empty?
|
@@ -285,6 +296,10 @@ module GCal4Ruby
|
|
285
296
|
xml.root.add_element("gd:who", {"email" => a[:email], "valueString" => a[:name], "rel" => "http://schemas.google.com/g/2005#event.attendee"})
|
286
297
|
end
|
287
298
|
end
|
299
|
+
unless updated_clio_id
|
300
|
+
value = { :guid => @clio_id, :updated_at => @clio_updated_at }.to_json
|
301
|
+
xml.root.add_element("gd:extendedProperty", {"name" => "http://schemas.goclio.com/g/2010#event", "value"=> value })
|
302
|
+
end
|
288
303
|
xml.to_s
|
289
304
|
end
|
290
305
|
|
@@ -297,11 +312,11 @@ module GCal4Ruby
|
|
297
312
|
xml.root.elements.each(){}.map do |ele|
|
298
313
|
case ele.name
|
299
314
|
when 'updated'
|
300
|
-
@updated = ele.text
|
315
|
+
@updated = Time.parse ele.text
|
301
316
|
when 'published'
|
302
|
-
@published = ele.text
|
317
|
+
@published = Time.parse ele.text
|
303
318
|
when 'edited'
|
304
|
-
@edited = ele.text
|
319
|
+
@edited = Time.parse ele.text
|
305
320
|
when 'id'
|
306
321
|
@id, @edit_feed = ele.text
|
307
322
|
when 'title'
|
@@ -339,18 +354,26 @@ module GCal4Ruby
|
|
339
354
|
@status = :confirmed
|
340
355
|
when "http://schemas.google.com/g/2005#event.tentative"
|
341
356
|
@status = :tentative
|
342
|
-
when "http://schemas.google.com/g/2005#event.
|
357
|
+
when "http://schemas.google.com/g/2005#event.canceled"
|
343
358
|
@status = :cancelled
|
344
359
|
end
|
345
360
|
when 'recurrence'
|
346
361
|
@recurrence = ele.text #Recurrence.new(ele.text)
|
347
|
-
when "transparency"
|
362
|
+
when "gd:transparency"
|
348
363
|
case ele.attributes["value"]
|
349
364
|
when "http://schemas.google.com/g/2005#event.transparent"
|
350
365
|
@transparency = :free
|
351
366
|
when "http://schemas.google.com/g/2005#event.opaque"
|
352
367
|
@transparency = :busy
|
353
368
|
end
|
369
|
+
when "extendedProperty"
|
370
|
+
case ele.attributes["name"]
|
371
|
+
when "http://schemas.goclio.com/g/2010#event" then
|
372
|
+
json = ele.attributes["value"]
|
373
|
+
json = ActiveSupport::JSON.decode(json)
|
374
|
+
@clio_id = json['guid']
|
375
|
+
@clio_updated_at = Time.parse json['updated_at']
|
376
|
+
end
|
354
377
|
end
|
355
378
|
end
|
356
379
|
end
|
@@ -393,10 +416,14 @@ module GCal4Ruby
|
|
393
416
|
if test
|
394
417
|
puts "id passed, finding event by id" if calendar.service.debug
|
395
418
|
puts "id = "+query if calendar.service.debug
|
396
|
-
event_id = query.gsub("/events/","/private/full/") #fix provided by groesser3
|
397
|
-
|
398
|
-
|
399
|
-
|
419
|
+
# event_id = query.gsub("/events/","/private/full/") #fix provided by groesser3
|
420
|
+
event_id = query
|
421
|
+
|
422
|
+
begin
|
423
|
+
es = calendar.service.send_get(event_id)
|
424
|
+
puts es.inspect if calendar.service.debug
|
425
|
+
rescue Exception => e
|
426
|
+
end
|
400
427
|
if es
|
401
428
|
entry = REXML::Document.new(es.read_body).root
|
402
429
|
puts 'event found' if calendar.service.debug
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clio-gcal4ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 3
|
10
|
+
version: 0.3.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Mike Reich
|