Esempio n. 1
0
        public async Task <ActionResult <UploadedScoreObjectResult> > UploadObject([FromForm] UploadingScoreItem uploadingScoreItem)
        {
            // File Signature を確認
            _logger.LogDebug("{ScoreId}, {OriginalName}", uploadingScoreItem.ScoreId, uploadingScoreItem.OriginalName);
            _logger.LogDebug("Item: {FileName}, {Name}, {Length}, {Headers}, {ContentDisposition}, {ContentType}",
                             uploadingScoreItem.Item.FileName, uploadingScoreItem.Item.Name,
                             uploadingScoreItem.Item.Length, uploadingScoreItem.Item.Headers,
                             uploadingScoreItem.Item.ContentDisposition, uploadingScoreItem.Item.ContentType);

            var auth    = this.GetAuthorizerData();
            var ownerId = auth.Sub;

            var adder = _scoreItemLogics.Adder;

            try
            {
                var response = await adder.AddAsync(ownerId, uploadingScoreItem);

                _logger.LogDebug("success : response : {Response}", response);

                return(response);
            }
            catch (NotSupportedItemFileException ex)
            {
                _logger.LogError(ex, "{Message}", ex.Message);
                return(StatusCode(ExtensionHttpStatusCodes.NotSupportedItemFile, new { message = ex.Message }));
            }
        }
Esempio n. 2
0
        public async Task <UploadedScoreObjectResult> AddAsync(Guid ownerId, UploadingScoreItem uploadingScoreItem)
        {
            var scoreId = uploadingScoreItem.ScoreId;

            var score = await GetDynamoDbScoreDataAsync(ownerId, scoreId);

            var access = score.score.Access == ScoreDatabaseConstant.ScoreAccessPublic
                ? ScoreObjectAccessControls.Public
                : ScoreObjectAccessControls.Private;

            await using var stream = uploadingScoreItem.Item.OpenReadStream();
            var data = new byte[stream.Length];
            await stream.ReadAsync(data);

            var orgName = uploadingScoreItem.Item.FileName;

            var response = await SaveObjectAsync(ownerId, scoreId, data, access);

            var thumbnail = response.Extra switch
            {
                ImagePngExtra p => new ScoreItemDatabaseItemDataImageThumbnail()
                {
                    Size    = p.Thumbnail.Size,
                    ObjName = p.Thumbnail.ObjectName,
                },
                Thumbnail t => new ScoreItemDatabaseItemDataImageThumbnail()
                {
                    Size    = t.Size,
                    ObjName = t.ObjectName,
                },
                _ => null,
            };

            var totalSize = response.Size + (thumbnail?.Size ?? 0);

            ScoreItemDatabaseItemDataBase itemData = new ScoreItemDatabaseItemDataImage()
            {
                OwnerId   = ownerId,
                ScoreId   = scoreId,
                OrgName   = orgName,
                ItemId    = response.ItemId,
                ObjName   = response.ObjectName,
                Size      = response.Size,
                Thumbnail = thumbnail,
                TotalSize = totalSize,
            };

            await CreateAsync(itemData);

            return(new UploadedScoreObjectResult()
            {
                ImageItemInfo = new ScoreImageItemInfo()
                {
                    Size = itemData.Size,
                    Thumbnail = thumbnail?.ObjName,
                    ObjectName = itemData.ObjName,
                    ItemId = itemData.ItemId,
                    OriginalName = orgName,
                    ScoreId = scoreId,
                    TotalSize = itemData.TotalSize,
                    ThumbnailSize = thumbnail?.Size ?? 0,
                },
            });
        }