Table of Contents

Codeunit "Graph Request UTCAP"

ID 70344822
Namespace: CapVision.Core.Graph

Appels génériques à l'API Microsoft Graph, pour les besoins que les modules dédiés ("Sharepoint Storage UTCAP", "Outlook Calendar UTCAP"...) ne couvrent pas.

Remarks

Pris en charge : jeton d'application mis en cache et renouvelé sur refus 401, reprise automatique sur throttling (429/503, en respectant Retry-After), pagination (@odata.nextLink), erreurs Graph lisibles. Les URI sont relatives au point d'entrée v1.0 (ex. « /users/x@contoso.com ») ou absolues (liens renvoyés par Graph). Toute valeur externe insérée dans une URI doit passer par . Les autorisations d'API nécessaires dépendent des ressources appelées (ex. User.Read.All pour les photos de profil).

Examples

``` AL
    GraphRequest.Initialize(ClientId, ClientSecret, TenantId);
    GraphRequest.Get('/users/' + GraphRequest.EncodeSegment(Email), User);

    GraphRequest.Send('GET', '/users/' + GraphRequest.EncodeSegment(Email) + '/photo/$value', Response);
    if Response.IsSuccessStatusCode() then
        Response.Content().ReadAs(PhotoStream);
```

Properties

Name Value
Access Public

Methods

Initialize

Initialise les appels avec les identifiants d'une inscription d'application (flux client credentials).

procedure Initialize(ClientId: Text; ClientSecret: SecretText; TenantId: Text)

Parameters

Name Type Description
ClientId Text

Identifiant de l'inscription d'application.

ClientSecret SecretText

Secret de l'inscription d'application.

TenantId Text

Identifiant ou domaine du tenant.

SetDefaultRequestHeader

Ajoute un en-tête envoyé avec toutes les requêtes authentifiées (ex. « Prefer », « ConsistencyLevel »).

procedure SetDefaultRequestHeader(Name: Text; Value: Text)

Parameters

Name Type Description
Name Text
Value Text

EncodeSegment

Encode une valeur (identifiant, adresse e-mail, nom de fichier...) pour l'insérer dans une URI.

procedure EncodeSegment(Value: Text): Text

Parameters

Name Type Description
Value Text

Returns

Type Description
Text

EncodePath

Encode un chemin relatif (ex. « /Dossier/Sous dossier ») segment par segment, en conservant les « / ».

procedure EncodePath(Path: Text): Text

Parameters

Name Type Description
Path Text

Returns

Type Description
Text

Get

Effectue un GET et renvoie le corps JSON. Échoue si la ressource n'existe pas ou si Graph renvoie une erreur.

procedure Get(Uri: Text; var Payload: JsonObject)

Parameters

Name Type Description
Uri Text
Payload JsonObject

GetIfExists

Effectue un GET et renvoie le corps JSON. Échoue si Graph renvoie une erreur.

procedure GetIfExists(Uri: Text; var Payload: JsonObject): Boolean

Parameters

Name Type Description
Uri Text
Payload JsonObject

Returns

Type Description
Boolean

false si la ressource n'existe pas (HTTP 404/410).

GetList

Renvoie tous les éléments d'une collection Graph (propriété « value »), toutes pages confondues.

procedure GetList(Uri: Text; var Values: JsonArray)

Parameters

Name Type Description
Uri Text
Values JsonArray

Send

Envoie une requête authentifiée sans corps (ex. GET d'un contenu binaire, DELETE) et renvoie la réponse brute. Le statut n'est pas contrôlé : voir et .

procedure Send(Method: Text; Uri: Text; var Response: HttpResponseMessage)

Parameters

Name Type Description
Method Text
Uri Text
Response HttpResponseMessage

SendJson

Envoie une requête authentifiée avec un corps JSON (ex. POST, PATCH, lot « /$batch ») et renvoie la réponse brute. Le statut n'est pas contrôlé : voir et .

procedure SendJson(Method: Text; Uri: Text; Payload: JsonObject; var Response: HttpResponseMessage)

Parameters

Name Type Description
Method Text
Uri Text
Payload JsonObject
Response HttpResponseMessage

SendJson

Envoie une requête authentifiée avec un corps JSON et des en-têtes propres à cette requête (ex. « If-Match »), et renvoie la réponse brute. Le statut n'est pas contrôlé : voir .

procedure SendJson(Method: Text; Uri: Text; Payload: JsonObject; RequestHeaders: Dictionary of [Text, Text]; var Response: HttpResponseMessage)

Parameters

Name Type Description
Method Text
Uri Text
Payload JsonObject
RequestHeaders Dictionary of [Text, Text]
Response HttpResponseMessage

Send

Envoie une requête avec un corps quelconque (ex. binaire) et renvoie la réponse brute. Le statut n'est pas contrôlé : voir .

procedure Send(Method: Text; Uri: Text; var Body: Codeunit "Temp Blob"; ContentHeaders: Dictionary of [Text, Text]; RequestHeaders: Dictionary of [Text, Text]; Authenticate: Boolean; var Response: HttpResponseMessage)

Parameters

Name Type Description
Method Text
Uri Text
Body System.Utilities."Temp Blob"

Corps de la requête ; vide pour une requête sans contenu.

ContentHeaders Dictionary of [Text, Text]

En-têtes du contenu (ex. « Content-Type »).

RequestHeaders Dictionary of [Text, Text]

En-têtes de la requête.

Authenticate Boolean

false pour une URL pré-authentifiée renvoyée par Graph (téléchargement, session d'upload).

Response HttpResponseMessage

CheckResponse

Échoue avec le code HTTP et le message d'erreur Graph si la réponse n'est pas un succès.

procedure CheckResponse(Response: HttpResponseMessage)

Parameters

Name Type Description
Response HttpResponseMessage

IsNotFound

Indique si la réponse signale une ressource inexistante (HTTP 404) ou supprimée (HTTP 410).

procedure IsNotFound(Response: HttpResponseMessage): Boolean

Parameters

Name Type Description
Response HttpResponseMessage

Returns

Type Description
Boolean

ReadJson

Lit le corps JSON d'une réponse. Un corps vide (ex. 204 No Content) produit un objet vide.

procedure ReadJson(Response: HttpResponseMessage; var Payload: JsonObject)

Parameters

Name Type Description
Response HttpResponseMessage
Payload JsonObject

See also