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
Commentaires envoyés
Nous apprécions vos efforts et nous allons corriger l'article