Position Green API : Téléchargement de fichiers

Modifié le  Lun, 24 Nov. à 12:44 H

Insertion de données dans Position Green


Pour importer des fichiers dans Position Green, vous pouvez envoyer un fichier via HTTP POST à l'adresse https://apiurl/imports.


Vous devez également fournir des informations d'identification valides sous la forme d'un jeton d'accès.


La requête doit avoir un type de contenu multipart/form-data et le fichier envoyé en tant que variable file. Ceci, associé à un type de fichier (chaîne), identifie le type de fichier importé. Si vous avez plusieurs importations différentes, cela permet d'identifier celle pour laquelle le processus doit être lancé. Pour plus de détails sur son utilisation, consultez les exemples dans le chapitre « Références » à la fin du document.


Remarque concernant les valeurs fileType


fileType est une valeur de type chaîne qui doit correspondre à une clé de configuration d'importation existante dans Position Green.


Ces valeurs de chaîne sont fournies par Position Green sur demande. 


Si des configurations d'importation supplémentaires sont ajoutées à la plateforme où le téléchargement API est souhaité, la valeur fileType disponible doit à nouveau être demandée.


Exemple 1 - Importer un fichier vers l'API Position Green en utilisant uniquement HTTP


namespace TestClient ;
public class Program
{
    private static string apiUrl = "https://apiurl" ; //Fourni par Position Green sur demande
    private static string loginUrl = "https://oidcurl" ; //Fourni par Position Green sur demande
    public static async Task Main()
    {
        Console.Title = "Console Client Credentials Flow" ;
        var token = await RequestToken("clientid", "clientsecret"); //Fourni par Position Green sur demande
        var fileType = "file type"; //Fourni par Position Green sur demande
        await UploadFile(token, "data.xml", fileType);
    }
    private static async Task<string> RequestToken(string clientId, string clientSecret)
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Accept", "application/json");
        client.BaseAddress = new Uri(loginUrl);
        var grant_type = "client_credentials";
        var data = new Dictionary<string, string>
        {
            { "client_id", clientId },
            { "client_secret", clientSecret },
            { "grant_type", grant_type },
        };
        var postTask = client.PostAsync("/connect/token", new FormUrlEncodedContent(data));
        postTask.Wait();
        var response = postTask.Result;
        var token = await response.Content.ReadFromJsonAsync<Token>();
        return token.access_token;
    }
    static async Task UploadFile(string token, string file, string fileType)
    {
        var handler = new HttpClientHandler()
        {
            AllowAutoRedirect = false
        };
        var client = new HttpClient(handler)
        {
            BaseAddress = new Uri(apiUrl)
        };
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
        var form = new MultipartFormDataContent();
        var fileData = File.ReadAllBytes(file);
        var byteArrayContent = new ByteArrayContent(fileData);
        byteArrayContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
        {
            FileName = file,
            Name = "file"
        };
        byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");
        form.Add(byteArrayContent, "file");
        form.Add(new StringContent(fileType), "fileType");
        var response = await client.PostAsync("/imports", form);
        if (response.StatusCode != HttpStatusCode.OK)
        {
            throw new Exception(await response.Content.ReadAsStringAsync());
        }
        return;
    }
}
public class Token
{
    public string access_token { get; set; }
}


Exemple 2 - Importer un fichier dans Position Green API à l'aide de la bibliothèque pour gérer OpenID Connect


namespace TestClient
{
   class ProgramIdentityModel
   {
       public static async Task Main()
       {
           var loginUrl = "https://oidcurl"; //Fourni par Position Green sur demande
           var clientId = "clientid"; //Fourni par Position Green sur demande
           var clientSecret = "testclient"; //Fourni par Position Green sur demande
           var response = await RequestTokenAsync(loginUrl, clientId, clientSecret);
           var apiUrl = "https://apiurl"; //Fourni par Position Green sur demande
           var fileToUpload = "data.xml";
           var fileType = "file type"; //Fourni par Position Green sur demande
           var redirectUrl = await UploadFile(response.AccessToken, fileToUpload, apiUrl, fileType);
       }
       static async Task<TokenResponse> RequestTokenAsync(string loginUrl, string clientId, string clientSecret)
       {
           var disco = await DiscoveryClient.GetAsync(loginUrl);
           if (disco.IsError) throw new Exception(disco.Error);
           var client = new TokenClient(
               disco.TokenEndpoint,
               clientId,
               clientSecret);
           return await client.RequestClientCredentialsAsync();
       }
       static async Task<Uri> UploadFile(string token, string file, string apiUrl, string fileType)
       {
           var handler = new HttpClientHandler()
           {
               AllowAutoRedirect = false
           };
           var client = new HttpClient(handler)
           {
               BaseAddress = new Uri(apiUrl),
           };
           client.SetBearerToken(token);
           var form = new MultipartFormDataContent();
           var fileData = await File.ReadAllBytesAsync(file);
           var byteArrayContent = new ByteArrayContent(fileData);
           byteArrayContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
           {
               FileName = file,
               Name = "file"
           };
           byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");
           form.Add(byteArrayContent, "file");
           form.Add(new StringContent(fileType), "fileType");
           var response = await client.PostAsync("/imports", form);
           if (response.StatusCode != HttpStatusCode.OK)
           {
               throw new Exception(await response.Content.ReadAsStringAsync());
           }
           return response.Headers.Location;
       }
   }
}


Importer JSON


La configuration d'importation peut être transmise via le point de terminaison /imports/json si la configuration est au format JSON. Dans ce cas, la configuration JSON doit être envoyée sous forme de chaîne dans le paramètre content. Voir les détails du point final ci-dessous :


POST /imports/json

Explorez la section Importation sur notre page Swagger.


Importer une chaîne base64

La configuration d'importation peut être transmise via le point de terminaison /imports/base64 si la configuration est au format de chaîne Base64. Dans ce cas, la configuration Base64 doit être envoyée sous forme de chaîne dans le paramètre content. Voir les détails du point final ci-dessous :


POST /imports/base64


Explorez la section Importation sur notre page Swagger.

Cet article a-t-il été utile ?

C'est super !

Merci pour votre commentaire

Désolé ! Nous n'avons pas pu vous être utile

Merci pour votre commentaire

Dites-nous comment nous pouvons améliorer cet article !

Sélectionner au moins l'une des raisons
La vérification CAPTCHA est requise.

Commentaires envoyés

Nous apprécions vos efforts et nous allons corriger l'article