Пример #1
0
        public async Task <HttpFragileOperationResult <StoreFileResult> > StoreFileAsync(byte[] bytes, string fileName)
        {
            var fileVaultUrl = _configurationService.ConfigurationSettings.FncFileVaultUrl + "/api/file/upload";

            var uploadParameters = new UploadFileParametersDto()
            {
                ExpirationInDays = 10,
                Filename         = fileName,
                Mode             = FileVaultFile.FileVaultFileMode.ReadOnly,
                Attributes       = new FileAttributeSet()
            };

            var form = new MultipartFormDataContent
            {
                { new ByteArrayContent(bytes), "file", fileName },
                { new StringContent(JsonConvert.SerializeObject(uploadParameters)), "uploadParametersJson" }
            };

            var jwtResult = await _jwtUtility.GenerateJwtAsync().ConfigureAwait(false);

            if (jwtResult.Status != Status.Success)
            {
                return(jwtResult.ToHttpFragileOperationResult <StoreFileResult>($"{jwtResult.Status} while storing file with filename {fileName}."));
            }

            var result = await _httpUtility.HttpPostContentAsync <string>(fileVaultUrl, form, new[] { new KeyValuePair <string, string>("Authorization", $"Bearer {jwtResult.Result.Jwt}"), }).ConfigureAwait(false);

            if (result.Status != Status.Success)
            {
                return(result.ToHttpFragileOperationResult <StoreFileResult>($"{result.Status} while storing file with filename {fileName}."));
            }

            var identifier = result.Result.Replace("\"", "");

            return(HttpFragileOperationResult <StoreFileResult> .CreateSuccessfulResult(new StoreFileResult(identifier), result.StatusCode, result.ResponseStringContent));
        }