Skip to content

Commit ac33e5d

Browse files
committed
GitHub:11728
1 parent 9e4ccf8 commit ac33e5d

File tree

3 files changed

+169
-52
lines changed

3 files changed

+169
-52
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Class extends _GraphBaseList
2+
3+
Class constructor($inProvider : cs.OAuth2Provider; $inURL : Text; $inHeaders : Object)
4+
5+
Super($inProvider; $inURL; $inHeaders)
6+
7+
8+
// Mark: - [Public]
9+
// ----------------------------------------------------
10+
11+
12+
Function get events() : Collection
13+
14+
return This._internals._list

Project/Sources/Classes/Office365Calendar.4dm

Lines changed: 120 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Class constructor($inProvider : cs.OAuth2Provider; $inParameters : Object)
1313

1414

1515
// Mark: - [Public]
16+
// Mark: - Calendars
1617
// ----------------------------------------------------
1718

1819

@@ -33,7 +34,7 @@ Function getCalendar($inID : Text; $inSelect : Text) : Object
3334
End if
3435

3536
If (Length(String($inSelect))>0)
36-
$urlParams+="?$select="+$inSelect
37+
$urlParams+=Super._getURLParamsFromObject({select: $inSelect})
3738
End if
3839

3940
var $URL : Text:=This._getURL()+$urlParams
@@ -54,7 +55,7 @@ Function getCalendars($inParameters : Object) : Object
5455
Super._clearErrorStack()
5556
Super._throwErrors(False)
5657

57-
var $headers : Object
58+
var $headers : Object:={}
5859
var $urlParams : Text:=""
5960
var $delimiter : Text:="?"
6061

@@ -63,43 +64,132 @@ Function getCalendars($inParameters : Object) : Object
6364
Else
6465
$urlParams:="me"
6566
End if
66-
$urlParams+="/calendars"
67+
$urlParams+="/calendars"+Super._getURLParamsFromObject($inParameters)
6768

