Example #1
0
        public async Task ExecuteAsync(
            UpdateMediaMetadataMessage message,
            CancellationToken cancellationToken)
        {
            var messages = new List <MediaOperationCompletedMessage>();

            foreach (Guid mediaId in message.Ids)
            {
                MediaOperationCompletedMessage msg = await UpdateMetadataAsync(
                    mediaId,
                    message.DateTaken,
                    message.GeoLocation,
                    cancellationToken);

                msg.OperationId = message.OperationId;
                messages.Add(msg);

                await _bus.Publish(msg, cancellationToken);
            }

            var completedmsg = new MediaOperationRequestCompletedMessage
            {
                Type         = MediaOperationType.UpdateMetadata,
                OperationId  = message.OperationId,
                SuccessCount = messages.Where(x => x.IsSuccess).Count(),
                ErrorCount   = messages.Where(x => !x.IsSuccess).Count(),
            };

            await _bus.Publish(completedmsg, cancellationToken);
        }
Example #2
0
        public async Task ExecuteAsync(
            RescanFacesMessage message,
            CancellationToken cancellationToken)
        {
            var messages = new List <MediaOperationCompletedMessage>();

            foreach (Guid mediaId in message.Ids)
            {
                MediaOperationCompletedMessage msg = new();
                msg.Type = MediaOperationType.RescanFaces;

                try
                {
                    await _mediaFaceScanner
                    .ScanByMediaIdAsync(mediaId, cancellationToken);

                    msg.IsSuccess   = true;
                    msg.Type        = MediaOperationType.RescanFaces;
                    msg.MediaId     = mediaId;
                    msg.OperationId = message.OperationId;
                }
                catch (Exception ex)
                {
                    msg.IsSuccess = false;
                    msg.Message   = ex.Message;
                }

                await _bus.Publish(msg, cancellationToken);
            }

            var completedmsg = new MediaOperationRequestCompletedMessage
            {
                Type         = MediaOperationType.RescanFaces,
                OperationId  = message.OperationId,
                SuccessCount = messages.Where(x => x.IsSuccess).Count(),
                ErrorCount   = messages.Where(x => !x.IsSuccess).Count(),
            };

            await _bus.Publish(completedmsg, cancellationToken);
        }