From 2040c816dda1ee969434f09f75c5ef6f702a0078 Mon Sep 17 00:00:00 2001 From: Yannick Trinh Date: Tue, 2 Jul 2024 18:22:57 +0200 Subject: [PATCH] GoogleMail.labels (getLabelList function now accepts an optional parameter.ids param) Jobs:GitHub:6889 --- Project/Sources/Classes/GoogleMail.4dm | 46 +++++++++++++++++-- .../Sources/Classes/_GoogleBatchRequest.4dm | 6 ++- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/Project/Sources/Classes/GoogleMail.4dm b/Project/Sources/Classes/GoogleMail.4dm index 3f2e5dc..445b597 100644 --- a/Project/Sources/Classes/GoogleMail.4dm +++ b/Project/Sources/Classes/GoogleMail.4dm @@ -371,14 +371,54 @@ Function update($inMailIds : Collection; $inParameters : Object) : Object // ---------------------------------------------------- -Function getLabelList() : Object +Function getLabelList($inParameters : Object) : Object Super._clearErrorStack() var $URL : Text:=Super._getURL() var $userId : Text:=(Length(String(This.userId))>0) ? This.userId : "me" - $URL+="users/"+$userId+"/labels" - var $response : Object:=Super._sendRequestAndWaitResponse("GET"; $URL) + var $response : Object:=Null + var $labelIds : Collection:=(Value type($inParameters.ids)=Is collection) ? $inParameters.ids : [] + + If ($labelIds.length=0) + + $URL+="users/"+$userId+"/labels" + $response:=Super._sendRequestAndWaitResponse("GET"; $URL) + + Else + + If (Value type($labelIds[0])=Is object) + $labelIds:=$labelIds.extract("id") + End if + + var $i : Integer:=1 + var $batchRequestes : Collection:=[] + var $labelId : Text + + For each ($labelId; $labelIds) + var $item : Text:="" + $i+=1 + var $urlParams : Text:="users/"+$userId+"/labels/"+$labelId + $batchRequestes.push({request: {verb: "GET"; URL: $URL+$urlParams; id: $item}}) + End for each + + var $batchParams : Object:={batchRequestes: $batchRequestes; format: "JSON"} + var $batchRequest : cs._GoogleBatchRequest:=cs._GoogleBatchRequest.new(This._getOAuth2Provider(); $batchParams) + var $result:=$batchRequest.sendRequestAndWaitResponse() + + If (($result=Null) || ($batchRequest._getLastError()#Null)) + var $stack : Collection:=$batchRequest._getErrorStack().reverse() + var $error : Object + + For each ($error; $stack) + This._getErrorStack().push($error) + throw($error) + End for each + End if + + $response:={labels: $result} + + End if return This._returnStatus($response) diff --git a/Project/Sources/Classes/_GoogleBatchRequest.4dm b/Project/Sources/Classes/_GoogleBatchRequest.4dm index 403cbc0..32cd1a2 100644 --- a/Project/Sources/Classes/_GoogleBatchRequest.4dm +++ b/Project/Sources/Classes/_GoogleBatchRequest.4dm @@ -111,7 +111,11 @@ Function sendRequestAndWaitResponse() : Collection var $result : Variant:=Null If ($subPart.contentType="application/json") - $result:=This._extractRawMessage(Try(JSON Parse($subPart.content)); This._format; This._mailType) + If (This._format="JSON") + $result:=Try(JSON Parse($subPart.content)) + Else + $result:=This._extractRawMessage(Try(JSON Parse($subPart.content)); This._format; This._mailType) + End if Else $result:=4D.Blob.new($subPart.content) End if