6869
If ((Value type($inParameters.search)=Is text) && (Length(String($inParameters.search))>0))
69-
$urlParams+=($delimiter+"$search="+$inParameters.search)
70-
$delimiter:="&"
71-
$headers:={ConsistencyLevel: "eventual"}
70+
$headers.ConsistencyLevel:="eventual"
7271
End if
73-
If ((Value type($inParameters.filter)=Is text) && (Length(String($inParameters.filter))>0))
74-
$urlParams+=($delimiter+"$filter="+$inParameters.filter)
75-
$delimiter:="&"
76-
End if
77-
If (Not(Value type($inParameters.select)=Is undefined))
78-
var $select : Text
79-
Case of
80-
: (Value type($inParameters.select)=Is text)
81-
$select:=$inParameters.select
82-
: (Value type($inParameters.select)=Is collection)
83-
$select:=$inParameters.select.join(","; ck ignore null or empty)
72+
73+
var $URL : Text:=This._getURL()+$urlParams
74+
var $result : cs.GraphCalendarList:=cs.GraphCalendarList.new(This._getOAuth2Provider(); $URL; $headers)
75+
76+
Super._throwErrors(True)
77+
78+
return $result
79+
80+
81+
// Mark: - Events
82+
// ----------------------------------------------------
83+
84+
85+
Function getEvent($inParameters : Object) : Object
86+
87+
/*
88+
GET /me/events/{id}
89+
GET /me/calendar/events/{id}
90+
GET /me/calendars/{id}/events/{id}
91+
92+
GET /users/{id | userPrincipalName}/events/{id}
93+
GET /users/{id | userPrincipalName}/calendar/events/{id}
94+
GET /users/{id | userPrincipalName}/calendars/{id}/events/{id}
95+
*/
96+
97+
Super._clearErrorStack()
98+
99+
Case of
100+
: (Type($inParameters.eventId)#Is text)
101+
Super._throwError(10; {which: "\"eventId\""; function: "office365.calendar.getEvent"})
102+
103+
: (Length(String($inParameters.eventId))=0)
104+
Super._throwError(9; {which: "\"eventId\""; function: "office365.calendar.getEvent"})
105+
106+
Else
107+
var $headers : Object:={}
108+
var $urlParams : Text:=""
109+
110+
If (Length(String(This.userId))>0)
111+
$urlParams:="users/"+This.userId
112+
Else
113+
$urlParams:="me"
114+
End if
115+
116+
If ((Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
117+
$urlParams+="/calendars/"+cs.Tools.me.urlEncode($inParameters.calendarId)
84118
Else
85-
$select:=String($inParameters.select)
86-
End case
87-
If (Length($select)>0)
88-
$urlParams+=($delimiter+"$select="+$select)
89-
$delimiter:="&"
90-
End if
119+
$urlParams+="/calendar"
120+
End if
121+
$urlParams+="/events/"+cs.Tools.me.urlEncode($inParameters.eventId)
122+
123+
$urlParams+=Super._getURLParamsFromObject($inParameters)
124+
125+
var $prefer : Text:=""
126+
If (Length(String($inParameters.timeZone))>0)
127+
$prefer+="outlook.timezone="+$inParameters.timeZone+" "
128+
End if
129+
If (Length(String($inParameters.bodyContentType))>0)
130+
$prefer+="outlook.body-content-type="+$inParameters.bodyContentType+" "
131+
End if
132+
If (Length($prefer)>0)
133+
$headers.Prefer:=$prefer
134+
End if
135+
136+
var $URL : Text:=This._getURL()+$urlParams
137+
var $response : Variant:=Super._sendRequestAndWaitResponse("GET"; $URL; $headers)
138+
139+
If (Value type($response)=Is object)
140+
return Super._cleanGraphObject($response)
141+
End if
142+
End case
143+
144+
return Null
145+
146+
147+
Function getEvents($inParameters : Object) : Object
148+
149+
Super._clearErrorStack()
150+
Super._throwErrors(False)
151+
152+
/*
153+
A user's or group's default calendar.
154+
155+
GET /me/calendar/events
156+
GET /users/{id | userPrincipalName}/calendar/events
157+
158+
A user's calendar in the default calendarGroup.
159+
160+
GET /me/calendars/{id}/events
161+
GET /users/{id | userPrincipalName}/calendars/{id}/events
162+
*/
163+
var $urlParams : Text:=""
164+
If (Length(String(This.userId))>0)
165+
$urlParams+="users/"+This.userId
166+
Else
167+
$urlParams+="me"
91168
End if
92-
If (Not(Value type($inParameters.top)=Is undefined))
93-
$urlParams+=($delimiter+"$top="+Choose(Value type($inParameters.top)=Is text; $inParameters.top; String($inParameters.top)))
94-
$delimiter:="&"
169+
If (Length(String($inParameters.calendarId))>0)
170+
$urlParams+="/calendars/"+$inParameters.calendarId
171+
Else
172+
$urlParams+="/calendar"
173+
End if
174+
$urlParams+="/events"+Super._getURLParamsFromObject($inParameters)
175+
176+
var $prefer : Text:=""
177+
If (Length(String($inParameters.timeZone))>0)
178+
$prefer+="outlook.timezone="+$inParameters.timeZone
179+
End if
180+
If (Length(String($inParameters.bodyContentType))>0)
181+
$prefer+=((Length($prefer)>0) ? "; " : "")+"outlook.body-content-type="+$inParameters.bodyContentType+" "
95182
End if
96-
If ((Value type($inParameters.orderBy)=Is text) && (Length(String($inParameters.orderBy))>0))
97-
$urlParams+=($delimiter+"$orderBy="+$inParameters.orderBy)
98-
$delimiter:="&"
183+
If (Length($prefer)>0)
184+
$headers.Prefer:=$prefer
185+
End if
186+
187+
If ((Value type($inParameters.search)=Is text) && (Length(String($inParameters.search))>0))
188+
$headers.ConsistencyLevel:="eventual"
99189
End if
100190

101191
var $URL : Text:=This._getURL()+$urlParams
102-
var $result : cs.GraphCalendarList:=cs.GraphCalendarList.new(This._getOAuth2Provider(); $URL; $headers)
192+
var $result : cs.GraphEventList:=cs.GraphEventList.new(This._getOAuth2Provider(); $URL; $headers)
103193

104194
Super._throwErrors(True)
105195

Project/Sources/Classes/_GraphAPI.4dm

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -91,34 +91,47 @@ Function _getURLParamsFromObject($inParameters : Object; $inCount : Boolean) : T
9191

9292
var $urlParams : Text:=""
9393
var $delimiter : Text:="?"
94+
95+
If ((Value type($inParameters.search)=Is text) && (Length(String($inParameters.search))>0))
96+
$urlParams+=($delimiter+"$search="+$inParameters.search)
97+
$delimiter:="&"
98+
End if
99+
If ((Value type($inParameters.filter)=Is text) && (Length(String($inParameters.filter))>0))
100+
$urlParams+=($delimiter+"$filter="+$inParameters.filter)
101+
$delimiter:="&"
102+
End if
103+
If (Not(Value type($inParameters.select)=Is undefined))
104+
var $select : Text
105+
Case of
106+
: (Value type($inParameters.select)=Is text)
107+
$select:=$inParameters.select
108+
: (Value type($inParameters.select)=Is collection)
109+
$select:=$inParameters.select.join(","; ck ignore null or empty)
110+
Else
111+
$select:=String($inParameters.select)
112+
End case
113+
If (Length($select)>0)
114+
$urlParams+=($delimiter+"$select="+$select)
115+
$delimiter:="&"
116+
End if
117+
End if
118+
If (Not(Value type($inParameters.top)=Is undefined))
119+
$urlParams+=($delimiter+"$top="+Choose(Value type($inParameters.top)=Is text; $inParameters.top; String($inParameters.top)))
120+
$delimiter:="&"
121+
End if
122+
If ((Value type($inParameters.orderBy)=Is text) && (Length(String($inParameters.orderBy))>0))
123+
$urlParams+=($delimiter+"$orderBy="+$inParameters.orderBy)
124+
$delimiter:="&"
125+
End if
126+
127+
// Specific to .getFolder / .getFolderList
94128
If (Bool($inParameters.includeHiddenFolders))
95129
$urlParams+="/"+$delimiter+"includeHiddenFolders=true"
96130
$delimiter:="&"
97131
End if
98-
If (Length(String($inParameters.search))>0)
99-
$urlParams+=$delimiter+"$search="+$inParameters.search
100-
$delimiter:="&"
101-
End if
102-
If (Length(String($inParameters.filter))>0)
103-
$urlParams+=$delimiter+"$filter="+$inParameters.filter
104-
$delimiter:="&"
105-
End if
106-
If (Length(String($inParameters.select))>0)
107-
$urlParams+=$delimiter+"$select="+$inParameters.select
108-
$delimiter:="&"
109-
End if
110-
If (Not(Value type($inParameters.top)=Is undefined))
111-
$urlParams+=$delimiter+"$top="+Choose(Value type($inParameters.top)=Is text; \
112-
$inParameters.top; String($inParameters.top))
113-
$delimiter:="&"
114-
End if
115-
If (Length(String($inParameters.orderBy))>0)
116-
$urlParams+=$delimiter+"$orderBy="+$inParameters.orderBy
117-
$delimiter:="&"
118-
End if
119132
If (Bool($inCount))
120133
$urlParams+=$delimiter+"$count=true"
121134
$delimiter:="&"
122135
End if
123-
136+
124137
return $urlParams

0 commit comments

Comments
 (0)