コード例 #1
0
 public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
 {
     return(new Response()
     {
         DigitalAsset = DigitalAssetApiModel.FromDigitalAsset(await _context
                                                              .DigitalAssets
                                                              .FindAsync(request.DigitalAssetId))
     });
 }
コード例 #2
0
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var digitalAssets = await _context.DigitalAssets.ToListAsync();

                return(new Response()
                {
                    DigitalAssets = digitalAssets.Select(x => DigitalAssetApiModel.FromDigitalAsset(x)).ToList()
                });
            }
コード例 #3
0
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var digitalAssets = new HashSet <DigitalAssetApiModel>();

                if (!MultipartRequestHelper.IsMultipartContentType(_httpContext.Request.ContentType))
                {
                    throw new Exception($"Expected a multipart request, but got {_httpContext.Request.ContentType}");
                }

                var boundary = MultipartRequestHelper.GetBoundary(
                    MediaTypeHeaderValue.Parse(_httpContext.Request.ContentType),
                    _defaultFormOptions.MultipartBoundaryLengthLimit);
                var reader = new MultipartReader(boundary, _httpContext.Request.Body);

                var section = await reader.ReadNextSectionAsync();

                while (section != null)
                {
                    ContentDispositionHeaderValue contentDisposition;
                    var hasContentDispositionHeader = ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out contentDisposition);

                    if (hasContentDispositionHeader)
                    {
                        if (MultipartRequestHelper.HasFileContentDisposition(contentDisposition))
                        {
                            using (var targetStream = new MemoryStream())
                            {
                                await section.Body.CopyToAsync(targetStream);

                                var bytes  = StreamHelper.ReadToEnd(targetStream);
                                var tenant = await _context.Tenants.FindAsync(new Guid(_httpContext.Request.GetHeaderValue("Tenant")));

                                var digitalAsset = new DigitalAsset();
                                digitalAsset.Tenant      = tenant;
                                digitalAsset.FileName    = $"{contentDisposition.FileName}".Trim(new char[] { '"' }).Replace("&", "and");
                                digitalAsset.Name        = digitalAsset.FileName;
                                digitalAsset.Bytes       = bytes;
                                digitalAsset.ContentType = section.ContentType;
                                digitalAsset.UploadedOn  = DateTime.UtcNow;
                                _context.DigitalAssets.Add(digitalAsset);
                                await _context.SaveChangesAsync(cancellationToken, request.Username);

                                digitalAssets.Add(DigitalAssetApiModel.FromDigitalAsset(digitalAsset));
                            }
                        }
                    }

                    section = await reader.ReadNextSectionAsync();
                }

                return(new Response()
                {
                });
            }
コード例 #4
0
        public static DigitalAssetApiModel FromDigitalAsset(DigitalAsset digitalAsset)
        {
            var model = new DigitalAssetApiModel();

            model.DigitalAssetId = digitalAsset.DigitalAssetId;
            model.Folder         = digitalAsset.Folder;
            model.Name           = digitalAsset.Name;
            model.FileName       = digitalAsset.FileName;
            model.Description    = digitalAsset.Description;
            model.Created        = digitalAsset.Created;
            model.FileModified   = digitalAsset.FileModified;
            model.Size           = digitalAsset.Size;
            model.Bytes          = digitalAsset.Bytes;
            model.ContentType    = digitalAsset.ContentType;
            model.IsSecure       = digitalAsset.IsSecure;
            model.CreatedOn      = digitalAsset.CreatedOn;
            model.CreatedBy      = digitalAsset.CreatedBy;
            model.UploadedOn     = string.Format("{0:yyyy-MM-dd HH:mm}", digitalAsset.UploadedOn);
            model.UploadedBy     = digitalAsset.UploadedBy;
            return(model);
        }