From 7a0a7512b683a017568cdf36bc8f452c5d1f8c35 Mon Sep 17 00:00:00 2001 From: Yannick Trinh Date: Thu, 3 Oct 2024 18:28:21 +0200 Subject: [PATCH] GitHub:9479 ([Google] User information: fixes) --- Project/Sources/Classes/GoogleUser.4dm | 81 +++++++++++---------- Project/Sources/Classes/GoogleUserList.4dm | 5 +- Project/Sources/Classes/_GoogleBaseList.4dm | 5 +- 3 files changed, 49 insertions(+), 42 deletions(-) diff --git a/Project/Sources/Classes/GoogleUser.4dm b/Project/Sources/Classes/GoogleUser.4dm index 918497b..9d3ee78 100644 --- a/Project/Sources/Classes/GoogleUser.4dm +++ b/Project/Sources/Classes/GoogleUser.4dm @@ -5,8 +5,8 @@ Class constructor($inProvider : cs.OAuth2Provider) Super($inProvider; "https://people.googleapis.com/v1/") - This._internals.defaultPersonFields:="names,emailAddresses" - This._internals.defaultSources:="DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE" + This._internals.defaultPersonFields:=["names"; "emailAddresses"] + This._internals.defaultSources:=["DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE"] // ---------------------------------------------------- @@ -19,23 +19,24 @@ Function _get($inResourceName : Text; $inPersonFields : Variant) : Object var $URL : Text:=Super._getURL() var $resourceName : Text:=Length(String($inResourceName))>0 ? $inResourceName : "" - var $personFields : Text:=This._internals.defaultPersonFields + var $personFields : Text If (Position("people/"; $resourceName)=0) $resourceName:="people/"+$resourceName End if Case of - : (Type($inPersonFields)=Is collection) - $personFields:=$inPersonFields.join(",") - : (Length(String($inPersonFields))>0) + : ((Type($inPersonFields)=Is collection) && ($inPersonFields.length>0)) + $personFields:=$inPersonFields.join(","; ck ignore null or empty) + : ((Value type($inPersonFields)=Is text) && (Length(String($inPersonFields))>0)) $personFields:=$inPersonFields + Else + $personFields:=This._internals.defaultPersonFields.join(","; ck ignore null or empty) End case $URL+=$resourceName+"?personFields="+$personFields - var $headers : Object:={} - $headers["Content-Type"]:="application/json" + var $headers : Object:={Accept: "application/json"} var $response : Object:=Super._sendRequestAndWaitResponse("GET"; $URL; $headers) return $response @@ -46,44 +47,51 @@ Function _get($inResourceName : Text; $inPersonFields : Variant) : Object Function _getURLParamsFromObject($inParameters : Object) : Text - var $urlParams : Text:="" + var $urlParams; $personFields; $sources : Text var $delimiter : Text:="?" - var $personFields : Text:=This._internals.defaultPersonFields - var $sources : Text:=This._internals.defaultSources - - If (Not(Value type($inParameters.select)=Is undefined)) - Case of - : (Type($inParameters.select)=Is collection) - $personFields:=$inParameters.select.join(",") - : (Length(String($inParameters.select))>0) - $personFields:=$inParameters.select - End case - End if + + Case of + : (OB Is defined($inParameters; "select") && (Type($inParameters.select)=Is collection) && ($inParameters.select.length>0)) + $personFields:=$inParameters.select.join(","; ck ignore null or empty) + : (OB Is defined($inParameters; "select") && (Value type($inParameters.sources)=Is text) && (Length(String($inParameters.select))>0)) + $personFields:=$inParameters.select + Else + $personFields:=This._internals.defaultPersonFields.join(","; ck ignore null or empty) + End case $urlParams+=$delimiter+"readMask="+$personFields $delimiter:="&" - If (Length(String($inParameters.sources))>0) - $sources:=$inParameters.sources - End if + Case of + : (OB Is defined($inParameters; "sources") && (Value type($inParameters.sources)=Is collection) && ($inParameters.sources>0)) + $sources:=This._internals.defaultSources.join("&sources="; ck ignore null or empty) + : (OB Is defined($inParameters; "sources") && (Value type($inParameters.sources)=Is text) && (Length(String($inParameters.sources))>0)) + $sources:=$inParameters.sources + Else + $sources:=This._internals.defaultSources.join("&sources="; ck ignore null or empty) + End case $urlParams+=($delimiter+"sources="+$sources) - If (Length(String($inParameters.mergedSources))>0) - $urlParams+=($delimiter+"mergeSources="+$sources) - End if - If (Num($inParameters.top)>0) + Case of + : (OB Is defined($inParameters; "mergedSources") && (Value type($inParameters.mergedSources)=Is collection) && ($inParameters.mergedSources>0)) + $urlParams+=($delimiter+"mergeSources="+This._internals.defaultSources.join("&mergeSources="; ck ignore null or empty)) + : (OB Is defined($inParameters; "mergedSources") && (Value type($inParameters.mergedSources)=Is text) && (Length(String($inParameters.mergedSources))>0)) + $urlParams+=($delimiter+"mergeSources="+$inParameters.mergedSources) + End case + + If (OB Is defined($inParameters; "top") && (Num($inParameters.top)>0)) $urlParams+=($delimiter+"pageSize="+String($inParameters.top)) End if - If (Bool($inParameters.requestSyncToken)) - $urlParams+=($delimiter+"requestSyncToken="+($inParameters.requestSyncToken ? "true" : "false")) + If (OB Is defined($inParameters; "requestSyncToken") && (Value type($inParameters.requestSyncToken)=Is boolean)) + $urlParams+=($delimiter+"requestSyncToken="+(Bool($inParameters.requestSyncToken) ? "true" : "false")) End if - If (Length(String($inParameters.pageToken))>0) - $urlParams+=($delimiter+"pageToken="+$inParameters.pageToken) + If (OB Is defined($inParameters; "pageToken") && (Value type($inParameters.pageToken)=Is text) && (Length(String($inParameters.pageToken))>0)) + $urlParams+=($delimiter+"pageToken="+String($inParameters.pageToken)) End if - If (Length(String($inParameters.syncToken))>0) - $urlParams+=($delimiter+"syncToken="+$inParameters.syncToken) + If (OB Is defined($inParameters; "syncToken") && (Value type($inParameters.syncToken)=Is text) && (Length(String($inParameters.syncToken))>0)) + $urlParams+=($delimiter+"syncToken="+String($inParameters.syncToken)) End if return $urlParams @@ -114,8 +122,7 @@ Function list($inParameters : Object) : Object Super._clearErrorStack() - var $parameters : Object:=($inParameters#Null) ? $inParameters : {} - var $URL : Text:=Super._getURL()+"people:listDirectoryPeople" - var $urlParams : Text:=This._getURLParamsFromObject($parameters) + var $URL : Text:=Super._getURL()+"people:listDirectoryPeople"+This._getURLParamsFromObject(inParametersparameters) + var $headers : Object:={Accept: "application/json"} - return cs.GoogleUserList.new(This._getOAuth2Provider(); $URL+$urlParams) + return cs.GoogleUserList.new(This._getOAuth2Provider(); $URL; $headers) diff --git a/Project/Sources/Classes/GoogleUserList.4dm b/Project/Sources/Classes/GoogleUserList.4dm index 1e87cf2..2a2751b 100644 --- a/Project/Sources/Classes/GoogleUserList.4dm +++ b/Project/Sources/Classes/GoogleUserList.4dm @@ -1,9 +1,8 @@ Class extends _GoogleBaseList -Class constructor($inProvider : cs.OAuth2Provider; $inURL : Text) +Class constructor($inProvider : cs.OAuth2Provider; $inURL : Text; $inHeaders : Object) - Super($inProvider; $inURL; "users") - This._internals._URL:=$inURL + Super($inProvider; $inURL; "people"; $inHeaders) // Mark: - [Public] diff --git a/Project/Sources/Classes/_GoogleBaseList.4dm b/Project/Sources/Classes/_GoogleBaseList.4dm index d61311f..b19445b 100644 --- a/Project/Sources/Classes/_GoogleBaseList.4dm +++ b/Project/Sources/Classes/_GoogleBaseList.4dm @@ -6,11 +6,12 @@ property statusText : Text property success : Boolean property errors : Collection -Class constructor($inProvider : cs:C1710.OAuth2Provider; $inURL : Text; $inName : Text) +Class constructor($inProvider : cs:C1710.OAuth2Provider; $inURL : Text; $inName : Text; $inHeaders : Object) Super:C1705($inProvider) This:C1470._internals._URL:=$inURL + This:C1470._internals._headers:=$inHeaders This:C1470._internals._attribute:=$inName This:C1470._internals._nextPageToken:="" This:C1470._internals._history:=[] @@ -35,7 +36,7 @@ Function _getList($inPageToken : Text) : Boolean $URL+=$sep+"pageToken="+$inPageToken End if - var $response : Object:=Super:C1706._sendRequestAndWaitResponse("GET"; $URL) + var $response : Object:=Super:C1706._sendRequestAndWaitResponse("GET"; $URL; This:C1470._internals._headers) This:C1470.isLastPage:=False:C215 This:C1470.statusText:=Super:C1706._getStatusLine()