Пример #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()
                {
                });
            }