public async Task <IActionResult> PutFolder(int id, Folder folder) { if (id != folder.FolderId) { return(BadRequest()); } _context.Entry(folder).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!FolderExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult <Asset> > PostAsset([FromQuery] int folderId, IFormFile file) { var storageConnectionString = _configuration["ConnectionStrings:AzureStorageConnectionString"]; var visionKey = _configuration["VISION_KEY"]; var visionEndpoint = _configuration["VISION_ENDPOINT"]; string originalFileName = file.FileName; string ext = Path.GetExtension(originalFileName); string fileName = "asset_" + Guid.NewGuid().ToString() + ext; var storage = new StorageClient(storageConnectionString); var visionWorker = new VisionWorker(visionKey, visionEndpoint); using var stream = file.OpenReadStream(); // store the file in azure blob storage var blobClient = await storage.StoreFile("assets", fileName, stream, file.ContentType); // generate metadata and thumbnail await visionWorker.Run(blobClient.Uri.ToString()); // store metadata await storage.StoreMetadata(blobClient, visionWorker.Metadata); // store thumbnail var thumbnailBlobClient = await storage.StoreFile("thumbs", fileName, visionWorker.ThumbnailStream, "image/png"); // create the new Asset Asset asset = new Asset { FileName = fileName, DisplayName = visionWorker.Description, FolderId = folderId, PreviewUrl = thumbnailBlobClient.Uri.ToString() }; var originalVariant = new AssetVariant { AssetId = asset.AssetId, Url = blobClient.Uri.ToString(), VariantTypeId = 1 }; var thumbnailVariant = new AssetVariant { AssetId = asset.AssetId, Url = thumbnailBlobClient.Uri.ToString(), VariantTypeId = 2 }; asset.AssetVariants.Add(originalVariant); asset.AssetVariants.Add(thumbnailVariant); _context.Asset.Add(asset); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (AssetExists(asset.AssetId)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetAsset", new { id = asset.AssetId }, asset)); }