Skip to content

Commit 01569cf

Browse files
committed
Github:11622 Github:11728 (fix issue #12572)
1 parent 34cfa0f commit 01569cf

File tree

2 files changed

+185
-145
lines changed

2 files changed

+185
-145
lines changed

Project/Sources/Classes/GoogleCalendar.4dm

Lines changed: 109 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ Function getEvent($inParameters : Object) : Object
173173
: (Value type($inParameters.eventId)#Is text)
174174
Super._throwError(10; {which: "\"eventId\""; function: "google.calendar.getEvent"})
175175

176+
: ((Value type($inParameters.startDateTime)=Is undefined) && (Value type($inParameters.endDateTime)#Is undefined))
177+
Super._throwError(9; {which: "\"startDateTime\""; function: "google.calendar.getEvent"})
178+
179+
: ((Value type($inParameters.endDateTime)=Is undefined) && (Value type($inParameters.startDateTime)#Is undefined))
180+
Super._throwError(9; {which: "\"endDateTime\""; function: "google.calendar.getEvent"})
181+
176182
Else
177183

178184
var $eventId : Text:=$inParameters.eventId
@@ -208,96 +214,110 @@ Function getEvents($inParameters : Object) : Object
208214
Super._clearErrorStack()
209215
Super._throwErrors(False)
210216

211-
var $calendarId : Text:=(Length(String($inParameters.calendarId))>0) ? $inParameters.calendarId : "primary"
212-
var $urlParams : Text:="calendars/"+cs.Tools.me.urlEncode($calendarID)+"/events"
213-
var $delimiter : Text:="?"
214-
var $timeZone : Text:=(Length(String($inParameters.timeZone))>0) ? String($inParameters.timeZone) : "UTC"
215-
var $startDateTime : Text:=""
216-
var $endDateTime : Text:=""
217-
218217
Case of
219-
: (Value type($inParameters.startDateTime)=Is text)
220-
$startDateTime:=$inParameters.startDateTime
221-
: (Value type($inParameters.startDateTime)=Is object) // It assumes that object value is like {date: "2020-01-01"; time: "00:00:00"}
222-
$startDateTime:=String(Date($inParameters.startDateTime.date); ISO date GMT; Time($inParameters.startDateTime.time))
223-
End case
224-
225-
Case of
226-
: (Value type($inParameters.endDateTime)=Is text)
227-
$endDateTime:=$inParameters.endDateTime
228-
: (Value type($inParameters.endDateTime)=Is object) // It assumes that object value is like {date: "2020-01-01"; time: "00:00:00"}
229-
$endDateTime:=String(Date($inParameters.endDateTime.date); ISO date GMT; Time($inParameters.endDateTime.time))
218+
: ((Value type($inParameters.startDateTime)=Is undefined) && (Value type($inParameters.endDateTime)#Is undefined))
219+
Super._throwError(9; {which: "\"startDateTime\""; function: "google.calendar.getEvent"})
220+
221+
: ((Value type($inParameters.endDateTime)=Is undefined) && (Value type($inParameters.startDateTime)#Is undefined))
222+
Super._throwError(9; {which: "\"endDateTime\""; function: "google.calendar.getEvent"})
223+
224+
Else
225+
var $calendarId : Text:=(Length(String($inParameters.calendarId))>0) ? $inParameters.calendarId : "primary"
226+
var $urlParams : Text:="calendars/"+cs.Tools.me.urlEncode($calendarID)+"/events"
227+
var $delimiter : Text:="?"
228+
var $timeZone : Text:=(Length(String($inParameters.timeZone))>0) ? String($inParameters.timeZone) : "UTC"
229+
var $startDateTime : Text:=""
230+
var $endDateTime : Text:=""
231+
232+
Case of
233+
: (Value type($inParameters.startDateTime)=Is text)
234+
$startDateTime:=$inParameters.startDateTime
235+
: (Value type($inParameters.startDateTime)=Is object) // It assumes that object value is like {date: "2020-01-01"; time: "00:00:00"}
236+
$startDateTime:=String(Date($inParameters.startDateTime.date); ISO date GMT; Time($inParameters.startDateTime.time))
237+
End case
238+
239+
Case of
240+
: (Value type($inParameters.endDateTime)=Is text)
241+
$endDateTime:=$inParameters.endDateTime
242+
: (Value type($inParameters.endDateTime)=Is object) // It assumes that object value is like {date: "2020-01-01"; time: "00:00:00"}
243+
$endDateTime:=String(Date($inParameters.endDateTime.date); ISO date GMT; Time($inParameters.endDateTime.time))
244+
End case
245+
246+
If ((Value type($inParameters.eventTypes)=Is text) && (Length(String($inParameters.eventTypes))>0))
247+
$urlParams+=($delimiter+"eventTypes="+$inParameters.eventTypes)
248+
$delimiter:="&"
249+
End if
250+
If ((Value type($inParameters.iCalUID)=Is text) && (Length(String($inParameters.iCalUID))>0))
251+
$urlParams+=($delimiter+"iCalUID="+String($inParameters.iCalUID))
252+
$delimiter:="&"
253+
End if
254+
If (Not(Value type($inParameters.maxAttendees)=Is undefined))
255+
$urlParams+=($delimiter+"maxAttendees="+Choose(Value type($inParameters.maxAttendees)=Is text; $inParameters.maxAttendees; String($inParameters.maxAttendees)))
256+
$delimiter:="&"
257+
End if
258+
If (Not(Value type($inParameters.top)=Is undefined))
259+
$urlParams+=($delimiter+"maxResults="+Choose(Value type($inParameters.top)=Is text; $inParameters.top; String($inParameters.top)))
260+
$delimiter:="&"
261+
End if
262+
If ((Value type($inParameters.orderBy)=Is text) && (Length(String($inParameters.orderBy))>0))
263+
$urlParams+=($delimiter+"orderBy="+String($inParameters.orderBy))
264+
$delimiter:="&"
265+
End if
266+
If ((Value type($inParameters.search)=Is text) && (Length(String($inParameters.search))>0))
267+
$urlParams+=($delimiter+"search="+String($inParameters.search))
268+
$delimiter:="&"
269+
End if
270+
If (Not(Value type($inParameters.showDeleted)=Is undefined))
271+
$urlParams+=($delimiter+"showDeleted="+Choose(Bool($inParameters.showDeleted); "true"; "false"))
272+
$delimiter:="&"
273+
End if
274+
If (Not(Value type($inParameters.showHiddenInvitations)=Is undefined))
275+
$urlParams+=($delimiter+"showHiddenInvitations="+Choose(Bool($inParameters.showHiddenInvitations); "true"; "false"))
276+
$delimiter:="&"
277+
End if
278+
If (Not(Value type($inParameters.singleEvents)=Is undefined))
279+
$urlParams+=($delimiter+"singleEvents="+Choose(Bool($inParameters.singleEvents); "true"; "false"))
280+
$delimiter:="&"
281+
End if
282+
If (Length(String($startDateTime))>0)
283+
$urlParams+=($delimiter+"timeMin="+String($startDateTime))
284+
$delimiter:="&"
285+
End if
286+
If (Length(String($endDateTime))>0)
287+
$urlParams+=($delimiter+"timeMax="+String($endDateTime))
288+
$delimiter:="&"
289+
End if
290+
If ((Value type($inParameters.updatedMin)=Is text) && (Length(String($inParameters.updatedMin))>0))
291+
$urlParams+=($delimiter+"updatedMin="+String($inParameters.updatedMin))
292+
$delimiter:="&"
293+
End if
294+
If ((Value type($inParameters.privateExtendedProperty)=Is text) && (Length(String($inParameters.privateExtendedProperty))>0))
295+
$urlParams+=($delimiter+"privateExtendedProperty="+String($inParameters.privateExtendedProperty))
296+
$delimiter:="&"
297+
End if
298+
If ((Value type($inParameters.sharedExtendedProperty)=Is text) && (Length(String($inParameters.sharedExtendedProperty))>0))
299+
$urlParams+=($delimiter+"sharedExtendedProperty="+String($inParameters.sharedExtendedProperty))
300+
$delimiter:="&"
301+
End if
302+
$urlParams+=($delimiter+"timeZone="+cs.Tools.me.urlEncode($timeZone))
303+
304+
var $options : Object:={}
305+
$options.url:=This._getURL()+$urlParams
306+
$options.headers:={Accept: "application/json"}
307+
$options.attributes:=["kind"; "etag"; "summary"; "calendarId"; "description"; "updated"; "timeZone"; "accessRole"; "defaultReminders"]
308+
309+
var $result : cs.GoogleEventList:=cs.GoogleEventList.new(This._getOAuth2Provider(); $options)
310+
311+
If ((Value type($result.calendarId)=Is undefined) && (Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
312+
$result.calendarId:=$inParameters.calendarId
313+
End if
314+
315+
Super._throwErrors(True)
316+
317+
return $result
318+
230319
End case
231320

232-
If ((Value type($inParameters.eventTypes)=Is text) && (Length(String($inParameters.eventTypes))>0))
233-
$urlParams+=($delimiter+"eventTypes="+$inParameters.eventTypes)
234-
$delimiter:="&"
235-
End if
236-
If ((Value type($inParameters.iCalUID)=Is text) && (Length(String($inParameters.iCalUID))>0))
237-
$urlParams+=($delimiter+"iCalUID="+String($inParameters.iCalUID))
238-
$delimiter:="&"
239-
End if
240-
If (Not(Value type($inParameters.maxAttendees)=Is undefined))
241-
$urlParams+=($delimiter+"maxAttendees="+Choose(Value type($inParameters.maxAttendees)=Is text; $inParameters.maxAttendees; String($inParameters.maxAttendees)))
242-
$delimiter:="&"
243-
End if
244-
If (Not(Value type($inParameters.top)=Is undefined))
245-
$urlParams+=($delimiter+"maxResults="+Choose(Value type($inParameters.top)=Is text; $inParameters.top; String($inParameters.top)))
246-
$delimiter:="&"
247-
End if
248-
If ((Value type($inParameters.orderBy)=Is text) && (Length(String($inParameters.orderBy))>0))
249-
$urlParams+=($delimiter+"orderBy="+String($inParameters.orderBy))
250-
$delimiter:="&"
251-
End if
252-
If ((Value type($inParameters.search)=Is text) && (Length(String($inParameters.search))>0))
253-
$urlParams+=($delimiter+"search="+String($inParameters.search))
254-
$delimiter:="&"
255-
End if
256-
If (Not(Value type($inParameters.showDeleted)=Is undefined))
257-
$urlParams+=($delimiter+"showDeleted="+Choose(Bool($inParameters.showDeleted); "true"; "false"))
258-
$delimiter:="&"
259-
End if
260-
If (Not(Value type($inParameters.showHiddenInvitations)=Is undefined))
261-
$urlParams+=($delimiter+"showHiddenInvitations="+Choose(Bool($inParameters.showHiddenInvitations); "true"; "false"))
262-
$delimiter:="&"
263-
End if
264-
If (Not(Value type($inParameters.singleEvents)=Is undefined))
265-
$urlParams+=($delimiter+"singleEvents="+Choose(Bool($inParameters.singleEvents); "true"; "false"))
266-
$delimiter:="&"
267-
End if
268-
If (Length(String($startDateTime))>0)
269-
$urlParams+=($delimiter+"timeMin="+String($startDateTime))
270-
$delimiter:="&"
271-
End if
272-
If (Length(String($endDateTime))>0)
273-
$urlParams+=($delimiter+"timeMax="+String($endDateTime))
274-
$delimiter:="&"
275-
End if
276-
If ((Value type($inParameters.updatedMin)=Is text) && (Length(String($inParameters.updatedMin))>0))
277-
$urlParams+=($delimiter+"updatedMin="+String($inParameters.updatedMin))
278-
$delimiter:="&"
279-
End if
280-
If ((Value type($inParameters.privateExtendedProperty)=Is text) && (Length(String($inParameters.privateExtendedProperty))>0))
281-
$urlParams+=($delimiter+"privateExtendedProperty="+String($inParameters.privateExtendedProperty))
282-
$delimiter:="&"
283-
End if
284-
If ((Value type($inParameters.sharedExtendedProperty)=Is text) && (Length(String($inParameters.sharedExtendedProperty))>0))
285-
$urlParams+=($delimiter+"sharedExtendedProperty="+String($inParameters.sharedExtendedProperty))
286-
$delimiter:="&"
287-
End if
288-
$urlParams+=($delimiter+"timeZone="+cs.Tools.me.urlEncode($timeZone))
289-
290-
var $options : Object:={}
291-
$options.url:=This._getURL()+$urlParams
292-
$options.headers:={Accept: "application/json"}
293-
$options.attributes:=["kind"; "etag"; "summary"; "calendarId"; "description"; "updated"; "timeZone"; "accessRole"; "defaultReminders"]
294-
295-
var $result : cs.GoogleEventList:=cs.GoogleEventList.new(This._getOAuth2Provider(); $options)
296-
297-
If ((Value type($result.calendarId)=Is undefined) && (Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
298-
$result.calendarId:=$inParameters.calendarId
299-
End if
300-
301-
Super._throwErrors(False)
321+
Super._throwErrors(True)
302322

303-
return $result
323+
return This._returnStatus()

Project/Sources/Classes/Office365Calendar.4dm

Lines changed: 76 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,12 @@ Function getEvent($inParameters : Object) : Object
215215
: (Length(String($inParameters.eventId))=0)
216216
Super._throwError(9; {which: "\"eventId\""; function: "office365.calendar.getEvent"})
217217

218+
: ((Value type($inParameters.startDateTime)=Is undefined) && (Value type($inParameters.endDateTime)#Is undefined))
219+
Super._throwError(9; {which: "\"startDateTime\""; function: "office365.calendar.getEvent"})
220+
221+
: ((Value type($inParameters.endDateTime)=Is undefined) && (Value type($inParameters.startDateTime)#Is undefined))
222+
Super._throwError(9; {which: "\"endDateTime\""; function: "office365.calendar.getEvent"})
223+
218224
Else
219225
var $headers : Object:={}
220226
var $urlParams : Text:=""
@@ -259,66 +265,80 @@ Function getEvent($inParameters : Object) : Object
259265

260266
Function getEvents($inParameters : Object) : Object
261267

268+
/*
269+
A user's or group's default calendar.
270+
271+
GET /me/calendar/events
272+
GET /users/{id | userPrincipalName}/calendar/events
273+
GET /me/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
274+
GET /users/{id | userPrincipalName}/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
275+
276+
A user's calendar in the default calendarGroup.
277+
278+
GET /me/calendars/{id}/events
279+
GET /users/{id | userPrincipalName}/calendars/{id}/events
280+
GET /me/calendars/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
281+
GET /users/{id | userPrincipalName}/calendars/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
282+
*/
262283
Super._clearErrorStack()
263284
Super._throwErrors(False)
264285

265-
/*
266-
A user's or group's default calendar.
286+
Case of
287+
: ((Value type($inParameters.startDateTime)=Is undefined) && (Value type($inParameters.endDateTime)#Is undefined))
288+
Super._throwError(9; {which: "\"startDateTime\""; function: "office365.calendar.getEvent"})
267289

268-
GET /me/calendar/events
269-
GET /users/{id | userPrincipalName}/calendar/events
270-
GET /me/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
271-
GET /users/{id | userPrincipalName}/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
290+
: ((Value type($inParameters.endDateTime)=Is undefined) && (Value type($inParameters.startDateTime)#Is undefined))
291+
Super._throwError(9; {which: "\"endDateTime\""; function: "office365.calendar.getEvent"})
272292

273-
A user's calendar in the default calendarGroup.
293+
Else
294+
var $headers : Object:={}
295+
var $urlParams : Text:=""
296+
If (Length(String(This.userId))>0)
297+
$urlParams+="users/"+This.userId
298+
Else
299+
$urlParams+="me"
300+
End if
301+
If ((Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
302+
$urlParams+="/calendars/"+$inParameters.calendarId
303+
This.id:=$inParameters.calendarId
304+
Else
305+
$urlParams+="/calendar"
306+
End if
307+
If ((Value type($inParameters.startDateTime)=Is text) && (Length(String($inParameters.startDateTime))>0)\
308+
&& (Value type($inParameters.endDateTime)=Is text) && (Length(String($inParameters.endDateTime))>0))
309+
$urlParams+="/calendarView"+This._getURLParamsFromObject($inParameters)
310+
Else
311+
$urlParams+="/events"+This._getURLParamsFromObject($inParameters)
312+
End if
274313

275-
GET /me/calendars/{id}/events
276-
GET /users/{id | userPrincipalName}/calendars/{id}/events
277-
GET /me/calendars/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
278-
GET /users/{id | userPrincipalName}/calendars/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
279-
*/
280-
var $headers : Object:={}
281-
var $urlParams : Text:=""
282-
If (Length(String(This.userId))>0)
283-
$urlParams+="users/"+This.userId
284-
Else
285-
$urlParams+="me"
286-
End if
287-
If ((Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
288-
$urlParams+="/calendars/"+$inParameters.calendarId
289-
This.id:=$inParameters.calendarId
290-
Else
291-
$urlParams+="/calendar"
292-
End if
293-
If ((Value type($inParameters.startDateTime)=Is text) && (Length(String($inParameters.startDateTime))>0)\
294-
&& (Value type($inParameters.endDateTime)=Is text) && (Length(String($inParameters.endDateTime))>0))
295-
$urlParams+="/calendarView"+This._getURLParamsFromObject($inParameters)
296-
Else
297-
$urlParams+="/events"+This._getURLParamsFromObject($inParameters)
298-
End if
299-
300-
var $prefer : Text:=""
301-
If ((Value type($inParameters.timeZone)=Is text) && (Length(String($inParameters.timeZone))>0))
302-
$prefer+="outlook.timezone="+cs.Tools.me.quoteString($inParameters.timeZone)
303-
End if
304-
If ((Value type($inParameters.bodyContentType)=Is text) && (Length(String($inParameters.bodyContentType))>0))
305-
$prefer+=((Length($prefer)>0) ? "; " : "")+"outlook.body-content-type="+cs.Tools.me.quoteString($inParameters.bodyContentType)+" "
306-
End if
307-
If (Length($prefer)>0)
308-
$headers.Prefer:=$prefer
309-
End if
310-
311-
If ((Value type($inParameters.search)=Is text) && (Length(String($inParameters.search))>0))
312-
$headers.ConsistencyLevel:="eventual"
313-
End if
314-
315-
var $URL : Text:=This._getURL()+$urlParams
316-
var $result : cs.GraphEventList:=cs.GraphEventList.new(This; $URL; $headers)
317-
318-
If (Not(OB Is defined($result; "calendarId")) && (Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
319-
$result.calendarId:=$inParameters.calendarId
320-
End if
321-
314+
var $prefer : Text:=""
315+
If ((Value type($inParameters.timeZone)=Is text) && (Length(String($inParameters.timeZone))>0))
316+
$prefer+="outlook.timezone="+cs.Tools.me.quoteString($inParameters.timeZone)
317+
End if
318+
If ((Value type($inParameters.bodyContentType)=Is text) && (Length(String($inParameters.bodyContentType))>0))
319+
$prefer+=((Length($prefer)>0) ? "; " : "")+"outlook.body-content-type="+cs.Tools.me.quoteString($inParameters.bodyContentType)+" "
320+
End if
321+
If (Length($prefer)>0)
322+
$headers.Prefer:=$prefer
323+
End if
324+
325+
If ((Value type($inParameters.search)=Is text) && (Length(String($inParameters.search))>0))
326+
$headers.ConsistencyLevel:="eventual"
327+
End if
328+
329+
var $URL : Text:=This._getURL()+$urlParams
330+
var $result : cs.GraphEventList:=cs.GraphEventList.new(This; $URL; $headers)
331+
332+
If (Not(OB Is defined($result; "calendarId")) && (Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
333+
$result.calendarId:=$inParameters.calendarId
334+
End if
335+
336+
Super._throwErrors(True)
337+
338+
return $result
339+
340+
End case
341+
322342
Super._throwErrors(True)
323-
324-
return $result
343+
344+
return This._returnStatus()

0 commit comments

Comments
 (0)