gcalapi 0.0.4 → 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.
Files changed (42) hide show
  1. data/Rakefile +19 -15
  2. data/VERSION +1 -1
  3. data/example/mixi2gcal.rb +88 -0
  4. data/html/classes/GoogleCalendar.html +149 -280
  5. data/html/classes/GoogleCalendar/AuthSubFailed.html +165 -0
  6. data/html/classes/GoogleCalendar/AuthSubUtil.html +397 -0
  7. data/html/classes/GoogleCalendar/AuthenticationFailed.html +110 -110
  8. data/html/classes/GoogleCalendar/Calendar.html +381 -203
  9. data/html/classes/GoogleCalendar/Event.html +800 -510
  10. data/html/classes/GoogleCalendar/EventDeleteFailed.html +110 -110
  11. data/html/classes/GoogleCalendar/EventGetFailed.html +111 -0
  12. data/html/classes/GoogleCalendar/EventInsertFailed.html +110 -110
  13. data/html/classes/GoogleCalendar/EventUpdateFailed.html +110 -110
  14. data/html/classes/GoogleCalendar/InvalidCalendarURL.html +110 -110
  15. data/html/classes/GoogleCalendar/Service.html +305 -594
  16. data/html/classes/GoogleCalendar/ServiceAuthSub.html +181 -0
  17. data/html/classes/GoogleCalendar/ServiceBase.html +694 -0
  18. data/html/created.rid +1 -1
  19. data/html/files/README.html +116 -116
  20. data/html/files/lib/googlecalendar/auth_sub_util_rb.html +111 -0
  21. data/html/files/lib/googlecalendar/calendar_rb.html +109 -109
  22. data/html/files/lib/googlecalendar/event_rb.html +109 -109
  23. data/html/files/lib/googlecalendar/service_auth_sub_rb.html +108 -0
  24. data/html/files/lib/googlecalendar/service_base_rb.html +114 -0
  25. data/html/files/lib/googlecalendar/service_rb.html +107 -113
  26. data/html/fr_class_index.html +39 -34
  27. data/html/fr_file_index.html +32 -29
  28. data/html/fr_method_index.html +75 -52
  29. data/html/index.html +23 -23
  30. data/html/rdoc-style.css +207 -207
  31. data/lib/googlecalendar/auth_sub_util.rb +143 -0
  32. data/lib/googlecalendar/calendar.rb +48 -36
  33. data/lib/googlecalendar/event.rb +16 -11
  34. data/lib/googlecalendar/service.rb +30 -180
  35. data/lib/googlecalendar/service_auth_sub.rb +18 -0
  36. data/lib/googlecalendar/service_base.rb +197 -0
  37. data/test/00_service_test.rb +2 -1
  38. data/test/01_calendar_test.rb +1 -1
  39. data/test/02_event_test.rb +28 -1
  40. data/test/03_authsub_test.rb +119 -0
  41. data/test/base_unit.rb +3 -0
  42. metadata +105 -62
data/Rakefile CHANGED
@@ -1,31 +1,34 @@
1
1
  require 'rake/gempackagetask'
2
2
  require "rake/contrib/rubyforgepublisher"
3
+ require "rake/rdoctask"
4
+ require "rake/testtask"
3
5
 
4
6
  require 'rbconfig'
5
7
  include Config
6
8
 
7
9
  PKG_NAME = 'gcalapi'
8
10
  PKG_VERSION = File.read('VERSION').chomp
9
- PKG_FILES = FileList["**/*"].exclude(".svn").exclude("pkg").exclude("test/temp_*.rb").exclude("test/parameters.rb")
11
+ PKG_FILES = FileList["**/*"].exclude(".svn").exclude("pkg").exclude("test/temp_*.rb").exclude("test/parameters.rb").exclude("*.log")
10
12
 
11
- desc "Installing library"
12
- task :install do
13
- ruby 'install.rb'
14
- end
15
-
16
- desc "Testing library"
17
- task :test do
18
- sh '(cd test; sh all.sh)'
13
+ Rake::TestTask.new do |t|
14
+ t.libs << "test"
15
+ t.test_files = FileList['test/*_test.rb']
16
+ t.verbose = true
19
17
  end
20
18
 
21
19
  desc "Removing generated files"
22
20
  task :clean do
23
21
  rm_rf 'html'
22
+ rm_rf 'pkg'
24
23
  end
25
24
 
