Skip to content

Commit 6caf94f

Browse files
committed
Github:11728 (now handle Office365.event.attachments)
1 parent ceccecb commit 6caf94f

File tree

5 files changed

+167
-38
lines changed

5 files changed

+167
-38
lines changed

Project/Sources/Classes/GraphAttachment.4dm

Lines changed: 41 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ Class constructor($inProvider : cs.OAuth2Provider; $inParams : Object; $inObject
1313
Super($inProvider)
1414

1515
This._internals._userId:=String($inParams.userId)
16-
This._internals._messageId:=String($inParams.messageId)
16+
Case of
17+
: (Length(String($inParams.messageId))>0)
18+
This._internals._messageId:=String($inParams.messageId)
19+
: (Length(String(This._internals._eventId))>0)
20+
This._internals._eventId:=String($inParams.eventId)
21+
End case
1722
Super._loadFromObject($inObject)
1823
If (Length(String(This["@odata.type"]))=0)
1924
This["@odata.type"]:="#microsoft.graph.fileAttachment"
@@ -28,36 +33,44 @@ Function getContent() : 4D.Blob
2833

2934
If (Not(OB Is defined(This; "contentBytes")))
3035

31-
If (Length(String(This._internals._messageId))>0)
32-
33-
var $urlParams : Text
34-
35-
If (Length(String(This._internals._userId))>0)
36-
$urlParams:="users/"+This._internals._userId
37-
Else
38-
$urlParams:="me"
39-
End if
40-
$urlParams+="/messages/"+This._internals._messageId
41-
$urlParams+="/attachments/"+This.id
42-
43-
var $URL : Text:=Super._getURL()+$urlParams
44-
If (This["@odata.type"]="#microsoft.graph.itemAttachment")
45-
$URL+="/?$expand=microsoft.graph.itemattachment/item"
46-
End if
47-
48-
var $response : Object:=Super._sendRequestAndWaitResponse("GET"; $URL)
49-
If ($response#Null)
50-
If (OB Is defined($response; "contentBytes"))
51-
This.contentBytes:=$response.contentBytes
36+
var $urlParams : Text
37+
38+
Case of
39+
: (Length(String(This._internals._messageId))>0)
40+
If (Length(String(This._internals._userId))>0)
41+
$urlParams:="users/"+This._internals._userId
5242
Else
53-
If (OB Is defined($response; "item"))
54-
var $stringContent : Text
55-
BASE64 ENCODE(JSON Stringify($response.item); $stringContent)
56-
This.contentBytes:=$stringContent
57-
End if
43+
$urlParams:="me"
44+
End if
45+
$urlParams+="/messages/"+This._internals._messageId
46+
$urlParams+="/attachments/"+This.id
47+
: (Length(String(This._internals._eventId))>0)
48+
If (Length(String(This._internals._userId))>0)
49+
$urlParams:="users/"+This._internals._userId
50+
Else
51+
$urlParams:="me"
52+
End if
53+
$urlParams+="/events/"+This._internals._eventId
54+
$urlParams+="/attachments/"+This.id
55+
End case
56+
57+
var $URL : Text:=Super._getURL()+$urlParams
58+
If (This["@odata.type"]="#microsoft.graph.itemAttachment")
59+
$URL+="/?$expand=microsoft.graph.itemattachment/item"
60+
End if
61+
62+
var $response : Object:=Super._sendRequestAndWaitResponse("GET"; $URL)
63+
If ($response#Null)
64+
If (OB Is defined($response; "contentBytes"))
65+
This.contentBytes:=$response.contentBytes
66+
Else
67+
If (OB Is defined($response; "item"))
68+
var $stringContent : Text
69+
BASE64 ENCODE(JSON Stringify($response.item); $stringContent)
70+
This.contentBytes:=$stringContent
5871
End if
59-
6072
End if
73+
6174
End if
6275
End if
6376

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
Class extends _GraphAPI
2+
3+
property id : Text:=""
4+
property hasAttachments : Boolean:=False
5+
6+
Class constructor($inProvider : cs.OAuth2Provider; $inParameters : Object; $inObject : Object)
7+
8+
Super($inProvider)
9+
10+
This._internals._userId:=String($inParameters.userId)
11+
This._internals._calendarId:=String($inParameters.calendarId)
12+
This._internals._attachments:=Null
13+
Super._loadFromObject($inObject)
14+
15+
16+
// Mark: - [Public]
17+
// ----------------------------------------------------
18+
19+
20+
Function get attachments() : Collection
21+
22+
If (This.hasAttachments && (This._internals._attachments=Null))
23+
24+
This._internals._attachments:=[]
25+
/*
26+
Attachments for an event in the user's default calendar.
27+
GET /me/events/{id}/attachments
28+
GET /users/{id | userPrincipalName}/events/{id}/attachments
29+
30+
GET /me/calendar/events/{id}/attachments
31+
GET /users/{id | userPrincipalName}/calendar/events/{id}/attachments
32+
33+
Attachments for an event in a calendar belonging to the user's default calendarGroup.
34+
35+
GET /me/calendars/{id}/events/{id}/attachments
36+
GET /users/{id | userPrincipalName}/calendars/{id}/events/{id}/attachments
37+
*/
38+
var $urlParams : Text:=""
39+
40+
If (Length(String(This._internals._userId))>0)
41+
$urlParams:="users/"+This._internals._userId
42+
Else
43+
$urlParams:="me"
44+
End if
45+
If (Length(String(This._internals._calendarId))>0)
46+
$urlParams+="/calendars/"+This._internals._calendarId
47+
Else
48+
If (Length(String(This._internals._calendarId))>0)
49+
$urlParams+="/calendars/"+This._internals._calendarId
50+
Else
51+
$urlParams+="/calendar"
52+
End if
53+
End if
54+
$urlParams+="/events/"+String(This.id)+"/attachments"
55+
56+
var $URL : Text:=Super._getURL()+$urlParams
57+
var $response : Object:=Super._sendRequestAndWaitResponse("GET"; $URL)
58+
59+
If ($response#Null)
60+
var $attachments : Collection:=$response["value"]
61+
var $iter : Object
62+
For each ($iter; $attachments)
63+
var $attachment : Object:=cs.GraphAttachment.new(This._getOAuth2Provider(); {eventId: String(This.id)}; $iter)
64+
This._internals._attachments.push($attachment)
65+
End for each
66+
End if
67+
End if
68+
69+
return This._internals._attachments
Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,49 @@
11
Class extends _GraphBaseList
22

3-
property calendarId : Text
4-
5-
Class constructor($inProvider : cs.OAuth2Provider; $inURL : Text; $inHeaders : Object)
3+
Class constructor($inCalendar : cs.Office365Calendar; $inURL : Text; $inHeaders : Object)
64

7-
Super($inProvider; $inURL; $inHeaders)
5+
Super($inCalendar._getOAuth2Provider(); $inURL; $inHeaders)
86

7+
This._internals._calendar:=$inCalendar
8+
This._internals._events:=Null
9+
This._internals._update:=True
910

1011
// Mark: - [Public]
1112
// ----------------------------------------------------
1213

1314

1415
Function get events() : Collection
1516

16-
return This._internals._list
17+
If (This._internals._update)
18+
19+
var $iter : Object
20+
var $provider : cs.OAuth2Provider:=This._internals._oAuth2Provider
21+
22+
This._internals._events:=[]
23+
For each ($iter; This._internals._list)
24+
var $event : cs.GraphEvent:=cs.GraphEvent.new($provider; {userId: This._internals._calendar.userId; calendarId: This._internals._calendar.id}; $iter)
25+
This._internals._events.push($event)
26+
End for each
27+
28+
This._internals._update:=False
29+
End if
30+
31+
return This._internals._events
32+
33+
34+
// ----------------------------------------------------
35+
36+
37+
Function next() : Boolean
38+
39+
This._internals._update:=Super.next()
40+
return This._internals._update
41+
42+
43+
// ----------------------------------------------------
44+
45+
46+
Function previous() : Boolean
47+
48+
This._internals._update:=Super.previous()
49+
return This._internals._update

Project/Sources/Classes/Office365Calendar.4dm

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Class extends _GraphAPI
22

3-
property userId : Text
3+
property userId : Text:=""
4+
property id : Text:=""
45

56
Class constructor($inProvider : cs.OAuth2Provider; $inParameters : Object)
67

@@ -245,10 +246,11 @@ Function getEvent($inParameters : Object) : Object
245246
End if
246247

247248
var $URL : Text:=This._getURL()+$urlParams
248-
var $response : Variant:=Super._sendRequestAndWaitResponse("GET"; $URL; $headers)
249+
var $result : Object:=Super._cleanGraphObject(Super._sendRequestAndWaitResponse("GET"; $URL; $headers))
249250

250-
If (Value type($response)=Is object)
251-
return Super._cleanGraphObject($response)
251+
If (Value type($result)=Is object)
252+
var $options : Object:={userId: This.userId; calendarId: String($inParameters.calendarId); eventId: String($inParameters.eventId)}
253+
return cs.GraphEvent.new(This._internals._oAuth2Provider; $options; $result)
252254
End if
253255
End case
254256

@@ -284,6 +286,7 @@ Function getEvents($inParameters : Object) : Object
284286
End if
285287
If ((Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
286288
$urlParams+="/calendars/"+$inParameters.calendarId
289+
This.id:=$inParameters.calendarId
287290
Else
288291
$urlParams+="/calendar"
289292
End if
@@ -310,7 +313,7 @@ Function getEvents($inParameters : Object) : Object
310313
End if
311314

312315
var $URL : Text:=This._getURL()+$urlParams
313-
var $result : cs.GraphEventList:=cs.GraphEventList.new(This._getOAuth2Provider(); $URL; $headers)
316+
var $result : cs.GraphEventList:=cs.GraphEventList.new(This; $URL; $headers)
314317

315318
If ((Value type($result.calendarId)=Is undefined) && (Value type($inParameters.calendarId)=Is text) && (Length(String($inParameters.calendarId))>0))
316319
$result.calendarId:=$inParameters.calendarId

Project/Sources/folders.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,19 @@
3737
"classes": [
3838
"EmailAddress",
3939
"Google",
40+
"GoogleCalendar",
41+
"GoogleCalendarList",
42+
"GoogleEvent",
43+
"GoogleEventAttachment",
44+
"GoogleEventList",
4045
"GoogleMail",
4146
"GoogleMailIdList",
47+
"GoogleUser",
48+
"GoogleUserList",
4249
"GraphAttachment",
50+
"GraphCalendarList",
51+
"GraphEvent",
52+
"GraphEventList",
4353
"GraphFolderList",
4454
"GraphMessage",
4555
"GraphMessageList",
@@ -48,6 +58,7 @@
4858
"OAuth2Provider",
4959
"OAuth2Token",
5060
"Office365",
61+
"Office365Calendar",
5162
"Office365Mail",
5263
"Office365User",
5364
"Tools"

0 commit comments

Comments
 (0)