46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using FileService.Application.Ports;
|
|
using IM.Commons.IntegrationEvents;
|
|
using MassTransit;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace FileService.Application.EventHandler
|
|
{
|
|
public class UploadTaskCompleteEventHandler : IConsumer<UploadTaskCompleteEvent>
|
|
{
|
|
private readonly IObjectStorageRouter router;
|
|
private readonly IStorageRedisCache cache;
|
|
|
|
public UploadTaskCompleteEventHandler(IObjectStorageRouter router, IStorageRedisCache cache)
|
|
{
|
|
this.router = router;
|
|
this.cache = cache;
|
|
}
|
|
|
|
public async Task Consume(ConsumeContext<UploadTaskCompleteEvent> context)
|
|
{
|
|
var @event = context.Message;
|
|
var storage = router.Route(@event.ProviderCode);
|
|
if(@event.ProviderCode == "Local")
|
|
{
|
|
await storage.CompleteUploadAsync(new StorageContracts.CompleteUploadCommand(
|
|
ProviderCode: @event.ProviderCode,
|
|
Bucket: @event.Bucket,
|
|
Region: @event.Region,
|
|
ObjectKey: @event.ObjectKey,
|
|
UploadSessionId: @event.SessionId,
|
|
Parts: @event.Parts.Select(s => new StorageContracts.UploadPart(
|
|
PartNumber: s.PartNumber,
|
|
ETag: s.ETag,
|
|
Size: s.Size,
|
|
Checksum: s.Checksum
|
|
)).ToList()
|
|
), context.CancellationToken);
|
|
}
|
|
}
|
|
}
|
|
}
|