Skip to main content

API Rest - Upload client example

work in progress, la documentazione di seguito è parziale e non ancora completa

Di seguito verranno riportati codici di esempio utili per creare un client che interagisca correttamente con i server.

Upload API  - V4 - C#

using System.Net.Http;

using (var client = new HttpClient())
{

    String destinationPostUri = this.Configuration.ApiClient.Configuration.BasePath + "/v4/input-package";
    client.Timeout = new TimeSpan(0, 10, 0);
    client.MaxResponseContentBufferSize = 320*1024*1024;

    client.DefaultRequestHeaders.Add("cache-control", "no-cache");
    client.DefaultRequestHeaders.Add("accept", "application/json");
    client.DefaultRequestHeaders.Add("Connection", "keep-alive");
    client.DefaultRequestHeaders.Add("User-Agent", userAgent);
    client.DefaultRequestHeaders.Add("X-App-Name", xAppName);
    client.DefaultRequestHeaders.Add("X-App-Version", xAppVersion);
    client.DefaultRequestHeaders.Add("X-Request-ID", xRequestID); // header parameter
    client.DefaultRequestHeaders.Add("X-Correlation-ID", xCorrelationID); // header parameter
    client.DefaultRequestHeaders.Add("X-User-ID", xUserID); // header parameter
    client.DefaultRequestHeaders.Add("X-Item-ID", xItemID); // header parameter
    client.DefaultRequestHeaders.Add("X-Manager-ID", xManagerID); // header parameter
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + this.Configuration.AccessToken);
    client.DefaultRequestHeaders.Add("Accept", "*/*");

    logManager.LogInfo($"destinationPostUri: {destinationPostUri} fileMetadata: {fileMetadata.ToJson()} {Environment.NewLine}  details: {details.ToJson()} submitter: {submitter.ToJson()} holder: {holder.ToJson()} ");

    // we need to send a request with multipart/form-data
    var multiForm = new MultipartFormDataContent("----MyBoundary");

    // add API method parameters
    multiForm.Add(new StringContent(fileMetadata.ToJson(), Encoding.UTF8, "application/json"), "fileMetadata");
    multiForm.Add(new StringContent(details.ToJson(), Encoding.UTF8, "application/json"), "details");
    multiForm.Add(new StringContent(holder.ToJson(), Encoding.UTF8, "application/json"), "holder");
    multiForm.Add(new StringContent(submitter.ToJson(), Encoding.UTF8, "application/json"), "submitter");
    multiForm.Add(new StreamContent(new MemoryStream(fileContent)), "file", fileMetadata.Name);

    var response = await client.PostAsync(destinationPostUri, multiForm);

    if (response.StatusCode != System.Net.HttpStatusCode.Created)
    {
        throw EvaluateAndThrowException(response, fileMetadata.Name, fileMetadata.Hash256, submitter.Username, xCorrelationID);
    }
    else
    {
        String result = response.Content.ReadAsStringAsync().Result;
        return new ApiResponse<UploadResponse>((int)response.StatusCode,
                response.Headers.ToDictionary(x => x.Key, x => string.Join(",", x.Value)),
                (UploadResponse)JsonConvert.DeserializeObject(result, typeof(UploadResponse), this.Configuration.ApiClient.serializerSettings));
    }
}