gcalapi 0.0.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/README +13 -0
- data/Rakefile +82 -0
- data/VERSION +1 -0
- data/example/mail2gcal.rb +101 -0
- data/example/ol2gcal.rb +55 -0
- data/html/classes/GoogleCalendar.html +281 -0
- data/html/classes/GoogleCalendar/AuthenticationFailed.html +111 -0
- data/html/classes/GoogleCalendar/Calendar.html +204 -0
- data/html/classes/GoogleCalendar/Event.html +511 -0
- data/html/classes/GoogleCalendar/EventDeleteFailed.html +111 -0
- data/html/classes/GoogleCalendar/EventInsertFailed.html +111 -0
- data/html/classes/GoogleCalendar/EventUpdateFailed.html +111 -0
- data/html/classes/GoogleCalendar/InvalidCalendarURL.html +111 -0
- data/html/classes/GoogleCalendar/Service.html +472 -0
- data/html/created.rid +1 -0
- data/html/files/README.html +117 -0
- data/html/files/lib/googlecalendar/calendar_rb.html +110 -0
- data/html/files/lib/googlecalendar/event_rb.html +110 -0
- data/html/files/lib/googlecalendar/service_rb.html +114 -0
- data/html/fr_class_index.html +35 -0
- data/html/fr_file_index.html +30 -0
- data/html/fr_method_index.html +49 -0
- data/html/index.html +24 -0
- data/html/rdoc-style.css +208 -0
- data/lib/googlecalendar/calendar.rb +117 -0
- data/lib/googlecalendar/event.rb +283 -0
- data/lib/googlecalendar/service.rb +193 -0
- data/test/00_service_test.rb +169 -0
- data/test/01_calendar_test.rb +52 -0
- data/test/02_event_test.rb +60 -0
- data/test/all.sh +2 -0
- data/test/base_unit.rb +54 -0
- data/test/each.sh +2 -0
- metadata +85 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
3
|
+
<!DOCTYPE html
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
+
|
7
|
+
<!--
|
8
|
+
|
9
|
+
Classes
|
10
|
+
|
11
|
+
-->
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
+
<head>
|
14
|
+
<title>Classes</title>
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
+
<base target="docwin" />
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="index">
|
21
|
+
<h1 class="section-bar">Classes</h1>
|
22
|
+
<div id="index-entries">
|
23
|
+
<a href="classes/GoogleCalendar.html">GoogleCalendar</a><br />
|
24
|
+
<a href="classes/GoogleCalendar/AuthenticationFailed.html">GoogleCalendar::AuthenticationFailed</a><br />
|
25
|
+
<a href="classes/GoogleCalendar/Calendar.html">GoogleCalendar::Calendar</a><br />
|
26
|
+
<a href="classes/GoogleCalendar/Event.html">GoogleCalendar::Event</a><br />
|
27
|
+
<a href="classes/GoogleCalendar/EventDeleteFailed.html">GoogleCalendar::EventDeleteFailed</a><br />
|
28
|
+
<a href="classes/GoogleCalendar/EventInsertFailed.html">GoogleCalendar::EventInsertFailed</a><br />
|
29
|
+
<a href="classes/GoogleCalendar/EventUpdateFailed.html">GoogleCalendar::EventUpdateFailed</a><br />
|
30
|
+
<a href="classes/GoogleCalendar/InvalidCalendarURL.html">GoogleCalendar::InvalidCalendarURL</a><br />
|
31
|
+
<a href="classes/GoogleCalendar/Service.html">GoogleCalendar::Service</a><br />
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</body>
|
35
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
3
|
+
<!DOCTYPE html
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
+
|
7
|
+
<!--
|
8
|
+
|
9
|
+
Files
|
10
|
+
|
11
|
+
-->
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
+
<head>
|
14
|
+
<title>Files</title>
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
+
<base target="docwin" />
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="index">
|
21
|
+
<h1 class="section-bar">Files</h1>
|
22
|
+
<div id="index-entries">
|
23
|
+
<a href="files/README.html">README</a><br />
|
24
|
+
<a href="files/lib/googlecalendar/calendar_rb.html">lib/googlecalendar/calendar.rb</a><br />
|
25
|
+
<a href="files/lib/googlecalendar/event_rb.html">lib/googlecalendar/event.rb</a><br />
|
26
|
+
<a href="files/lib/googlecalendar/service_rb.html">lib/googlecalendar/service.rb</a><br />
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
3
|
+
<!DOCTYPE html
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
+
|
7
|
+
<!--
|
8
|
+
|
9
|
+
Methods
|
10
|
+
|
11
|
+
-->
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
+
<head>
|
14
|
+
<title>Methods</title>
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
+
<base target="docwin" />
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="index">
|
21
|
+
<h1 class="section-bar">Methods</h1>
|
22
|
+
<div id="index-entries">
|
23
|
+
<a href="classes/GoogleCalendar/Service.html#M000018">calendar_list (GoogleCalendar::Service)</a><br />
|
24
|
+
<a href="classes/GoogleCalendar/Calendar.html#M000012">calendars (GoogleCalendar::Calendar)</a><br />
|
25
|
+
<a href="classes/GoogleCalendar/Service.html#M000019">calendars (GoogleCalendar::Service)</a><br />
|
26
|
+
<a href="classes/GoogleCalendar.html#M000004">create_event (GoogleCalendar)</a><br />
|
27
|
+
<a href="classes/GoogleCalendar/Service.html#M000021">delete (GoogleCalendar::Service)</a><br />
|
28
|
+
<a href="classes/GoogleCalendar/Event.html#M000009">destroy (GoogleCalendar::Event)</a><br />
|
29
|
+
<a href="classes/GoogleCalendar/Event.html#M000010">destroy! (GoogleCalendar::Event)</a><br />
|
30
|
+
<a href="classes/GoogleCalendar.html#M000003">events (GoogleCalendar)</a><br />
|
31
|
+
<a href="classes/GoogleCalendar/Service.html#M000022">insert (GoogleCalendar::Service)</a><br />
|
32
|
+
<a href="classes/GoogleCalendar/Event.html#M000006">load_xml (GoogleCalendar::Event)</a><br />
|
33
|
+
<a href="classes/GoogleCalendar.html#M000001">new (GoogleCalendar)</a><br />
|
34
|
+
<a href="classes/GoogleCalendar/Event.html#M000005">new (GoogleCalendar::Event)</a><br />
|
35
|
+
<a href="classes/GoogleCalendar/Service.html#M000017">new (GoogleCalendar::Service)</a><br />
|
36
|
+
<a href="classes/GoogleCalendar/Service.html#M000013">proxy_addr (GoogleCalendar::Service)</a><br />
|
37
|
+
<a href="classes/GoogleCalendar/Service.html#M000014">proxy_addr= (GoogleCalendar::Service)</a><br />
|
38
|
+
<a href="classes/GoogleCalendar/Service.html#M000015">proxy_port (GoogleCalendar::Service)</a><br />
|
39
|
+
<a href="classes/GoogleCalendar/Service.html#M000016">proxy_port= (GoogleCalendar::Service)</a><br />
|
40
|
+
<a href="classes/GoogleCalendar/Service.html#M000020">query (GoogleCalendar::Service)</a><br />
|
41
|
+
<a href="classes/GoogleCalendar/Event.html#M000007">save (GoogleCalendar::Event)</a><br />
|
42
|
+
<a href="classes/GoogleCalendar/Event.html#M000008">save! (GoogleCalendar::Event)</a><br />
|
43
|
+
<a href="classes/GoogleCalendar.html#M000002">source (GoogleCalendar)</a><br />
|
44
|
+
<a href="classes/GoogleCalendar/Event.html#M000011">to_s (GoogleCalendar::Event)</a><br />
|
45
|
+
<a href="classes/GoogleCalendar/Service.html#M000023">update (GoogleCalendar::Service)</a><br />
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</body>
|
49
|
+
</html>
|
data/html/index.html
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
5
|
+
|
6
|
+
<!--
|
7
|
+
|
8
|
+
RDoc Documentation
|
9
|
+
|
10
|
+
-->
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
12
|
+
<head>
|
13
|
+
<title>RDoc Documentation</title>
|
14
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
15
|
+
</head>
|
16
|
+
<frameset rows="20%, 80%">
|
17
|
+
<frameset cols="25%,35%,45%">
|
18
|
+
<frame src="fr_file_index.html" title="Files" name="Files" />
|
19
|
+
<frame src="fr_class_index.html" name="Classes" />
|
20
|
+
<frame src="fr_method_index.html" name="Methods" />
|
21
|
+
</frameset>
|
22
|
+
<frame src="files/README.html" name="docwin" />
|
23
|
+
</frameset>
|
24
|
+
</html>
|
data/html/rdoc-style.css
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
|
2
|
+
body {
|
3
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
4
|
+
font-size: 90%;
|
5
|
+
margin: 0;
|
6
|
+
margin-left: 40px;
|
7
|
+
padding: 0;
|
8
|
+
background: white;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
12
|
+
h1 { font-size: 150%; }
|
13
|
+
h2,h3,h4 { margin-top: 1em; }
|
14
|
+
|
15
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
16
|
+
a:hover { background: #039; color: #eef; }
|
17
|
+
|
18
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
19
|
+
td > a {
|
20
|
+
background: transparent;
|
21
|
+
color: #039;
|
22
|
+
text-decoration: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* and inside a section title */
|
26
|
+
.section-title > a {
|
27
|
+
background: transparent;
|
28
|
+
color: #eee;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* === Structural elements =================================== */
|
33
|
+
|
34
|
+
div#index {
|
35
|
+
margin: 0;
|
36
|
+
margin-left: -40px;
|
37
|
+
padding: 0;
|
38
|
+
font-size: 90%;
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
div#index a {
|
43
|
+
margin-left: 0.7em;
|
44
|
+
}
|
45
|
+
|
46
|
+
div#index .section-bar {
|
47
|
+
margin-left: 0px;
|
48
|
+
padding-left: 0.7em;
|
49
|
+
background: #ccc;
|
50
|
+
font-size: small;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
div#classHeader, div#fileHeader {
|
55
|
+
width: auto;
|
56
|
+
color: white;
|
57
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
58
|
+
margin: 0;
|
59
|
+
margin-left: -40px;
|
60
|
+
border-bottom: 3px solid #006;
|
61
|
+
}
|
62
|
+
|
63
|
+
div#classHeader a, div#fileHeader a {
|
64
|
+
background: inherit;
|
65
|
+
color: white;
|
66
|
+
}
|
67
|
+
|
68
|
+
div#classHeader td, div#fileHeader td {
|
69
|
+
background: inherit;
|
70
|
+
color: white;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
div#fileHeader {
|
75
|
+
background: #057;
|
76
|
+
}
|
77
|
+
|
78
|
+
div#classHeader {
|
79
|
+
background: #048;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
.class-name-in-header {
|
84
|
+
font-size: 180%;
|
85
|
+
font-weight: bold;
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
div#bodyContent {
|
90
|
+
padding: 0 1.5em 0 1.5em;
|
91
|
+
}
|
92
|
+
|
93
|
+
div#description {
|
94
|
+
padding: 0.5em 1.5em;
|
95
|
+
background: #efefef;
|
96
|
+
border: 1px dotted #999;
|
97
|
+
}
|
98
|
+
|
99
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
100
|
+
color: #125;;
|
101
|
+
background: transparent;
|
102
|
+
}
|
103
|
+
|
104
|
+
div#validator-badges {
|
105
|
+
text-align: center;
|
106
|
+
}
|
107
|
+
div#validator-badges img { border: 0; }
|
108
|
+
|
109
|
+
div#copyright {
|
110
|
+
color: #333;
|
111
|
+
background: #efefef;
|
112
|
+
font: 0.75em sans-serif;
|
113
|
+
margin-top: 5em;
|
114
|
+
margin-bottom: 0;
|
115
|
+
padding: 0.5em 2em;
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/* === Classes =================================== */
|
120
|
+
|
121
|
+
table.header-table {
|
122
|
+
color: white;
|
123
|
+
font-size: small;
|
124
|
+
}
|
125
|
+
|
126
|
+
.type-note {
|
127
|
+
font-size: small;
|
128
|
+
color: #DEDEDE;
|
129
|
+
}
|
130
|
+
|
131
|
+
.xxsection-bar {
|
132
|
+
background: #eee;
|
133
|
+
color: #333;
|
134
|
+
padding: 3px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.section-bar {
|
138
|
+
color: #333;
|
139
|
+
border-bottom: 1px solid #999;
|
140
|
+
margin-left: -20px;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
.section-title {
|
145
|
+
background: #79a;
|
146
|
+
color: #eee;
|
147
|
+
padding: 3px;
|
148
|
+
margin-top: 2em;
|
149
|
+
margin-left: -30px;
|
150
|
+
border: 1px solid #999;
|
151
|
+
}
|
152
|
+
|
153
|
+
.top-aligned-row { vertical-align: top }
|
154
|
+
.bottom-aligned-row { vertical-align: bottom }
|
155
|
+
|
156
|
+
/* --- Context section classes ----------------------- */
|
157
|
+
|
158
|
+
.context-row { }
|
159
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
160
|
+
.context-item-value { font-size: small; color: #448; }
|
161
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
162
|
+
|
163
|
+
/* --- Method classes -------------------------- */
|
164
|
+
.method-detail {
|
165
|
+
background: #efefef;
|
166
|
+
padding: 0;
|
167
|
+
margin-top: 0.5em;
|
168
|
+
margin-bottom: 1em;
|
169
|
+
border: 1px dotted #ccc;
|
170
|
+
}
|
171
|
+
.method-heading {
|
172
|
+
color: black;
|
173
|
+
background: #ccc;
|
174
|
+
border-bottom: 1px solid #666;
|
175
|
+
padding: 0.2em 0.5em 0 0.5em;
|
176
|
+
}
|
177
|
+
.method-signature { color: black; background: inherit; }
|
178
|
+
.method-name { font-weight: bold; }
|
179
|
+
.method-args { font-style: italic; }
|
180
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
181
|
+
|
182
|
+
/* --- Source code sections -------------------- */
|
183
|
+
|
184
|
+
a.source-toggle { font-size: 90%; }
|
185
|
+
div.method-source-code {
|
186
|
+
background: #262626;
|
187
|
+
color: #ffdead;
|
188
|
+
margin: 1em;
|
189
|
+
padding: 0.5em;
|
190
|
+
border: 1px dashed #999;
|
191
|
+
overflow: hidden;
|
192
|
+
}
|
193
|
+
|
194
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
195
|
+
|
196
|
+
/* --- Ruby keyword styles --------------------- */
|
197
|
+
|
198
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
199
|
+
|
200
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
201
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
202
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
203
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
204
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
205
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
206
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
207
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
208
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require "googlecalendar/service"
|
2
|
+
require "googlecalendar/event"
|
3
|
+
require "rexml/document"
|
4
|
+
|
5
|
+
module GoogleCalendar
|
6
|
+
class InvalidCalendarURL < StandardError; end #:nodoc: all
|
7
|
+
# = SUMMARY
|
8
|
+
# This class represents User's Calendar.
|
9
|
+
#
|
10
|
+
# = How to get this class
|
11
|
+
# * get calendar list
|
12
|
+
#
|
13
|
+
# srv = GoogleCalendar::Service.new(MAIL, PASS)
|
14
|
+
# cal_list = srv.calendars
|
15
|
+
#
|
16
|
+
# cal_list is a hash of user's calendars.
|
17
|
+
# key: a calendar's editable feed url.
|
18
|
+
# value: calendar object.
|
19
|
+
#
|
20
|
+
# * create an instance from calendar's feed url
|
21
|
+
#
|
22
|
+
# srv = GoogleCalendar::Service.new(MAIL, PASS)
|
23
|
+
# cal = Calendar.new(srv, FEED)
|
24
|
+
#
|
25
|
+
class Calendar
|
26
|
+
|
27
|
+
#
|
28
|
+
# get user's calendar list.
|
29
|
+
#
|
30
|
+
def self.calendars(srv)
|
31
|
+
ret = srv.calendar_list
|
32
|
+
list = REXML::Document.new(ret.body)
|
33
|
+
h = {}
|
34
|
+
list.root.elements.each("entry/link") do |e|
|
35
|
+
if e.attributes["rel"] == "alternate"
|
36
|
+
feed = e.attributes["href"]
|
37
|
+
h[feed] = Calendar.new(srv, feed)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
h
|
41
|
+
end
|
42
|
+
|
43
|
+
#
|
44
|
+
# defines calendar's readonly attributes
|
45
|
+
#
|
46
|
+
ATTRIBUTES = {
|
47
|
+
"updated" => ["updated"],
|
48
|
+
"title" => ["title"],
|
49
|
+
"subtitle" => ["subtitle"],
|
50
|
+
"name" => ["author/name"],
|
51
|
+
"email" => ["author/email"],
|
52
|
+
"timezone" => ["gCal:timezone", "value"],
|
53
|
+
"where" => ["gd:where", "valueString"]}.each do |key, val|
|
54
|
+
module_eval(
|
55
|
+
"def #{key}; self.source.root.elements[\"#{val[0]}\"]." +
|
56
|
+
(val.length == 1 ? "text" : "attributes[\"#{val[1]}\"]") +
|
57
|
+
"; end"
|
58
|
+
)
|
59
|
+
end
|
60
|
+
|
61
|
+
attr_reader :feed
|
62
|
+
|
63
|
+
# srv: GoogleCalendar::Service object
|
64
|
+
# feed: Calendar's editable feed url
|
65
|
+
def initialize(srv, feed)
|
66
|
+
@srv = srv
|
67
|
+
@feed = feed
|
68
|
+
@source = nil
|
69
|
+
end
|
70
|
+
|
71
|
+
#
|
72
|
+
# REXML::Document object which represents calendar object
|
73
|
+
#
|
74
|
+
def source
|
75
|
+
@source = get_data unless @source
|
76
|
+
@source
|
77
|
+
end
|
78
|
+
|
79
|
+
#
|
80
|
+
# send query to get events and returns an array of Event objects.
|
81
|
+
# if any conditions are given, recent 25 entries are retrieved.
|
82
|
+
# For detail, see Service#query
|
83
|
+
#
|
84
|
+
def events(conditions = {})
|
85
|
+
ret = @srv.query(self.feed, conditions)
|
86
|
+
raise InvalidCalendarURL unless ret.code == "200"
|
87
|
+
REXML::Document.new(ret.body).root.elements.each("entry"){}.map do |elem|
|
88
|
+
elem.attributes["xmlns:gCal"] = "http://schemas.google.com/gCal/2005"
|
89
|
+
elem.attributes["xmlns:gd"] = "http://schemas.google.com/g/2005"
|
90
|
+
elem.attributes["xmlns"] = "http://www.w3.org/2005/Atom"
|
91
|
+
entry = Event.new
|
92
|
+
entry.srv = @srv
|
93
|
+
entry.load_xml("<?xml version='1.0' encoding='UTF-8'?>#{elem.to_s}")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
#
|
98
|
+
# creates a new Event instance which belongs to this clandar instance.
|
99
|
+
#
|
100
|
+
def create_event
|
101
|
+
ev = Event.new
|
102
|
+
ev.srv = @srv
|
103
|
+
ev.feed = @feed
|
104
|
+
ev
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def get_data
|
110
|
+
#gets calendar data without events
|
111
|
+
ret = @srv.query(@feed, "start-min" => Time.now, "start-max" => Time.now - 1)
|
112
|
+
raise InvalidCalendarURL, ret.inspect unless ret.code == "200"
|
113
|
+
REXML::Document.new(ret.body)
|
114
|
+
end
|
115
|
+
end # class Calendar
|
116
|
+
end # module
|
117
|
+
|