This repository was archived by the owner on Jul 31, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathREADME
110 lines (91 loc) · 4.11 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
* Not maintained
Use at your own risk for example code or usage.
=GCal4Ruby
==Introduction
GCal4Ruby is a full featured wrapper for the google calendar API. GCal4Ruby implements
all of the functionality available through the Google Calnedar API, including permissions,
attendees, reminders and event recurrence.
==Author and Contact Information
This branch was made by Matt Gornick (http://github.com/mgornick) to implement Google AuthSub into the original
GCal4Ruby that was created and is maintained by {Mike Reich}[mailto:[email protected]]
and is licenses under the GPL v2. Feel free to use and update, but be sure to contribute your
code back to the project and attribute as required by the license.
===Website
http://rubyforge.org/projects/gcal4ruby/
===Example Application
http://github.com/mgornick/studentplanr
==Description
GCal4Ruby has three major components: the service, calendar and event objects. Each service
has many calendars, which in turn have many events. Each service is the representation of a
google account, and thus must be successfully authenticated using valid Google Calendar
account credentials.
==Examples
Below are some common usage examples. For more examples, check the documentation.
===Service
1. Authenticate
service = Service.new
service.authenticate("[email protected]", "password")
2. Authenticate with Google AuthSub
# your authentication controller (example is index action in the home controller):
scope = 'http://www.google.com/calendar/feeds/'
next_url = 'http://127.0.0.1:3000/home/authenticated'
secure = false # set secure = true for signed AuthSub requests
session = true
@authsub_link = GData::Auth::AuthSub.get_url(next_url, scope, secure, session)
# in your next_url controller as defined by your AuthSub link (in example would be the authenticated action)
@token = params[:token]
client = GData::Client::Calendar.new
client.authsub_token = params[:token] # extract the single-use token from the URL query params
session[:token] = client.auth_handler.upgrade()
client.authsub_token = session[:token] if session[:token]
service= GCal4Ruby::Service.new
service.authsub_authenticate(session[:token], "[email protected]")
3. Get Calendar List
calendars = service.calendars
===Calendar
All usages assume a successfully authenticated Service.
1. Create a new Calendar
cal = Calendar.new(service)
2. Find an existing Calendar
cal = Calendar.find(service, "New Calendar", :first)
3. Find all calendars containing the search term
cal = Calendar.find(service, "Soccer Team")
4. Find a calendar by ID
cal = Calendar.find(service, id, :first)
===Event
All usages assume a successfully authenticated Service and valid Calendar.
1. Create a new Event
event = Event.new(calendar)
event.title = "Soccer Game"
event.start = Time.parse("12-06-2009 at 12:30 PM")
event.end = Time.parse("12-06-2009 at 1:30 PM")
event.where = "Merry Playfields"
event.save
2. Find an existing Event
event = Event.find(cal, "Soccer Game", {:scope => :first})
3. Find all events containing the search term
event = Event.find(cal, "Soccer Game")
4. Create a recurring event for every saturday
event = Event.new(calendar)
event.title = "Baseball Game"
event.where = "Municipal Stadium"
event.recurrence = Recurrence.new
event.recurrence.start = Time.parse("13-06-2009 at 4:30 PM")
event.recurrence.end = Time.parse("13-06-2009 at 6:30 PM")
event.recurrence.frequency = {"weekly" => ["SA"]}
event.save
5. Create an event with a 15 minute email reminder
event = Event.new(calendar)
event.title = "Dinner with Kate"
event.start = Time.parse("20-06-2009 at 5 pm")
event.end = Time.parse("20-06-209 at 8 pm")
event.where = "Luigi's"
event.reminder = {:minutes => 15, :method => 'email'}
event.save
6. Create an event with attendees
event = Event.new(calendar)
event.title = "Dinner with Kate"
event.start = Time.parse("20-06-2009 at 5 pm")
event.end = Time.parse("20-06-209 at 8 pm")
event.attendees => {:name => "Kate", :email => "[email protected]"}
event.save