26
- # Create RDOC documentation.
27
- task :rdoc do
28
- sh "rdoc -S -o html README lib/googlecalendar/*.rb"
25
+ desc "Generate RDoc documentation"
26
+ Rake::RDocTask.new do |rdoc|
27
+ rdoc.options << '--line-numbers'
28
+ rdoc.options << '--inline-source'
29
+ rdoc.options << '--all'
30
+ rdoc.rdoc_files.include 'README'
31
+ rdoc.rdoc_files.include 'lib/googlecalendar/*.rb'
29
32
  end
30
33
 
31
34
  spec = Gem::Specification.new do |s|
@@ -70,11 +73,12 @@ spec = Gem::Specification.new do |s|
70
73
  end
71
74
 
72
75
  Rake::GemPackageTask.new(spec) do |pkg|
73
- pkg.need_tar = true
74
- pkg.package_files += PKG_FILES
76
+ #pkg.need_tar = true
77
+ #pkg.need_zip = true
78
+ #pkg.package_files += PKG_FILES
75
79
  end
76
80
 
77
- task :release => [ :clean, :package ]
81
+ task :release => [ :clean, :rdoc, :package ]
78
82
 
79
83
  desc "Publish to RubyForge"
80
84
  task :rubyforge => [:rdoc, :package] do
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.1.0
@@ -0,0 +1,88 @@
1
+ require "rubygems"
2
+ require "mechanize"
3
+ require "kconv"
4
+ require "gcalapi"
5
+ require "logger"
6
+
7
+ MIXI_EMAIL = "XXXXXXXX@hotmail.com"
8
+ MIXI_PASS = "ZZZZZZZZZZZZZZZZZ"
9
+
10
+ GCAL_FEED = "http://www.google.com/calendar/feeds/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@group.calendar.google.com/private/full"
11
+ GCAL_MAIL = "XXXXXXXXXXXX@gmail.com"
12
+ GCAL_PASS = "XXXXXXXXXXXXXX"
13
+
14
+ now = Time.now
15
+ logger = Logger.new("mixi.log")
16
+ logger.level = Logger::INFO
17
+
18
+ # login to mixi and get this month's calendar.
19
+
20
+ agent = WWW::Mechanize.new do |a| a.log = logger end
21
+ page = agent.get('https://mixi.jp')
22
+ form = page.forms[0]
23
+ form.fields.find do |f| f.name == "email" end.value = MIXI_EMAIL
24
+ form.fields.find do |f| f.name == "password" end.value = MIXI_PASS
25
+ page = agent.submit(form, form.buttons.first)
26
+
27
+ if /url=([^"]+)"/ =~ page.body
28
+ link = 'http://mixi.jp' + $1.to_s
29
+ agent.get(link)
30
+ end
31
+ page = agent.get("http://mixi.jp/show_calendar.pl?year=#{now.year}&month=#{now.mon}")
32
+
33
+
34
+
35
+ # parse calendar html and retrieve event data.
36
+ result = []
37
+
38
+ root = Hpricot(page.body)
39
+ ts = (root/"table[@width='670']")# this condition depends on the structure of the page.
40
+ return if ts.length < 3
41
+
42
+ table = ts[2]
43
+ table.search(:td).each do |td|
44
+ f = td.children[0]
45
+ day = f.inner_text.to_i
46
+ if day > 0
47
+ td.search(:a).each do |a|
48
+ if a["href"] != "javascript:void(0)" #exclude schedule add button
49
+ a["href"] = "http://mixi.jp/#{a['href']}"
50
+ logger.info "#{day}: #{a.inner_text.toutf8}"
51
+ result << {:day => day, :desc => a}
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+ # insert event data into google calendar.
59
+
60
+ srv = GoogleCalendar::Service.new(GCAL_MAIL, GCAL_PASS)
61
+ cal = GoogleCalendar::Calendar.new(srv, GCAL_FEED)
62
+
63
+ st = Time.mktime(now.year, now.mon, 1)
64
+ if st.mon == 12
65
+ en = Time.mktime(now.year + 1, 1, 1)
66
+ else
67
+ en = Time.mktime(now.year, now.mon + 1, 1)
68
+ end
69
+
70
+ # delete **ALL** EVENTS of google calendar
71
+ cal.events(:'start-min' => st,
72
+ :'start-max' => en,
73
+ :'max-results' => 100).each do |event|
74
+ event.destroy!
75
+ end
76
+
77
+ # insert event data.
78
+ result.each do |mixi|
79
+ day = Time.mktime(now.year, now.mon, mixi[:day])
80
+ event = cal.create_event
81
+ event.title = mixi[:desc].inner_text.toutf8
82
+ event.desc = mixi[:desc].to_html.toutf8
83
+ event.st = day
84
+ event.en = day + 86400 # next day
85
+ event.allday = true
86
+ event.save!
87
+ logger.debug(event.to_s)
88
+ end
@@ -1,281 +1,150 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: GoogleCalendar</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">GoogleCalendar</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../files/lib/googlecalendar/calendar_rb.html">
59
- lib/googlecalendar/calendar.rb
60
- </a>
61
- <br />
62
- <a href="../files/lib/googlecalendar/event_rb.html">
63
- lib/googlecalendar/event.rb
64
- </a>
65
- <br />
66
- <a href="../files/lib/googlecalendar/service_rb.html">
67
- lib/googlecalendar/service.rb
68
- </a>
69
- <br />
70
- </td>
71
- </tr>
72
-
73
- </table>
74
- </div>
75
- <!-- banner header -->
76
-
77
- <div id="bodyContent">
78
-
79
-
80
-
81
- <div id="contextContent">
82
-
83
-
84
-
85
- </div>
86
-
87
- <div id="method-list">
88
- <h3 class="section-bar">Methods</h3>
89
-
90
- <div class="name-list">
91
- <a href="#M000004">create_event</a>&nbsp;&nbsp;
92
- <a href="#M000003">events</a>&nbsp;&nbsp;
93
- <a href="#M000001">new</a>&nbsp;&nbsp;
94
- <a href="#M000002">source</a>&nbsp;&nbsp;
95
- </div>
96
- </div>
97
-
98
- </div>
99
-
100
-
101
- <!-- if includes -->
102
-
103
- <div id="section">
104
-
105
- <div id="class-list">
106
- <h3 class="section-bar">Classes and Modules</h3>
107
-
108
- Class <a href="GoogleCalendar/AuthenticationFailed.html" class="link">GoogleCalendar::AuthenticationFailed</a><br />
109
- Class <a href="GoogleCalendar/Calendar.html" class="link">GoogleCalendar::Calendar</a><br />
110
- Class <a href="GoogleCalendar/Event.html" class="link">GoogleCalendar::Event</a><br />
111
- Class <a href="GoogleCalendar/EventDeleteFailed.html" class="link">GoogleCalendar::EventDeleteFailed</a><br />
112
- Class <a href="GoogleCalendar/EventInsertFailed.html" class="link">GoogleCalendar::EventInsertFailed</a><br />
113
- Class <a href="GoogleCalendar/EventUpdateFailed.html" class="link">GoogleCalendar::EventUpdateFailed</a><br />
114
- Class <a href="GoogleCalendar/InvalidCalendarURL.html" class="link">GoogleCalendar::InvalidCalendarURL</a><br />
115
- Class <a href="GoogleCalendar/Service.html" class="link">GoogleCalendar::Service</a><br />
116
-
117
- </div>
118
-
119
-
120
-
121
-
122
- <div id="attribute-list">
123
- <h3 class="section-bar">Attributes</h3>
124
-
125
- <div class="name-list">
126
- <table>
127
- <tr class="top-aligned-row context-row">
128
- <td class="context-item-name">feed</td>
129
- <td class="context-item-value">&nbsp;[R]&nbsp;</td>
130
- <td class="context-item-desc"></td>
131
- </tr>
132
- </table>
133
- </div>
134
- </div>
135
-
136
-
137
-
138
- <!-- if method_list -->
139
- <div id="methods">
140
- <h3 class="section-bar">Public Class methods</h3>
141
-
142
- <div id="method-M000001" class="method-detail">
143
- <a name="M000001"></a>
144
-
145
- <div class="method-heading">
146
- <a href="#M000001" class="method-signature">
147
- <span class="method-name">new</span><span class="method-args">(srv, feed)</span>
148
- </a>
149
- </div>
150
-
151
- <div class="method-description">
152
- <p>
153
- srv: <a href="GoogleCalendar/Service.html">GoogleCalendar::Service</a>
154
- object feed: <a href="GoogleCalendar/Calendar.html">Calendar</a>&#8217;s
155
- editable feed url
156
- </p>
157
- <p><a class="source-toggle" href="#"
158
- onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
159
- <div class="method-source-code" id="M000001-source">
160
- <pre>
161
- <span class="ruby-comment cmt"># File lib/googlecalendar/calendar.rb, line 65</span>
162
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">srv</span>, <span class="ruby-identifier">feed</span>)
163
- <span class="ruby-ivar">@srv</span> = <span class="ruby-identifier">srv</span>
164
- <span class="ruby-ivar">@feed</span> = <span class="ruby-identifier">feed</span>
165
- <span class="ruby-ivar">@source</span> = <span class="ruby-keyword kw">nil</span>
166
- <span class="ruby-keyword kw">end</span>
167
- </pre>
168
- </div>
169
- </div>
170
- </div>
171
-
172
- <h3 class="section-bar">Public Instance methods</h3>
173
-
174
- <div id="method-M000004" class="method-detail">
175
- <a name="M000004"></a>
176
-
177
- <div class="method-heading">
178
- <a href="#M000004" class="method-signature">
179
- <span class="method-name">create_event</span><span class="method-args">()</span>
180
- </a>
181
- </div>
182
-
183
- <div class="method-description">
184
- <p>
185
- creates a new <a href="GoogleCalendar/Event.html">Event</a> instance which
186
- belongs to this clandar instance.
187
- </p>
188
- <p><a class="source-toggle" href="#"
189
- onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
190
- <div class="method-source-code" id="M000004-source">
191
- <pre>
192
- <span class="ruby-comment cmt"># File lib/googlecalendar/calendar.rb, line 100</span>
193
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create_event</span>
194
- <span class="ruby-identifier">ev</span> = <span class="ruby-constant">Event</span>.<span class="ruby-identifier">new</span>
195
- <span class="ruby-identifier">ev</span>.<span class="ruby-identifier">srv</span> = <span class="ruby-ivar">@srv</span>
196
- <span class="ruby-identifier">ev</span>.<span class="ruby-identifier">feed</span> = <span class="ruby-ivar">@feed</span>
197
- <span class="ruby-identifier">ev</span>
198
- <span class="ruby-keyword kw">end</span>
199
- </pre>
200
- </div>
201
- </div>
202
- </div>
203
-
204
- <div id="method-M000003" class="method-detail">
205
- <a name="M000003"></a>
206
-
207
- <div class="method-heading">
208
- <a href="#M000003" class="method-signature">
209
- <span class="method-name">events</span><span class="method-args">(conditions = {})</span>
210
- </a>
211
- </div>
212
-
213
- <div class="method-description">
214
- <p>
215
- send query to get events and returns an array of <a
216
- href="GoogleCalendar/Event.html">Event</a> objects. if any conditions are
217
- given, recent 25 entries are retrieved. For detail, see <a
218
- href="GoogleCalendar/Service.html#M000024">Service#query</a>
219
- </p>
220
- <p><a class="source-toggle" href="#"
221
- onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
222
- <div class="method-source-code" id="M000003-source">
223
- <pre>
224
- <span class="ruby-comment cmt"># File lib/googlecalendar/calendar.rb, line 84</span>
225
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">events</span>(<span class="ruby-identifier">conditions</span> = {})
226
- <span class="ruby-identifier">ret</span> = <span class="ruby-ivar">@srv</span>.<span class="ruby-identifier">query</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">feed</span>, <span class="ruby-identifier">conditions</span>)
227
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">InvalidCalendarURL</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">ret</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;200&quot;</span>
228
- <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Document</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ret</span>.<span class="ruby-identifier">body</span>).<span class="ruby-identifier">root</span>.<span class="ruby-identifier">elements</span>.<span class="ruby-identifier">each</span>(<span class="ruby-value str">&quot;entry&quot;</span>){}.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">elem</span><span class="ruby-operator">|</span>
229
- <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;xmlns:gCal&quot;</span>] = <span class="ruby-value str">&quot;http://schemas.google.com/gCal/2005&quot;</span>
230
- <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;xmlns:gd&quot;</span>] = <span class="ruby-value str">&quot;http://schemas.google.com/g/2005&quot;</span>
231
- <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;xmlns&quot;</span>] = <span class="ruby-value str">&quot;http://www.w3.org/2005/Atom&quot;</span>
232
- <span class="ruby-identifier">entry</span> = <span class="ruby-constant">Event</span>.<span class="ruby-identifier">new</span>
233
- <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">srv</span> = <span class="ruby-ivar">@srv</span>
234
- <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">load_xml</span>(<span class="ruby-node">&quot;&lt;?xml version='1.0' encoding='UTF-8'?&gt;#{elem.to_s}&quot;</span>)
235
- <span class="ruby-keyword kw">end</span>
236
- <span class="ruby-keyword kw">end</span>
237
- </pre>
238
- </div>
239
- </div>
240
- </div>
241
-
242
- <div id="method-M000002" class="method-detail">
243
- <a name="M000002"></a>
244
-
245
- <div class="method-heading">
246
- <a href="#M000002" class="method-signature">
247
- <span class="method-name">source</span><span class="method-args">()</span>
248
- </a>
249
- </div>
250
-
251
- <div class="method-description">
252
- <p>
253
- REXML::Document object which represents calendar object
254
- </p>
255
- <p><a class="source-toggle" href="#"
256
- onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
257
- <div class="method-source-code" id="M000002-source">
258
- <pre>
259
- <span class="ruby-comment cmt"># File lib/googlecalendar/calendar.rb, line 74</span>
260
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">source</span>
261
- <span class="ruby-ivar">@source</span> = <span class="ruby-identifier">get_data</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@source</span>
262
- <span class="ruby-ivar">@source</span>
263
- <span class="ruby-keyword kw">end</span>
264
- </pre>
265
- </div>
266
- </div>
267
- </div>
268
-
269
-
270
- </div>
271
-
272
-
273
- </div>
274
-
275
-
276
- <div id="validator-badges">
277
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
278
- </div>
279
-
280
- </body>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: GoogleCalendar</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">GoogleCalendar</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/googlecalendar/auth_sub_util_rb.html">
59
+ lib/googlecalendar/auth_sub_util.rb
60
+ </a>
61
+ <br />
62
+ <a href="../files/lib/googlecalendar/calendar_rb.html">
63
+ lib/googlecalendar/calendar.rb
64
+ </a>
65
+ <br />
66
+ <a href="../files/lib/googlecalendar/event_rb.html">
67
+ lib/googlecalendar/event.rb
68
+ </a>
69
+ <br />
70
+ <a href="../files/lib/googlecalendar/service_rb.html">
71
+ lib/googlecalendar/service.rb
72
+ </a>
73
+ <br />
74
+ <a href="../files/lib/googlecalendar/service_auth_sub_rb.html">
75
+ lib/googlecalendar/service_auth_sub.rb
76
+ </a>
77
+ <br />
78
+ <a href="../files/lib/googlecalendar/service_base_rb.html">
79
+ lib/googlecalendar/service_base.rb
80
+ </a>
81
+ <br />
82
+ </td>
83
+ </tr>
84
+
85
+ </table>
86
+ </div>
87
+ <!-- banner header -->
88
+
89
+ <div id="bodyContent">
90
+
91
+
92
+
93
+ <div id="contextContent">
94
+
95
+ <div id="description">
96
+ <h1>SUMMARY</h1>
97
+ <p>
98
+ google calendar api for ruby
99
+ </p>
100
+
101
+ </div>
102
+
103
+
104
+ </div>
105
+
106
+
107
+ </div>
108
+
109
+
110
+ <!-- if includes -->
111
+
112
+ <div id="section">
113
+
114
+ <div id="class-list">
115
+ <h3 class="section-bar">Classes and Modules</h3>
116
+
117
+ Class <a href="GoogleCalendar/AuthSubFailed.html" class="link">GoogleCalendar::AuthSubFailed</a><br />
118
+ Class <a href="GoogleCalendar/AuthSubUtil.html" class="link">GoogleCalendar::AuthSubUtil</a><br />
119
+ Class <a href="GoogleCalendar/AuthenticationFailed.html" class="link">GoogleCalendar::AuthenticationFailed</a><br />
120
+ Class <a href="GoogleCalendar/Calendar.html" class="link">GoogleCalendar::Calendar</a><br />
121
+ Class <a href="GoogleCalendar/Event.html" class="link">GoogleCalendar::Event</a><br />
122
+ Class <a href="GoogleCalendar/EventDeleteFailed.html" class="link">GoogleCalendar::EventDeleteFailed</a><br />
123
+ Class <a href="GoogleCalendar/EventGetFailed.html" class="link">GoogleCalendar::EventGetFailed</a><br />
124
+ Class <a href="GoogleCalendar/EventInsertFailed.html" class="link">GoogleCalendar::EventInsertFailed</a><br />
125
+ Class <a href="GoogleCalendar/EventUpdateFailed.html" class="link">GoogleCalendar::EventUpdateFailed</a><br />
126
+ Class <a href="GoogleCalendar/InvalidCalendarURL.html" class="link">GoogleCalendar::InvalidCalendarURL</a><br />
127
+ Class <a href="GoogleCalendar/Service.html" class="link">GoogleCalendar::Service</a><br />
128
+ Class <a href="GoogleCalendar/ServiceAuthSub.html" class="link">GoogleCalendar::ServiceAuthSub</a><br />
129
+ Class <a href="GoogleCalendar/ServiceBase.html" class="link">GoogleCalendar::ServiceBase</a><br />
130
+
131
+ </div>
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+ <!-- if method_list -->
140
+
141
+
142
+ </div>
143
+
144
+
145
+ <div id="validator-badges">
146
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
147
+ </div>
148
+
149
+ </body>
281
150
  </html>