google_calendar 0.1.0
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/.document +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +27 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +52 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/google_calendar.gemspec +101 -0
- data/lib/google/calendar.rb +138 -0
- data/lib/google/connection.rb +110 -0
- data/lib/google/errors.rb +6 -0
- data/lib/google/event.rb +150 -0
- data/lib/google/net/https.rb +19 -0
- data/lib/google_calendar.rb +6 -0
- data/test/helper.rb +21 -0
- data/test/mocks/create_event.xml +31 -0
- data/test/mocks/events.xml +119 -0
- data/test/mocks/find_event_by_id.xml +33 -0
- data/test/mocks/query_events.xml +55 -0
- data/test/mocks/successful_login.txt +3 -0
- data/test/test_google_calendar.rb +142 -0
- metadata +286 -0
data/lib/google/event.rb
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module Google
|
5
|
+
|
6
|
+
# Represents a google Event.
|
7
|
+
#
|
8
|
+
# === Attributes
|
9
|
+
#
|
10
|
+
# * +id+ - The google assigned id of the event (nil until saved), read only.
|
11
|
+
# * +title+ - The title of the event, read/write.
|
12
|
+
# * +content+ - The content of the event, read/write.
|
13
|
+
# * +start_time+ - The start time of the event (Time object, defaults to now), read/write.
|
14
|
+
# * +end_time+ - The end time of the event (Time object, defaults to one hour from now), read/write.
|
15
|
+
# * +calendar+ - What calendar the event belongs to, read/write.
|
16
|
+
# * +raw_xml+ - The full google xml representation of the event.
|
17
|
+
#
|
18
|
+
class Event
|
19
|
+
attr_reader :id, :raw_xml
|
20
|
+
attr_accessor :title, :content, :where, :calendar
|
21
|
+
|
22
|
+
# Create a new event, and optionally set it's attributes.
|
23
|
+
#
|
24
|
+
# ==== Example
|
25
|
+
# Event.new(:title => 'Swimming',
|
26
|
+
# :content => 'Do not forget a towel this time',
|
27
|
+
# :where => 'The Ocean',
|
28
|
+
# :start_time => Time.now,
|
29
|
+
# :end_time => Time.now + (60 * 60),
|
30
|
+
# :calendar => calendar_object)
|
31
|
+
#
|
32
|
+
def initialize(params = {})
|
33
|
+
@id = params[:id]
|
34
|
+
@title = params[:title]
|
35
|
+
@content = params[:content]
|
36
|
+
@where = params[:where]
|
37
|
+
@start_time = params[:start_time]
|
38
|
+
@end_time = params[:end_time]
|
39
|
+
@calendar = params[:calendar]
|
40
|
+
@raw_xml = params[:raw_xml]
|
41
|
+
end
|
42
|
+
|
43
|
+
# Sets the start time of the Event. Must be a Time object or a parsable string representation of a time.
|
44
|
+
#
|
45
|
+
def start_time=(time)
|
46
|
+
raise ArgumentError, "Start Time must be either Time or String" unless (time.is_a?(String) || time.is_a?(Time))
|
47
|
+
@start_time = (time.is_a? String) ? Time.parse(time) : time
|
48
|
+
end
|
49
|
+
|
50
|
+
# Get the start_time of the event.
|
51
|
+
#
|
52
|
+
# If no time is set (i.e. new event) it defaults to the current time.
|
53
|
+
#
|
54
|
+
def start_time
|
55
|
+
@start_time ||= Time.now
|
56
|
+
(@start_time.is_a? String) ? @start_time : @start_time.utc.xmlschema
|
57
|
+
end
|
58
|
+
|
59
|
+
# Get the end_time of the event.
|
60
|
+
#
|
61
|
+
# If no time is set (i.e. new event) it defaults to one hour in the future.
|
62
|
+
#
|
63
|
+
def end_time
|
64
|
+
@end_time ||= Time.now + (60 * 60) # seconds * min
|
65
|
+
(@end_time.is_a? String) ? @end_time : @end_time.utc.xmlschema
|
66
|
+
end
|
67
|
+
|
68
|
+
# Sets the end time of the Event. Must be a Time object or a parsable string representation of a time.
|
69
|
+
#
|
70
|
+
def end_time=(time)
|
71
|
+
raise ArgumentError, "End Time must be either Time or String" unless (time.is_a?(String) || time.is_a?(Time))
|
72
|
+
@end_time = ((time.is_a? String) ? Time.parse(time) : time)
|
73
|
+
end
|
74
|
+
|
75
|
+
#
|
76
|
+
def self.build_from_google_feed(xml, calendar)
|
77
|
+
Nokogiri::XML(xml).xpath("//xmlns:entry").collect {|e| new_from_xml(e, calendar)}
|
78
|
+
end
|
79
|
+
|
80
|
+
# Google XMl representation of an evetn object.
|
81
|
+
#
|
82
|
+
def to_xml
|
83
|
+
"<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>
|
84
|
+
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category>
|
85
|
+
<title type='text'>#{title}</title>
|
86
|
+
<content type='text'>#{content}</content>
|
87
|
+
<gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency>
|
88
|
+
<gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus>
|
89
|
+
<gd:where valueString=\"#{where}\"></gd:where>
|
90
|
+
<gd:when startTime=\"#{start_time}\" endTime=\"#{end_time}\"></gd:when>
|
91
|
+
</entry>"
|
92
|
+
end
|
93
|
+
|
94
|
+
# String representation of an event object.
|
95
|
+
#
|
96
|
+
def to_s
|
97
|
+
"#{title} (#{self.id})\n\t#{start_time}\n\t#{end_time}\n\t#{where}\n\t#{content}"
|
98
|
+
end
|
99
|
+
|
100
|
+
# Saves an event.
|
101
|
+
# Note: If using this on an event you created without using a calendar object,
|
102
|
+
# make sure to set the calendar before calling this method.
|
103
|
+
#
|
104
|
+
def save
|
105
|
+
update_after_save(@calendar.save_event(self))
|
106
|
+
end
|
107
|
+
|
108
|
+
# Deletes an event.
|
109
|
+
# Note: If using this on an event you created without using a calendar object,
|
110
|
+
# make sure to set the calendar before calling this method.
|
111
|
+
#
|
112
|
+
def delete
|
113
|
+
@calendar.delete_event(self)
|
114
|
+
@id = nil
|
115
|
+
end
|
116
|
+
|
117
|
+
protected
|
118
|
+
|
119
|
+
# Create a new event from a google 'entry' xml block.
|
120
|
+
#
|
121
|
+
def self.new_from_xml(xml, calendar) #:nodoc:
|
122
|
+
id = xml.at_xpath("gCal:uid")['value'].split('@').first
|
123
|
+
title = xml.at_xpath("xmlns:title").content
|
124
|
+
content = xml.at_xpath("xmlns:content").content
|
125
|
+
where = xml.at_xpath("gd:where")['valueString']
|
126
|
+
start_time = xml.at_xpath("gd:when")['startTime']
|
127
|
+
end_time = xml.at_xpath("gd:when")['endTime']
|
128
|
+
|
129
|
+
Event.new(:id => id,
|
130
|
+
:title => title,
|
131
|
+
:content => content,
|
132
|
+
:where => where,
|
133
|
+
:start_time => start_time,
|
134
|
+
:end_time => end_time,
|
135
|
+
:calendar => calendar,
|
136
|
+
:raw_xml => xml)
|
137
|
+
end
|
138
|
+
|
139
|
+
# Set the ID after google assigns it (only necessary when we are creating a new event)
|
140
|
+
#
|
141
|
+
def update_after_save(respose) #:nodoc:
|
142
|
+
return if @id && @id != ''
|
143
|
+
|
144
|
+
xml = Nokogiri::XML(respose.body).at_xpath("//xmlns:entry")
|
145
|
+
@id = xml.at_xpath("gCal:uid")['value'].split('@').first
|
146
|
+
@raw_xml = xml
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "net/http"
|
2
|
+
require "net/https"
|
3
|
+
|
4
|
+
module Net
|
5
|
+
|
6
|
+
# Helper Method for using SSL
|
7
|
+
#
|
8
|
+
class HTTPS < HTTP
|
9
|
+
|
10
|
+
# Setup a secure connection with defaults
|
11
|
+
#
|
12
|
+
def initialize(address, port = nil)
|
13
|
+
super(address, port)
|
14
|
+
self.use_ssl = true
|
15
|
+
self.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
require 'mocha'
|
13
|
+
|
14
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
15
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
16
|
+
require 'google_calendar'
|
17
|
+
require 'google/net/https'
|
18
|
+
|
19
|
+
class Test::Unit::TestCase
|
20
|
+
@@mock_path = File.expand_path(File.join(File.dirname(__FILE__), 'mocks'))
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gCal="http://schemas.google.com/gCal/2005" xmlns:gd="http://schemas.google.com/g/2005">
|
3
|
+
<id>http://www.google.com/calendar/feeds/default/private/full/b1vq6rj4r4mg85kcickc7iomb0</id>
|
4
|
+
<published>2010-12-13T07:34:25.000Z</published>
|
5
|
+
<updated>2010-12-13T07:34:25.000Z</updated>
|
6
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
7
|
+
<title type="text">New Event</title>
|
8
|
+
<content type="text">A new event</content>
|
9
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/event?eid=YjF2cTZyajRyNG1nODVrY2lja2M3aW9tYjAgc3RldmUuemljaEBt" title="alternate"/>
|
10
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/b1vq6rj4r4mg85kcickc7iomb0"/>
|
11
|
+
<link rel="edit" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/b1vq6rj4r4mg85kcickc7iomb0/63427908865"/>
|
12
|
+
<author>
|
13
|
+
<name>Some Guy</name>
|
14
|
+
<email>some.guy@gmail.com</email>
|
15
|
+
</author>
|
16
|
+
<gd:comments>
|
17
|
+
<gd:feedLink href="https://www.google.com/calendar/feeds/default/private/full/b1vq6rj4r4mg85kcickc7iomb0/comments"/>
|
18
|
+
</gd:comments>
|
19
|
+
<gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
|
20
|
+
<gd:where valueString="Joe's House"/>
|
21
|
+
<gd:who email="some.guy@gmail.com" rel="http://schemas.google.com/g/2005#event.organizer" valueString="some.guy@gmail.com"/>
|
22
|
+
<gd:when endTime="2010-12-13T01:34:20.000-08:00" startTime="2010-12-13T00:34:20.000-08:00"/>
|
23
|
+
<gd:transparency value="http://schemas.google.com/g/2005#event.opaque"/>
|
24
|
+
<gd:visibility value="http://schemas.google.com/g/2005#event.default"/>
|
25
|
+
<gCal:anyoneCanAddSelf value="false"/>
|
26
|
+
<gCal:guestsCanInviteOthers value="true"/>
|
27
|
+
<gCal:guestsCanModify value="false"/>
|
28
|
+
<gCal:guestsCanSeeGuests value="true"/>
|
29
|
+
<gCal:sequence value="0"/>
|
30
|
+
<gCal:uid value="b1vq6rj4r4mg85kcickc7iomb0@google.com"/>
|
31
|
+
</entry>
|
@@ -0,0 +1,119 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:gCal="http://schemas.google.com/gCal/2005" xmlns:gd="http://schemas.google.com/g/2005">
|
3
|
+
<id>http://www.google.com/calendar/feeds/default/private/full</id>
|
4
|
+
<updated>2010-12-10T07:09:25.000Z</updated>
|
5
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
6
|
+
<title type="text">Some Guy</title>
|
7
|
+
<subtitle type="text">Some Guy</subtitle>
|
8
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/embed?src=some.guy@gmail.com"/>
|
9
|
+
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full"/>
|
10
|
+
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full"/>
|
11
|
+
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/batch"/>
|
12
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full?q=Test&max-results=25"/>
|
13
|
+
<author>
|
14
|
+
<name>Some Guy</name>
|
15
|
+
<email>some.guy@gmail.com</email>
|
16
|
+
</author>
|
17
|
+
<generator version="1.0" uri="http://www.google.com/calendar">Google Calendar</generator>
|
18
|
+
<openSearch:totalResults>1</openSearch:totalResults>
|
19
|
+
<openSearch:startIndex>1</openSearch:startIndex>
|
20
|
+
<openSearch:itemsPerPage>25</openSearch:itemsPerPage>
|
21
|
+
<gCal:timezone value="America/Los_Angeles"/>
|
22
|
+
<gCal:timesCleaned value="0"/>
|
23
|
+
<entry>
|
24
|
+
<id>http://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio</id>
|
25
|
+
<published>2010-04-22T16:05:29.000Z</published>
|
26
|
+
<updated>2010-05-01T05:14:18.000Z</updated>
|
27
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
28
|
+
<title type="text">Test</title>
|
29
|
+
<content type="text"/>
|
30
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/event?eid=b2o2Zm1wYXVsYnZrOW91b2owbGo0djZoaW8gc3RldmUuemljaEBt" title="alternate"/>
|
31
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio"/>
|
32
|
+
<link rel="edit" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/63408374058"/>
|
33
|
+
<author>
|
34
|
+
<name>Some Guy</name>
|
35
|
+
<email>some.guy@gmail.com</email>
|
36
|
+
</author>
|
37
|
+
<gd:comments>
|
38
|
+
<gd:feedLink href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/comments"/>
|
39
|
+
</gd:comments>
|
40
|
+
<gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
|
41
|
+
<gd:where valueString=""/>
|
42
|
+
<gd:who email="some.guy@gmail.com" rel="http://schemas.google.com/g/2005#event.organizer" valueString="some.guy@gmail.com"/>
|
43
|
+
<gd:when endTime="2010-04-09" startTime="2010-04-08">
|
44
|
+
<gd:reminder method="alert" minutes="10"/>
|
45
|
+
</gd:when>
|
46
|
+
<gd:transparency value="http://schemas.google.com/g/2005#event.transparent"/>
|
47
|
+
<gd:visibility value="http://schemas.google.com/g/2005#event.default"/>
|
48
|
+
<gCal:anyoneCanAddSelf value="false"/>
|
49
|
+
<gCal:guestsCanInviteOthers value="true"/>
|
50
|
+
<gCal:guestsCanModify value="false"/>
|
51
|
+
<gCal:guestsCanSeeGuests value="true"/>
|
52
|
+
<gCal:sequence value="0"/>
|
53
|
+
<gCal:uid value="oj6fmpaulbvk9ouoj0lj4v6hio@google.com"/>
|
54
|
+
</entry>
|
55
|
+
<entry>
|
56
|
+
<id>http://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio</id>
|
57
|
+
<published>2010-04-22T16:05:29.000Z</published>
|
58
|
+
<updated>2010-05-01T05:14:18.000Z</updated>
|
59
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
60
|
+
<title type="text">Test</title>
|
61
|
+
<content type="text"/>
|
62
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/event?eid=b2o2Zm1wYXVsYnZrOW91b2owbGo0djZoaW8gc3RldmUuemljaEBt" title="alternate"/>
|
63
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio"/>
|
64
|
+
<link rel="edit" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/63408374058"/>
|
65
|
+
<author>
|
66
|
+
<name>Some Guy</name>
|
67
|
+
<email>some.guy@gmail.com</email>
|
68
|
+
</author>
|
69
|
+
<gd:comments>
|
70
|
+
<gd:feedLink href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/comments"/>
|
71
|
+
</gd:comments>
|
72
|
+
<gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
|
73
|
+
<gd:where valueString=""/>
|
74
|
+
<gd:who email="some.guy@gmail.com" rel="http://schemas.google.com/g/2005#event.organizer" valueString="some.guy@gmail.com"/>
|
75
|
+
<gd:when endTime="2010-04-09" startTime="2010-04-08">
|
76
|
+
<gd:reminder method="alert" minutes="10"/>
|
77
|
+
</gd:when>
|
78
|
+
<gd:transparency value="http://schemas.google.com/g/2005#event.transparent"/>
|
79
|
+
<gd:visibility value="http://schemas.google.com/g/2005#event.default"/>
|
80
|
+
<gCal:anyoneCanAddSelf value="false"/>
|
81
|
+
<gCal:guestsCanInviteOthers value="true"/>
|
82
|
+
<gCal:guestsCanModify value="false"/>
|
83
|
+
<gCal:guestsCanSeeGuests value="true"/>
|
84
|
+
<gCal:sequence value="0"/>
|
85
|
+
<gCal:uid value="oj6fmpaulbvk9ouoj0lj4v6hio@google.com"/>
|
86
|
+
</entry>
|
87
|
+
<entry>
|
88
|
+
<id>http://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio</id>
|
89
|
+
<published>2010-04-22T16:05:29.000Z</published>
|
90
|
+
<updated>2010-05-01T05:14:18.000Z</updated>
|
91
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
92
|
+
<title type="text">Test</title>
|
93
|
+
<content type="text"/>
|
94
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/event?eid=b2o2Zm1wYXVsYnZrOW91b2owbGo0djZoaW8gc3RldmUuemljaEBt" title="alternate"/>
|
95
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio"/>
|
96
|
+
<link rel="edit" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/63408374058"/>
|
97
|
+
<author>
|
98
|
+
<name>Some Guy</name>
|
99
|
+
<email>some.guy@gmail.com</email>
|
100
|
+
</author>
|
101
|
+
<gd:comments>
|
102
|
+
<gd:feedLink href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/comments"/>
|
103
|
+
</gd:comments>
|
104
|
+
<gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
|
105
|
+
<gd:where valueString=""/>
|
106
|
+
<gd:who email="some.guy@gmail.com" rel="http://schemas.google.com/g/2005#event.organizer" valueString="some.guy@gmail.com"/>
|
107
|
+
<gd:when endTime="2010-04-09" startTime="2010-04-08">
|
108
|
+
<gd:reminder method="alert" minutes="10"/>
|
109
|
+
</gd:when>
|
110
|
+
<gd:transparency value="http://schemas.google.com/g/2005#event.transparent"/>
|
111
|
+
<gd:visibility value="http://schemas.google.com/g/2005#event.default"/>
|
112
|
+
<gCal:anyoneCanAddSelf value="false"/>
|
113
|
+
<gCal:guestsCanInviteOthers value="true"/>
|
114
|
+
<gCal:guestsCanModify value="false"/>
|
115
|
+
<gCal:guestsCanSeeGuests value="true"/>
|
116
|
+
<gCal:sequence value="0"/>
|
117
|
+
<gCal:uid value="oj6fmpaulbvk9ouoj0lj4v6hio@google.com"/>
|
118
|
+
</entry>
|
119
|
+
</feed>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gCal="http://schemas.google.com/gCal/2005" xmlns:gd="http://schemas.google.com/g/2005">
|
3
|
+
<id>http://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio</id>
|
4
|
+
<published>2010-04-22T16:05:29.000Z</published>
|
5
|
+
<updated>2010-05-01T05:14:18.000Z</updated>
|
6
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
7
|
+
<title type="text">Test</title>
|
8
|
+
<content type="text"/>
|
9
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/event?eid=b2o2Zm1wYXVsYnZrOW91b2owbGo0djZoaW8gc3RldmUuemljaEBt" title="alternate"/>
|
10
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio"/>
|
11
|
+
<link rel="edit" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/63408374058"/>
|
12
|
+
<author>
|
13
|
+
<name>Some Guy</name>
|
14
|
+
<email>some.guy@gmail.com</email>
|
15
|
+
</author>
|
16
|
+
<gd:comments>
|
17
|
+
<gd:feedLink href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/comments"/>
|
18
|
+
</gd:comments>
|
19
|
+
<gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
|
20
|
+
<gd:where valueString=""/>
|
21
|
+
<gd:who email="some.guy@gmail.com" rel="http://schemas.google.com/g/2005#event.organizer" valueString="some.guy@gmail.com"/>
|
22
|
+
<gd:when endTime="2010-04-09" startTime="2010-04-08">
|
23
|
+
<gd:reminder method="alert" minutes="10"/>
|
24
|
+
</gd:when>
|
25
|
+
<gd:transparency value="http://schemas.google.com/g/2005#event.transparent"/>
|
26
|
+
<gd:visibility value="http://schemas.google.com/g/2005#event.default"/>
|
27
|
+
<gCal:anyoneCanAddSelf value="false"/>
|
28
|
+
<gCal:guestsCanInviteOthers value="true"/>
|
29
|
+
<gCal:guestsCanModify value="false"/>
|
30
|
+
<gCal:guestsCanSeeGuests value="true"/>
|
31
|
+
<gCal:sequence value="0"/>
|
32
|
+
<gCal:uid value="oj6fmpaulbvk9ouoj0lj4v6hio@google.com"/>
|
33
|
+
</entry>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:gCal="http://schemas.google.com/gCal/2005" xmlns:gd="http://schemas.google.com/g/2005">
|
3
|
+
<id>http://www.google.com/calendar/feeds/default/private/full</id>
|
4
|
+
<updated>2010-12-10T07:09:25.000Z</updated>
|
5
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
6
|
+
<title type="text">Some Guy</title>
|
7
|
+
<subtitle type="text">Some Guy</subtitle>
|
8
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/embed?src=some.guy@gmail.com"/>
|
9
|
+
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full"/>
|
10
|
+
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full"/>
|
11
|
+
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/batch"/>
|
12
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full?q=Test&max-results=25"/>
|
13
|
+
<author>
|
14
|
+
<name>Some Guy</name>
|
15
|
+
<email>some.guy@gmail.com</email>
|
16
|
+
</author>
|
17
|
+
<generator version="1.0" uri="http://www.google.com/calendar">Google Calendar</generator>
|
18
|
+
<openSearch:totalResults>1</openSearch:totalResults>
|
19
|
+
<openSearch:startIndex>1</openSearch:startIndex>
|
20
|
+
<openSearch:itemsPerPage>25</openSearch:itemsPerPage>
|
21
|
+
<gCal:timezone value="America/Los_Angeles"/>
|
22
|
+
<gCal:timesCleaned value="0"/>
|
23
|
+
<entry>
|
24
|
+
<id>http://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio</id>
|
25
|
+
<published>2010-04-22T16:05:29.000Z</published>
|
26
|
+
<updated>2010-05-01T05:14:18.000Z</updated>
|
27
|
+
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
|
28
|
+
<title type="text">Test</title>
|
29
|
+
<content type="text"/>
|
30
|
+
<link rel="alternate" type="text/html" href="https://www.google.com/calendar/event?eid=b2o2Zm1wYXVsYnZrOW91b2owbGo0djZoaW8gc3RldmUuemljaEBt" title="alternate"/>
|
31
|
+
<link rel="self" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio"/>
|
32
|
+
<link rel="edit" type="application/atom+xml" href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/63408374058"/>
|
33
|
+
<author>
|
34
|
+
<name>Some Guy</name>
|
35
|
+
<email>some.guy@gmail.com</email>
|
36
|
+
</author>
|
37
|
+
<gd:comments>
|
38
|
+
<gd:feedLink href="https://www.google.com/calendar/feeds/default/private/full/oj6fmpaulbvk9ouoj0lj4v6hio/comments"/>
|
39
|
+
</gd:comments>
|
40
|
+
<gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
|
41
|
+
<gd:where valueString="At School"/>
|
42
|
+
<gd:who email="some.guy@gmail.com" rel="http://schemas.google.com/g/2005#event.organizer" valueString="some.guy@gmail.com"/>
|
43
|
+
<gd:when endTime="2010-04-09" startTime="2010-04-08">
|
44
|
+
<gd:reminder method="alert" minutes="10"/>
|
45
|
+
</gd:when>
|
46
|
+
<gd:transparency value="http://schemas.google.com/g/2005#event.transparent"/>
|
47
|
+
<gd:visibility value="http://schemas.google.com/g/2005#event.default"/>
|
48
|
+
<gCal:anyoneCanAddSelf value="false"/>
|
49
|
+
<gCal:guestsCanInviteOthers value="true"/>
|
50
|
+
<gCal:guestsCanModify value="false"/>
|
51
|
+
<gCal:guestsCanSeeGuests value="true"/>
|
52
|
+
<gCal:sequence value="0"/>
|
53
|
+
<gCal:uid value="oj6fmpaulbvk9ouoj0lj4v6hio@google.com"/>
|
54
|
+
</entry>
|
55
|
+
</feed>
|