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.
- data/Rakefile +19 -15
- data/VERSION +1 -1
- data/example/mixi2gcal.rb +88 -0
- data/html/classes/GoogleCalendar.html +149 -280
- data/html/classes/GoogleCalendar/AuthSubFailed.html +165 -0
- data/html/classes/GoogleCalendar/AuthSubUtil.html +397 -0
- data/html/classes/GoogleCalendar/AuthenticationFailed.html +110 -110
- data/html/classes/GoogleCalendar/Calendar.html +381 -203
- data/html/classes/GoogleCalendar/Event.html +800 -510
- data/html/classes/GoogleCalendar/EventDeleteFailed.html +110 -110
- data/html/classes/GoogleCalendar/EventGetFailed.html +111 -0
- data/html/classes/GoogleCalendar/EventInsertFailed.html +110 -110
- data/html/classes/GoogleCalendar/EventUpdateFailed.html +110 -110
- data/html/classes/GoogleCalendar/InvalidCalendarURL.html +110 -110
- data/html/classes/GoogleCalendar/Service.html +305 -594
- data/html/classes/GoogleCalendar/ServiceAuthSub.html +181 -0
- data/html/classes/GoogleCalendar/ServiceBase.html +694 -0
- data/html/created.rid +1 -1
- data/html/files/README.html +116 -116
- data/html/files/lib/googlecalendar/auth_sub_util_rb.html +111 -0
- data/html/files/lib/googlecalendar/calendar_rb.html +109 -109
- data/html/files/lib/googlecalendar/event_rb.html +109 -109
- data/html/files/lib/googlecalendar/service_auth_sub_rb.html +108 -0
- data/html/files/lib/googlecalendar/service_base_rb.html +114 -0
- data/html/files/lib/googlecalendar/service_rb.html +107 -113
- data/html/fr_class_index.html +39 -34
- data/html/fr_file_index.html +32 -29
- data/html/fr_method_index.html +75 -52
- data/html/index.html +23 -23
- data/html/rdoc-style.css +207 -207
- data/lib/googlecalendar/auth_sub_util.rb +143 -0
- data/lib/googlecalendar/calendar.rb +48 -36
- data/lib/googlecalendar/event.rb +16 -11
- data/lib/googlecalendar/service.rb +30 -180
- data/lib/googlecalendar/service_auth_sub.rb +18 -0
- data/lib/googlecalendar/service_base.rb +197 -0
- data/test/00_service_test.rb +2 -1
- data/test/01_calendar_test.rb +1 -1
- data/test/02_event_test.rb +28 -1
- data/test/03_authsub_test.rb +119 -0
- data/test/base_unit.rb +3 -0
- metadata +105 -62
@@ -0,0 +1,18 @@
|
|
1
|
+
require "googlecalendar/service_base"
|
2
|
+
|
3
|
+
module GoogleCalendar
|
4
|
+
#
|
5
|
+
# this class interacts with Google Calendar and uses AuthSub interface for authentication.
|
6
|
+
#
|
7
|
+
class ServiceAuthSub < ServiceBase
|
8
|
+
|
9
|
+
def initialize(token)
|
10
|
+
@auth = token
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def add_authorize_header(header)
|
15
|
+
header["Authorization"] = "AuthSub token=#{@auth}"
|
16
|
+
end
|
17
|
+
end # ServiceAuthSub
|
18
|
+
end # GoogleCalendar
|
@@ -0,0 +1,197 @@
|
|
1
|
+
require "cgi"
|
2
|
+
require "uri"
|
3
|
+
require "net/http"
|
4
|
+
require "net/https"
|
5
|
+
require "open-uri"
|
6
|
+
require "nkf"
|
7
|
+
require "time"
|
8
|
+
|
9
|
+
Net::HTTP.version_1_2
|
10
|
+
|
11
|
+
module GoogleCalendar
|
12
|
+
|
13
|
+
class AuthenticationFailed < StandardError; end #:nodoc: all
|
14
|
+
|
15
|
+
#
|
16
|
+
# This class interacts with google calendar service.
|
17
|
+
#
|
18
|
+
class ServiceBase
|
19
|
+
# Server name to Authenticate
|
20
|
+
AUTH_SERVER = "www.google.com"
|
21
|
+
|
22
|
+
# proxy server address
|
23
|
+
@@proxy_addr = nil
|
24
|
+
def self.proxy_addr
|
25
|
+
@@proxy_addr
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.proxy_addr=(addr)
|
29
|
+
@@proxy_addr=addr
|
30
|
+
end
|
31
|
+
|
32
|
+
# proxy server port number
|
33
|
+
@@proxy_port = nil
|
34
|
+
def self.proxy_port
|
35
|
+
@@proxy_port
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.proxy_port=(port)
|
39
|
+
@@proxy_port = port
|
40
|
+
end
|
41
|
+
|
42
|
+
# proxy server username
|
43
|
+
@@proxy_user = nil
|
44
|
+
def self.proxy_user
|
45
|
+
@@proxy_user
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.proxy_user=(user)
|
49
|
+
@@proxy_user = user
|
50
|
+
end
|
51
|
+
|
52
|
+
# proxy server password
|
53
|
+
@@proxy_pass = nil
|
54
|
+
def self.proxy_pass
|
55
|
+
@@proxy_pass
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.proxy_pass=(pass)
|
59
|
+
@@proxy_pass = pass
|
60
|
+
end
|
61
|
+
|
62
|
+
attr_accessor :logger
|
63
|
+
|
64
|
+
#
|
65
|
+
# send query for events of a calendar and returns http response object.
|
66
|
+
# available condtions are
|
67
|
+
# * :q => query string
|
68
|
+
# * :max-results => max contents count. (default: 25)
|
69
|
+
# * :start-index => 1-based index of the first result to be retrieved
|
70
|
+
# * :orderby => the order of retrieved data.
|
71
|
+
# * :published-min => Bounds on the entry publication date(oldest)
|
72
|
+
# * :published-max => Bounds on the entry publication date(newest)
|
73
|
+
# * :updated-min => Bounds on the entry update date(oldest)
|
74
|
+
# * :updated-max => Bounds on the entry update date(newest)
|
75
|
+
# * :author => Entry author
|
76
|
+
# and so on.
|
77
|
+
# For detail, see http://code.google.com/apis/gdata/protocol.html#Queries
|
78
|
+
# and http://code.google.com/apis/calendar/reference.html#Parameters
|
79
|
+
#
|
80
|
+
def query(cal_url, conditions = nil)
|
81
|
+
logger.info("-- query st --") if logger
|
82
|
+
auth unless @auth
|
83
|
+
uri = URI.parse(cal_url)
|
84
|
+
uri.query = conditions.map do |key, val|
|
85
|
+
"#{key}=#{URI.escape(val.kind_of?(Time) ? val.getutc.iso8601 : val.to_s)}"
|
86
|
+
end.join("&") unless conditions.nil?
|
87
|
+
res = do_get(uri, {})
|
88
|
+
logger.info("-- query en (#{res.message}) --") if logger
|
89
|
+
res
|
90
|
+
end
|
91
|
+
|
92
|
+
#
|
93
|
+
# delete an event.
|
94
|
+
#
|
95
|
+
def delete(feed)
|
96
|
+
logger.info("-- delete st --") if logger
|
97
|
+
auth unless @auth
|
98
|
+
uri = URI.parse(feed)
|
99
|
+
res = do_post(uri,
|
100
|
+
{"X-HTTP-Method-Override" => "DELETE"},
|
101
|
+
"DELETE " + uri.path)
|
102
|
+
logger.info("-- delete en (#{res.message}) --") if logger
|
103
|
+
res
|
104
|
+
end
|
105
|
+
|
106
|
+
#
|
107
|
+
# insert an event
|
108
|
+
#
|
109
|
+
def insert(feed, event)
|
110
|
+
logger.info("-- insert st --") if logger
|
111
|
+
auth unless @auth
|
112
|
+
uri = URI.parse(feed)
|
113
|
+
res = do_post(uri,
|
114
|
+
{"Content-Type" => "application/atom+xml",
|
115
|
+
"Content-Length" => event.length.to_s}, event)
|
116
|
+
logger.info("-- insert en (#{res.message}) --") if logger
|
117
|
+
res
|
118
|
+
end
|
119
|
+
|
120
|
+
#
|
121
|
+
# update an event.
|
122
|
+
#
|
123
|
+
def update(feed, event)
|
124
|
+
logger.info("-- update st --") if logger
|
125
|
+
auth unless @auth
|
126
|
+
uri = URI.parse(feed)
|
127
|
+
res = do_post(uri,
|
128
|
+
{"X-HTTP-Method-Override" => "PUT",
|
129
|
+
"Content-Type" => "application/atom+xml",
|
130
|
+
"Content-Length" => event.length.to_s}, event)
|
131
|
+
logger.info("-- update en (#{res.message}) --") if logger
|
132
|
+
res
|
133
|
+
end
|
134
|
+
|
135
|
+
private
|
136
|
+
|
137
|
+
# authencate
|
138
|
+
def auth
|
139
|
+
raise AuthenticationFailed
|
140
|
+
end
|
141
|
+
|
142
|
+
def do_post(uri, header, content)
|
143
|
+
logger.debug("POST:" + uri.to_s) if logger
|
144
|
+
res = nil
|
145
|
+
try_http(uri, header, content) do |http,path,head,args|
|
146
|
+
cont = args[0]
|
147
|
+
res = http.post(path, cont, head)
|
148
|
+
end
|
149
|
+
res
|
150
|
+
end
|
151
|
+
|
152
|
+
def do_get(uri, header)
|
153
|
+
logger.debug("GET:" + uri.to_s) if logger
|
154
|
+
res = nil
|
155
|
+
try_http(uri, header) do |http,path,head|
|
156
|
+
res = http.get(path, head)
|
157
|
+
end
|
158
|
+
res
|
159
|
+
end
|
160
|
+
|
161
|
+
def try_http(uri, header, *args)
|
162
|
+
res = nil
|
163
|
+
add_authorize_header(header)
|
164
|
+
Net::HTTP.start(uri.host, uri.port, @@proxy_addr, @@proxy_port, @@proxy_user, @@proxy_pass) do |http|
|
165
|
+
header["Cookie"] = @cookie if @cookie
|
166
|
+
res = yield(http, path_with_authorized_query(uri), header, args)
|
167
|
+
logger.debug(res) if logger
|
168
|
+
if res.code == "302"
|
169
|
+
ck = sess = nil
|
170
|
+
ck = res["set-cookie"] if res.key?("set-cookie")
|
171
|
+
uri = URI.parse(res["location"]) if res.key?("location")
|
172
|
+
if uri && uri.query
|
173
|
+
qr = CGI.parse(uri.query)
|
174
|
+
sess = qr["gsessionid"][0] if qr.key?("gsessionid")
|
175
|
+
end
|
176
|
+
if ck && sess
|
177
|
+
logger.debug("cookie: #{ck}, gsessionid:#{sess}") if logger
|
178
|
+
header["Cookie"] = @cookie = ck
|
179
|
+
@session = sess
|
180
|
+
res = yield(http, path_with_authorized_query(uri), header, args)
|
181
|
+
logger.debug(res) if logger
|
182
|
+
else
|
183
|
+
logger.fatal res.body.gsub(/\n/, ' ') if logger
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
res
|
188
|
+
end
|
189
|
+
|
190
|
+
def path_with_authorized_query(uri)
|
191
|
+
query = CGI.parse(uri.query.nil? ? "" : uri.query)
|
192
|
+
query["gsessionid"] = [@session] if @session
|
193
|
+
qs = query.map do |k,v| "#{CGI.escape(k)}=#{CGI.escape(v[0])}" end.join("&")
|
194
|
+
qs.empty? ? uri.path : "#{uri.path}?#{qs}"
|
195
|
+
end
|
196
|
+
end # class ServiceBase
|
197
|
+
end # module
|
data/test/00_service_test.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require "base_unit"
|
2
2
|
|
3
|
-
class
|
3
|
+
class TestService0 < Test::Unit::TestCase
|
4
4
|
include GoogleCalendar
|
5
5
|
include CalendarTest
|
6
6
|
|
7
7
|
def test_invalid_auth
|
8
8
|
s = GoogleCalendar::Service.new("invalid@example.com", "invalidpassword")
|
9
|
+
s.logger = @srv.logger
|
9
10
|
assert_raise(GoogleCalendar::AuthenticationFailed) do
|
10
11
|
s.calendar_list
|
11
12
|
end
|
data/test/01_calendar_test.rb
CHANGED
data/test/02_event_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "base_unit"
|
2
2
|
|
3
|
-
class
|
3
|
+
class TestCalendar2 < Test::Unit::TestCase
|
4
4
|
include GoogleCalendar
|
5
5
|
include CalendarTest
|
6
6
|
|
@@ -44,6 +44,33 @@ class TestCalendar < Test::Unit::TestCase
|
|
44
44
|
assert_equal(0, @cal.events.length)
|
45
45
|
end
|
46
46
|
|
47
|
+
def test_get_event
|
48
|
+
ev = @cal.create_event
|
49
|
+
ev.title = "title"
|
50
|
+
ev.desc = "desc"
|
51
|
+
ev.st = Time.now
|
52
|
+
ev.en = Time.now + 3600
|
53
|
+
ev.save!
|
54
|
+
|
55
|
+
#@srv.logger.level = Logger::DEBUG
|
56
|
+
e2 = Event.get(ev.feed, @srv)
|
57
|
+
assert_same_event(ev, e2)
|
58
|
+
|
59
|
+
e2.desc = "changed"
|
60
|
+
e2.save!
|
61
|
+
assert_equal("changed", e2.desc)
|
62
|
+
|
63
|
+
e3 = Event.get(ev.feed, @srv)
|
64
|
+
assert_same_event(e2, e3)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_get_event_fail
|
68
|
+
#@srv.logger.level = Logger::DEBUG
|
69
|
+
assert_raise(GoogleCalendar::EventGetFailed) do
|
70
|
+
Event.get(GoogleCalendar::Calendar::DEFAULT_CALENDAR_FEED + "/XXXXXXXXXXXXXXXXXXXXX", @srv)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
47
74
|
def setup
|
48
75
|
@srv = get_service
|
49
76
|
clear_all(@srv, FEED)
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require "base_unit"
|
2
|
+
require "rubygems"
|
3
|
+
require "mechanize"
|
4
|
+
require "logger"
|
5
|
+
require "cgi"
|
6
|
+
require "uri"
|
7
|
+
require "googlecalendar/service_auth_sub"
|
8
|
+
require "googlecalendar/auth_sub_util"
|
9
|
+
|
10
|
+
class TestService3 < Test::Unit::TestCase
|
11
|
+
SAMPLE_URL = "http://www.example.com/sample.html"
|
12
|
+
attr_accessor :logger
|
13
|
+
# get one-time token
|
14
|
+
def test_get_onetime_token
|
15
|
+
# login google account
|
16
|
+
agent = WWW::Mechanize.new do |a| a.log = logger end
|
17
|
+
page = agent.get("https://www.google.com/accounts/Login")
|
18
|
+
|
19
|
+
form = page.forms[0]
|
20
|
+
form["Email"] = MAIL
|
21
|
+
form["Passwd"] = PASS
|
22
|
+
page = agent.submit(form)
|
23
|
+
|
24
|
+
# get auth sub request url
|
25
|
+
next_url = SAMPLE_URL
|
26
|
+
use_secure = false
|
27
|
+
use_session = true
|
28
|
+
request_url = GoogleCalendar::AuthSubUtil.build_request_url(
|
29
|
+
next_url, GoogleCalendar::AuthSubUtil::CALENDAR_SCOPE, use_secure, use_session)
|
30
|
+
query = "next=#{CGI.escape(next_url)}&scope=#{CGI.escape(GoogleCalendar::AuthSubUtil::CALENDAR_SCOPE)}&secure=#{use_secure ? "1" : "0"}&session=#{use_session ? "1" : "0"}"
|
31
|
+
logger.debug(request_url)
|
32
|
+
assert_equal(query, URI.parse(request_url).query)
|
33
|
+
|
34
|
+
# get authsub request
|
35
|
+
page = agent.get(request_url)
|
36
|
+
form = page.forms[0]
|
37
|
+
agent.redirect_ok = false
|
38
|
+
page = agent.submit(form, form.buttons.first)
|
39
|
+
|
40
|
+
#get one time token
|
41
|
+
#
|
42
|
+
# In the real world, Google shows the link for your website. When the user clicks the link, you can
|
43
|
+
# get the one time token.
|
44
|
+
# But in this UNIT TEST, this process is omitted and the token is retrieved directly from google's response.
|
45
|
+
#
|
46
|
+
uri = URI.parse(page.links.first.href)
|
47
|
+
params = CGI.parse(uri.query)
|
48
|
+
expected = params["token"][0]
|
49
|
+
logger.debug " token: #{expected}"
|
50
|
+
one_time_token = GoogleCalendar::AuthSubUtil.get_one_time_token(page.links.first.href)
|
51
|
+
assert_equal(expected, one_time_token)
|
52
|
+
return one_time_token
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_use_session_token
|
56
|
+
one_time_token = test_get_onetime_token
|
57
|
+
session_token = nil
|
58
|
+
srv = nil
|
59
|
+
begin
|
60
|
+
#get session token
|
61
|
+
session_token = GoogleCalendar::AuthSubUtil.exchange_session_token(one_time_token)
|
62
|
+
assert_not_nil(session_token)
|
63
|
+
logger.debug(session_token)
|
64
|
+
srv = GoogleCalendar::ServiceAuthSub.new(session_token)
|
65
|
+
srv.logger = logger
|
66
|
+
ret = srv.query(FEED, {})
|
67
|
+
logger.debug(ret.body)
|
68
|
+
assert_equal("200", ret.code)
|
69
|
+
|
70
|
+
#do something
|
71
|
+
yield(session_token, srv) if block_given?
|
72
|
+
ensure
|
73
|
+
#revoke token
|
74
|
+
unless session_token.nil?
|
75
|
+
GoogleCalendar::AuthSubUtil.revoke_session_token(session_token)
|
76
|
+
ret = srv.query(FEED, {})
|
77
|
+
logger.debug(ret)
|
78
|
+
assert_equal("401", ret.code)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_query_with_session_token
|
84
|
+
test_use_session_token do |token, srv|
|
85
|
+
ret = srv.query(GoogleCalendar::Calendar::DEFAULT_CALENDAR_FEED, {})
|
86
|
+
assert_equal("200", ret.code)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_with_session_token
|
91
|
+
test_use_session_token do |token, srv|
|
92
|
+
cal = GoogleCalendar::Calendar.new(srv)
|
93
|
+
event = cal.create_event
|
94
|
+
event.desc = "desc"
|
95
|
+
event.st = Time.now
|
96
|
+
event.en = Time.now + 3600
|
97
|
+
ret = event.save
|
98
|
+
assert(ret)
|
99
|
+
event.destroy!
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_session_info
|
104
|
+
test_use_session_token do |token, session|
|
105
|
+
ret = GoogleCalendar::AuthSubUtil.token_info(token)
|
106
|
+
expected = {"Secure" => "false",
|
107
|
+
"Scope" => GoogleCalendar::AuthSubUtil::CALENDAR_SCOPE,
|
108
|
+
"Target" => "www.example.com"}
|
109
|
+
expected.each do |k,v|
|
110
|
+
assert(ret.key?(k))
|
111
|
+
assert_equal(v, ret[k]) if ret.key?(k)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def setup
|
117
|
+
@logger = Logger.new("authsub.log")
|
118
|
+
end
|
119
|
+
end
|
data/test/base_unit.rb
CHANGED
@@ -3,11 +3,14 @@ $:.unshift(File.dirname(__FILE__) + '/../lib')
|
|
3
3
|
require "parameters"
|
4
4
|
require 'test/unit'
|
5
5
|
require "googlecalendar/calendar"
|
6
|
+
require "logger"
|
6
7
|
|
7
8
|
module CalendarTest
|
8
9
|
include GoogleCalendar
|
9
10
|
def get_service
|
10
11
|
srv = Service.new(MAIL, PASS)
|
12
|
+
srv.logger = Logger.new("testlog.log")
|
13
|
+
srv.logger.level = Logger::INFO
|
11
14
|
assert_instance_of(Service, srv)
|
12
15
|
srv.send("auth")
|
13
16
|
assert_not_nil(srv.instance_eval("@auth"))
|
metadata
CHANGED
@@ -1,87 +1,130 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: gcalapi
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0
|
7
|
-
date:
|
6
|
+
version: 0.1.0
|
7
|
+
date: 2007-02-18 00:00:00 +09:00
|
8
8
|
summary: Google Calendar API
|
9
9
|
require_paths:
|
10
|
-
|
10
|
+
- lib
|
11
11
|
email: zoriorz@gmail.com
|
12
12
|
homepage: http://gcalapi.rubyforge.net
|
13
13
|
rubyforge_project: gcalapi
|
14
|
-
description:
|
14
|
+
description: ""
|
15
15
|
autorequire: googlecalendar/calendar
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
18
18
|
has_rdoc: true
|
19
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
20
|
requirements:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
version: 0.0.0
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
25
24
|
version:
|
26
25
|
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
27
29
|
authors:
|
28
|
-
|
30
|
+
- zorio
|
29
31
|
files:
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
32
|
+
- doc
|
33
|
+
- example
|
34
|
+
- html
|
35
|
+
- lib
|
36
|
+
- Rakefile
|
37
|
+
- README
|
38
|
+
- test
|
39
|
+
- VERSION
|
40
|
+
- doc/classes
|
41
|
+
- doc/files
|
42
|
+
- doc/classes/CalendarTest.src
|
43
|
+
- doc/classes/GoogleCalendar
|
44
|
+
- doc/classes/GoogleCalendar.src
|
45
|
+
- doc/classes/Mail.src
|
46
|
+
- doc/classes/TestCalendar1.src
|
47
|
+
- doc/classes/TestCalendar2.src
|
48
|
+
- doc/classes/TestService0.src
|
49
|
+
- doc/classes/TestService3.src
|
50
|
+
- doc/classes/GoogleCalendar/AuthSubFailed.src
|
51
|
+
- doc/classes/GoogleCalendar/AuthSubUtil.src
|
52
|
+
- doc/classes/GoogleCalendar/Calendar.src
|
53
|
+
- doc/classes/GoogleCalendar/Event.src
|
54
|
+
- doc/classes/GoogleCalendar/Service.src
|
55
|
+
- doc/classes/GoogleCalendar/ServiceAuthSub.src
|
56
|
+
- doc/classes/GoogleCalendar/ServiceBase.src
|
57
|
+
- doc/files/example
|
58
|
+
- doc/files/lib
|
59
|
+
- doc/files/test
|
60
|
+
- doc/files/example/ol2gcal_rb.src
|
61
|
+
- doc/files/lib/googlecalendar
|
62
|
+
- example/mail2gcal.rb
|
63
|
+
- example/mixi2gcal.rb
|
64
|
+
- example/ol2gcal.rb
|
65
|
+
- html/classes
|
66
|
+
- html/created.rid
|
67
|
+
- html/files
|
68
|
+
- html/fr_class_index.html
|
69
|
+
- html/fr_file_index.html
|
70
|
+
- html/fr_method_index.html
|
71
|
+
- html/index.html
|
72
|
+
- html/rdoc-style.css
|
73
|
+
- html/classes/GoogleCalendar
|
74
|
+
- html/classes/GoogleCalendar.html
|
75
|
+
- html/classes/GoogleCalendar/AuthenticationFailed.html
|
76
|
+
- html/classes/GoogleCalendar/AuthSubFailed.html
|
77
|
+
- html/classes/GoogleCalendar/AuthSubUtil.html
|
78
|
+
- html/classes/GoogleCalendar/Calendar.html
|
79
|
+
- html/classes/GoogleCalendar/Event.html
|
80
|
+
- html/classes/GoogleCalendar/EventDeleteFailed.html
|
81
|
+
- html/classes/GoogleCalendar/EventGetFailed.html
|
82
|
+
- html/classes/GoogleCalendar/EventInsertFailed.html
|
83
|
+
- html/classes/GoogleCalendar/EventUpdateFailed.html
|
84
|
+
- html/classes/GoogleCalendar/InvalidCalendarURL.html
|
85
|
+
- html/classes/GoogleCalendar/Service.html
|
86
|
+
- html/classes/GoogleCalendar/ServiceAuthSub.html
|
87
|
+
- html/classes/GoogleCalendar/ServiceBase.html
|
88
|
+
- html/files/lib
|
89
|
+
- html/files/README.html
|
90
|
+
- html/files/lib/googlecalendar
|
91
|
+
- html/files/lib/googlecalendar/auth_sub_util_rb.html
|
92
|
+
- html/files/lib/googlecalendar/calendar_rb.html
|
93
|
+
- html/files/lib/googlecalendar/event_rb.html
|
94
|
+
- html/files/lib/googlecalendar/service_auth_sub_rb.html
|
95
|
+
- html/files/lib/googlecalendar/service_base_rb.html
|
96
|
+
- html/files/lib/googlecalendar/service_rb.html
|
97
|
+
- lib/gcalapi.rb
|
98
|
+
- lib/googlecalendar
|
99
|
+
- lib/googlecalendar/auth_sub_util.rb
|
100
|
+
- lib/googlecalendar/calendar.rb
|
101
|
+
- lib/googlecalendar/event.rb
|
102
|
+
- lib/googlecalendar/service.rb
|
103
|
+
- lib/googlecalendar/service_auth_sub.rb
|
104
|
+
- lib/googlecalendar/service_base.rb
|
105
|
+
- test/00_service_test.rb
|
106
|
+
- test/01_calendar_test.rb
|
107
|
+
- test/02_event_test.rb
|
108
|
+
- test/03_authsub_test.rb
|
109
|
+
- test/all.sh
|
110
|
+
- test/base_unit.rb
|
111
|
+
- test/each.sh
|
112
|
+
- test/template.parameters.rb
|
75
113
|
test_files:
|
76
|
-
|
77
|
-
|
78
|
-
|
114
|
+
- test/00_service_test.rb
|
115
|
+
- test/01_calendar_test.rb
|
116
|
+
- test/02_event_test.rb
|
117
|
+
- test/03_authsub_test.rb
|
79
118
|
rdoc_options:
|
80
|
-
|
81
|
-
|
119
|
+
- --line-numbers
|
120
|
+
- --inline-source
|
82
121
|
extra_rdoc_files:
|
83
|
-
|
122
|
+
- README
|
84
123
|
executables: []
|
124
|
+
|
85
125
|
extensions: []
|
126
|
+
|
86
127
|
requirements: []
|
87
|
-
|
128
|
+
|
129
|
+
dependencies: []
|
130
|
+
|