Ejemplo n.º 1
0
        public async Task <ActionResult <B2UploadCompleteDetails> > UploadFile()
        {
            var errors = new List <string>();

            // Check for presence of required headers
            var headers = Request.Headers;

            var contentType    = Utils.GetHeader(headers, "content-type", errors);
            var authorization  = Utils.GetHeader(headers, "authorization", errors);
            var xBzFileName    = Utils.GetHeader(headers, "x-bz-file-name", errors);
            var xBzContentSha1 = Utils.GetHeader(headers, "x-bz-content-sha1", errors);

            if (errors.Count != 0)
            {
                return(BadRequest(errors));
            }

            // Store the file

            var fileId = Guid.NewGuid().ToString();

            var fileStoreSuccess = await _fileStorageProvider.StoreFileAsync(new Dtos.File
            {
                Id       = fileId,
                Data     = Request.Body,
                Metadata = null,
            });

            if (!fileStoreSuccess)
            {
                return(BadRequest());
            }

            // Success. Emulate B2-generated values.
            return(Ok(new B2UploadCompleteDetails
            {
                FileId = fileId,
                FileName = xBzFileName,
                AccountId = Environment.GetEnvironmentVariable("B2_CLOUD_STORAGE_ACCOUNT_ID"),
                BucketId = Environment.GetEnvironmentVariable("B2_CLOUD_STORAGE_BUCKET_ID"),
                ContentLength = 123,
                ContentSha1 = xBzContentSha1,
                ContentType = contentType,
            }));
        }