/// <summary> /// Updates the upload data to db /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='subscriptionId'> /// </param> /// <param name='request'> /// </param> public static object UpdateDataToDb(this IInternalClient operations, System.Guid subscriptionId, CitizenDocumentUploadRequestModel request) { return(operations.UpdateDataToDbAsync(subscriptionId, request).GetAwaiter().GetResult()); }
/// <summary> /// Updates the upload data to db /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='subscriptionId'> /// </param> /// <param name='request'> /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <object> UpdateDataToDbAsync(this IInternalClient operations, System.Guid subscriptionId, CitizenDocumentUploadRequestModel request, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.UpdateDataToDbWithHttpMessagesAsync(subscriptionId, request, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Uploads the single citizen document. /// </summary> /// <param name="document">Original citizen document.</param> /// <param name="parameters">citizenDocumentUploadRequestModel to update to db.</param> /// <returns>The file access page details or error if isn't valid.</returns> /// <exception cref="ValidationException">Missing cpr number.</exception> /// <exception cref="SerializationException">Unable to process the service response.</exception> /// <exception cref="LogicTokenProviderException">Unable to issue an authorization token.</exception> /// <exception cref="CitizenDocumentsException">Invalid Citizen document configuration details.</exception> public async Task <CitizenDocumentUploadResponse> UploadFileAsync( Stream document, UploadFileParameters parameters) { if (document == null) { throw new ArgumentNullException(nameof(document)); } if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } var client = this.CreateClient(); var documentId = Guid.NewGuid(); var storageDocName = parameters.DocumentName.Trim().Replace(".", string.Empty) + "_" + documentId + ".pdf"; using var responseSasUri = await client.StorageAccessWithHttpMessagesAsync( subscriptionId : new Guid(this._options.SubscriptionId), documentName : storageDocName).ConfigureAwait(false); if (responseSasUri.Response.StatusCode != System.Net.HttpStatusCode.OK) { throw new UnauthorizedAccessException("You don't have permission to upload"); } var sasTokenUri = new Uri(responseSasUri.Body); var containerAddress = new Uri($"{sasTokenUri.Scheme}://{sasTokenUri.Host}/{sasTokenUri.AbsolutePath.Split('/')[1]}"); CloudBlobContainer container = new CloudBlobContainer( containerAddress, new StorageCredentials(sasTokenUri.Query)); var uploadResponse = await UploadDocumentToAzureStorage(document, storageDocName, container, parameters.BufferSize) .ConfigureAwait(false); if (uploadResponse.StatusCode != System.Net.HttpStatusCode.OK) { throw new ApplicationException("Upload Failed"); } var updateDataRequest = new CitizenDocumentUploadRequestModel { Id = documentId, SubscriptionId = parameters.SubscriptionId, DocumentUrl = $"{containerAddress}/{storageDocName}", Status = "Completed", Cpr = parameters.Cpr, DocumentName = parameters.DocumentName, DocumentType = parameters.DocumentType, RetentionPeriodInDays = parameters.RetentionPeriodInDays, CitizenDocumentConfigId = parameters.CitizenDocumentConfigId, }; using var updateResponse = await client.UpdateDataToDbWithHttpMessagesAsync( subscriptionId : new Guid(this._options.SubscriptionId), updateDataRequest).ConfigureAwait(false); switch (updateResponse.Response.StatusCode) { case System.Net.HttpStatusCode.OK: return((CitizenDocumentUploadResponse)updateResponse.Body); case System.Net.HttpStatusCode.Unauthorized: throw new CitizenDocumentsException("Unauthorized", updateResponse.Body as string); default: throw new CitizenDocumentsException( "Invalid configuration provided to access Citizen Document service", updateResponse.Body as string); } }