Skip to content

Commit 605614d

Browse files
committed
Github:14269 (Implement Google.calendar.createEvent() .deleteEvent() and .updateEvent())
1 parent 29f0d39 commit 605614d

File tree

1 file changed

+115
-73
lines changed

1 file changed

+115
-73
lines changed

Project/Sources/Classes/GoogleCalendar.4dm

Lines changed: 115 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -83,79 +83,6 @@ Function getCalendars($inParameters : Object) : Object
8383
return $result
8484

8585

86-
// Mark: - [Private]
87-
// Mark: - Events
88-
// ----------------------------------------------------
89-
90-
91-
Function _deleteEvent($inParameters : Object) : Object // For test purposes only (subject to changes, use at your own risk)
92-
93-
// DELETE https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
94-
95-
var $calendarId : Text:=(Length(String($inParameters.calendarId))>0) ? $inParameters.calendarId : "primary"
96-
var $eventId : Text:=(Length(String($inParameters.eventId))>0) ? $inParameters.eventId : ""
97-
var $headers : Object:={Accept: "application/json"}
98-
var $urlParams : Text:="calendars/"+cs.Tools.me.urlEncode($calendarID)+"/events/"+cs.Tools.me.urlEncode($eventId)
99-
var $delimiter : Text:="?"
100-
101-
If (Not(Value type($inParameters.sendNotifications)=Is undefined))
102-
$urlParams+=($delimiter+"sendNotifications="+Choose(Bool($inParameters.sendNotifications); "true"; "false"))
103-
$delimiter:="&"
104-
End if
105-
If ((Value type($inParameters.sendUpdates)=Is text) && (Length(String($inParameters.sendUpdates))>0))
106-
$urlParams+=($delimiter+"sendUpdates="+$inParameters.sendUpdates) // "all", "externalOnly", "none"
107-
$delimiter:="&"
108-
End if
109-
110-
var $URL : Text:=This._getURL()+$urlParams
111-
var $response : Object:=Super._sendRequestAndWaitResponse("DELETE"; $URL; $headers)
112-
113-
return This._returnStatus()
114-
115-
116-
// ----------------------------------------------------
117-
118-
119-
Function _insertEvent($inParameters : Object; $inEvent : Object) : Object // For test purposes only (subject to changes, use at your own risk)
120-
121-
// POST https://www.googleapis.com/calendar/v3/calendars/calendarId/events
122-
123-
var $calendarId : Text:=(Length(String($inParameters.calendarId))>0) ? $inParameters.calendarId : "primary"
124-
var $headers : Object:={Accept: "application/json"}
125-
var $urlParams : Text:="calendars/"+cs.Tools.me.urlEncode($calendarID)+"/events"
126-
var $delimiter : Text:="?"
127-
128-
If (Not(Value type($inParameters.conferenceDataVersion)=Is undefined))
129-
$urlParams+=($delimiter+"conferenceDataVersion="+Choose(Value type($inParameters.conferenceDataVersion)=Is text; $inParameters.conferenceDataVersion; String($inParameters.conferenceDataVersion)))
130-
$delimiter:="&"
131-
End if
132-
If (Not(Value type($inParameters.maxAttendees)=Is undefined))
133-
$urlParams+=($delimiter+"maxAttendees="+Choose(Value type($inParameters.maxAttendees)=Is text; $inParameters.maxAttendees; String($inParameters.maxAttendees)))
134-
$delimiter:="&"
135-
End if
136-
If (Not(Value type($inParameters.sendNotifications)=Is undefined))
137-
$urlParams+=($delimiter+"sendNotifications="+Choose(Bool($inParameters.sendNotifications); "true"; "false"))
138-
$delimiter:="&"
139-
End if
140-
If ((Value type($inParameters.sendUpdates)=Is text) && (Length(String($inParameters.sendUpdates))>0))
141-
$urlParams+=($delimiter+"sendUpdates="+$inParameters.sendUpdates) // "all", "externalOnly", "none"
142-
$delimiter:="&"
143-
End if
144-
If (Not(Value type($inParameters.supportsAttachments)=Is undefined))
145-
$urlParams+=($delimiter+"supportsAttachments="+Choose(Bool($inParameters.supportsAttachments); "true"; "false"))
146-
$delimiter:="&"
147-
End if
148-
149-
var $URL : Text:=This._getURL()+$urlParams
150-
var $response : Object:=Super._sendRequestAndWaitResponse("POST"; $URL; $headers; $inEvent)
151-
152-
If ($response#Null)
153-
return cs.GoogleEvent.new($response)
154-
End if
155-
156-
return Null
157-
158-
15986
// Mark: - [Public]
16087
// Mark: - Events
16188
// ----------------------------------------------------
@@ -305,3 +232,118 @@ Function getEvents($inParameters : Object) : Object
305232
Super._throwErrors(True)
306233

307234
return $result
235+
236+
237+
// ----------------------------------------------------
238+
239+
240+
Function createEvent($inParameters : Object; $inEvent : Object) : Object
241+
242+
// POST https://www.googleapis.com/calendar/v3/calendars/calendarId/events
243+
244+
var $calendarId : Text:=(Length(String($inParameters.calendarId))>0) ? $inParameters.calendarId : "primary"
245+
var $headers : Object:={Accept: "application/json"}
246+
var $urlParams : Text:="calendars/"+cs.Tools.me.urlEncode($calendarID)+"/events"
247+
var $delimiter : Text:="?"
248+
249+
If (Not(Value type($inParameters.conferenceDataVersion)=Is undefined))
250+
$urlParams+=($delimiter+"conferenceDataVersion="+Choose(Value type($inParameters.conferenceDataVersion)=Is text; $inParameters.conferenceDataVersion; String($inParameters.conferenceDataVersion)))
251+
$delimiter:="&"
252+
End if
253+
If (Not(Value type($inParameters.maxAttendees)=Is undefined))
254+
$urlParams+=($delimiter+"maxAttendees="+Choose(Value type($inParameters.maxAttendees)=Is text; $inParameters.maxAttendees; String($inParameters.maxAttendees)))
255+
$delimiter:="&"
256+
End if
257+
If (Not(Value type($inParameters.sendNotifications)=Is undefined))
258+
$urlParams+=($delimiter+"sendNotifications="+Choose(Bool($inParameters.sendNotifications); "true"; "false"))
259+
$delimiter:="&"
260+
End if
261+
If ((Value type($inParameters.sendUpdates)=Is text) && (Length(String($inParameters.sendUpdates))>0))
262+
$urlParams+=($delimiter+"sendUpdates="+$inParameters.sendUpdates) // "all", "externalOnly", "none"
263+
$delimiter:="&"
264+
End if
265+
If (Not(Value type($inParameters.supportsAttachments)=Is undefined))
266+
$urlParams+=($delimiter+"supportsAttachments="+Choose(Bool($inParameters.supportsAttachments); "true"; "false"))
267+
$delimiter:="&"
268+
End if
269+
270+
var $URL : Text:=This._getURL()+$urlParams
271+
var $response : Object:=Super._sendRequestAndWaitResponse("POST"; $URL; $headers; $inEvent)
272+
273+
If ($response#Null)
274+
return cs.GoogleEvent.new($response)
275+
End if
276+
277+
return Null
278+
279+
280+
// ----------------------------------------------------
281+
282+
283+
Function deleteEvent($inParameters : Object) : Object
284+
285+
// DELETE https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
286+
287+
var $calendarId : Text:=(Length(String($inParameters.calendarId))>0) ? $inParameters.calendarId : "primary"
288+
var $eventId : Text:=(Length(String($inParameters.eventId))>0) ? $inParameters.eventId : ""
289+
var $headers : Object:={Accept: "application/json"}
290+
var $urlParams : Text:="calendars/"+cs.Tools.me.urlEncode($calendarID)+"/events/"+cs.Tools.me.urlEncode($eventId)
291+
var $delimiter : Text:="?"
292+
293+
If (Not(Value type($inParameters.sendNotifications)=Is undefined))
294+
$urlParams+=($delimiter+"sendNotifications="+Choose(Bool($inParameters.sendNotifications); "true"; "false"))
295+
$delimiter:="&"
296+
End if
297+
If ((Value type($inParameters.sendUpdates)=Is text) && (Length(String($inParameters.sendUpdates))>0))
298+
$urlParams+=($delimiter+"sendUpdates="+$inParameters.sendUpdates) // "all", "externalOnly", "none"
299+
$delimiter:="&"
300+
End if
301+
302+
var $URL : Text:=This._getURL()+$urlParams
303+
var $response : Object:=Super._sendRequestAndWaitResponse("DELETE"; $URL; $headers)
304+
305+
return This._returnStatus()
306+
307+
308+
// ----------------------------------------------------
309+
310+
311+
Function updateEvent($inParameters : Object; $inEvent : Object) : Object
312+
313+
// PUT https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
314+
315+
var $calendarId : Text:=(Length(String($inParameters.calendarId))>0) ? $inParameters.calendarId : "primary"
316+
var $eventId : Text:=(Length(String($inParameters.eventId))>0) ? $inParameters.eventId : ""
317+
var $headers : Object:={Accept: "application/json"}
318+
var $urlParams : Text:="calendars/"+cs.Tools.me.urlEncode($calendarID)+"/events/"+cs.Tools.me.urlEncode($eventId)
319+
var $delimiter : Text:="?"
320+
321+
If (Not(Value type($inParameters.conferenceDataVersion)=Is undefined))
322+
$urlParams+=($delimiter+"conferenceDataVersion="+Choose(Value type($inParameters.conferenceDataVersion)=Is text; $inParameters.conferenceDataVersion; String($inParameters.conferenceDataVersion)))
323+
$delimiter:="&"
324+
End if
325+
If (Not(Value type($inParameters.maxAttendees)=Is undefined))
326+
$urlParams+=($delimiter+"maxAttendees="+Choose(Value type($inParameters.maxAttendees)=Is text; $inParameters.maxAttendees; String($inParameters.maxAttendees)))
327+
$delimiter:="&"
328+
End if
329+
If (Not(Value type($inParameters.sendNotifications)=Is undefined))
330+
$urlParams+=($delimiter+"sendNotifications="+Choose(Bool($inParameters.sendNotifications); "true"; "false"))
331+
$delimiter:="&"
332+
End if
333+
If ((Value type($inParameters.sendUpdates)=Is text) && (Length(String($inParameters.sendUpdates))>0))
334+
$urlParams+=($delimiter+"sendUpdates="+$inParameters.sendUpdates) // "all", "externalOnly", "none"
335+
$delimiter:="&"
336+
End if
337+
If (Not(Value type($inParameters.supportsAttachments)=Is undefined))
338+
$urlParams+=($delimiter+"supportsAttachments="+Choose(Bool($inParameters.supportsAttachments); "true"; "false"))
339+
$delimiter:="&"
340+
End if
341+
342+
var $URL : Text:=This._getURL()+$urlParams
343+
var $response : Object:=Super._sendRequestAndWaitResponse("PUT"; $URL; $headers; $inEvent)
344+
345+
If ($response#Null)
346+
return cs.GoogleEvent.new($response)
347+
End if
348+
349+
return Null

0 commit comments

Comments
 (0)