/// <summary> /// Publish an event to notify media service that the image processing /// has been completed. /// </summary> /// <param name="id"></param> /// <param name="storageLocations"></param> /// <returns></returns> private async Task PublishMediaItemProcessedAsync(Guid id, List <MediaItemStorageLocationDto> storageLocations) { MediaItemProcessedEvent processedEvent = new MediaItemProcessedEvent { Id = id, StorageLocations = storageLocations, }; await _bus.PublishAsync(processedEvent); }
public async Task OnRequestAsync(MediaItemProcessedEvent request) { Logger.LogMessage("MediaItemProcessedEventProcessor Media Item Request. Id: {0}", request.Id); Stopwatch stopWatch = Stopwatch.StartNew(); try { MediaItem mediaItem = await _mediaService.LoadAsync(request.Id); if (mediaItem == null) { throw new Exception("Did not find media item to update"); } await DeleteUploadedImageAsync(mediaItem); foreach (var mediaItemStorageLocationDto in request.StorageLocations) { mediaItem.StorageLocations.Add(Mapper.Map <MediaItemStorageLocation>(mediaItemStorageLocationDto)); } // Update the history type mediaItem.HistoryType = MediaHistoryType.History; await _mediaService.SaveAsync(mediaItem); // TODO: Also add/update a "Latest" type for the device // to allow quick access to the devices latest media? await RaiseNewMediaItem(mediaItem); } catch (Exception ex) { Logger.LogException(ex, "Error updating media item with processed locations"); } finally { stopWatch.Stop(); Logger.LogMessage("Metid Item Processed Event for {0} took {1}ms", request.Id, stopWatch.ElapsedMilliseconds); } }