gcalapi 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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>