mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-22 06:13:22 -07:00
refactor(controller, engine, sync, checker) Additional nullable checks
This commit is contained in:
parent
bce6f4c2f3
commit
14e0219101
17 changed files with 31 additions and 31 deletions
|
@ -99,7 +99,7 @@ namespace Ombi.Core.Engine
|
|||
{
|
||||
return new RequestEngineResult
|
||||
{
|
||||
ErrorMessage = ruleResults.FirstOrDefault(x => x.Message.HasValue()).Message
|
||||
ErrorMessage = ruleResults.FirstOrDefault(x => x.Message.HasValue())?.Message
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@ namespace Ombi.Core.Engine
|
|||
{
|
||||
return new RequestEngineResult
|
||||
{
|
||||
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message)).Message
|
||||
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message))?.Message
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -198,7 +198,7 @@ namespace Ombi.Core.Engine
|
|||
{
|
||||
return new RequestEngineResult
|
||||
{
|
||||
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message)).Message
|
||||
ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message))?.Message
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ namespace Ombi.Core
|
|||
|
||||
if (images?.backdrops?.Any() ?? false)
|
||||
{
|
||||
return images.backdrops.Select(x => x.file_path).FirstOrDefault();
|
||||
return images?.backdrops.Select(x => x.file_path).FirstOrDefault();
|
||||
}
|
||||
if (images?.posters?.Any() ?? false)
|
||||
{
|
||||
|
@ -85,7 +85,7 @@ namespace Ombi.Core
|
|||
}
|
||||
else
|
||||
{
|
||||
return images.posters.Select(x => x.file_path).First();
|
||||
return images?.posters.Select(x => x.file_path).First();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -524,7 +524,7 @@ namespace Ombi.Core.Senders
|
|||
|
||||
if (pathId == 0)
|
||||
{
|
||||
return rootFoldersResult.FirstOrDefault().path;
|
||||
return rootFoldersResult.FirstOrDefault()?.path;
|
||||
}
|
||||
|
||||
foreach (var r in rootFoldersResult.Where(r => r.id == pathId))
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace Ombi.Mapping.Profiles
|
|||
.ForMember(dest => dest.ImdbId, opts => opts.MapFrom(src => src.ExternalIds.ImdbId))
|
||||
.ForMember(dest => dest.TheTvDbId, opts => opts.MapFrom(src => src.ExternalIds.TvDbId))
|
||||
.ForMember(dest => dest.Network, opts => opts.MapFrom(src => src.networks.FirstOrDefault()))
|
||||
.ForMember(dest => dest.NetworkId, opts => opts.MapFrom(src => src.networks.FirstOrDefault().id))
|
||||
.ForMember(dest => dest.NetworkId, opts => opts.MapFrom(src => src.networks.FirstOrDefault()?.id))
|
||||
.ForMember(dest => dest.Overview, opts => opts.MapFrom(src => src.overview))
|
||||
.ForMember(dest => dest.Rating,
|
||||
opts => opts.MapFrom(src => src.vote_average.ToString(CultureInfo.CurrentUICulture)))
|
||||
|
|
|
@ -167,7 +167,7 @@ namespace Ombi.Notifications
|
|||
if (Alias.IsNullOrEmpty())
|
||||
{
|
||||
Alias = req?.RequestedUser?.Alias.HasValue() ?? false
|
||||
? req.RequestedUser?.Alias
|
||||
? req?.RequestedUser?.Alias
|
||||
: req?.RequestedUser?.UserName;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ namespace Ombi.Schedule.Jobs.Emby
|
|||
{
|
||||
var has4kRequest = movie.Has4KRequest;
|
||||
EmbyContent embyContent = null;
|
||||
if (movie.TheMovieDbId > 0)
|
||||
if (movie?.TheMovieDbId > 0)
|
||||
{
|
||||
embyContent = await _repo.GetByTheMovieDbId(movie.TheMovieDbId.ToString());
|
||||
}
|
||||
|
|
|
@ -179,7 +179,7 @@ namespace Ombi.Schedule.Jobs.Emby
|
|||
Title = tvShow.Name,
|
||||
Type = MediaType.Series,
|
||||
EmbyId = tvShow.Id,
|
||||
Url = EmbyHelper.GetEmbyMediaUrl(tvShow.Id, server?.ServerId, server.ServerHostname),
|
||||
Url = EmbyHelper.GetEmbyMediaUrl(tvShow.Id, server?.ServerId, server?.ServerHostname),
|
||||
AddedAt = DateTime.UtcNow,
|
||||
});
|
||||
}
|
||||
|
@ -284,7 +284,7 @@ namespace Ombi.Schedule.Jobs.Emby
|
|||
else
|
||||
{
|
||||
var movieHasChanged = false;
|
||||
if (existingMovie.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
|
||||
if (existingMovie?.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie?.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
|
||||
{
|
||||
_logger.LogDebug($"Updating existing movie '{movieInfo.Name}'");
|
||||
MapEmbyContent(existingMovie, movieInfo, server, has4K, quality);
|
||||
|
@ -315,12 +315,12 @@ namespace Ombi.Schedule.Jobs.Emby
|
|||
}
|
||||
|
||||
private void MapEmbyContent(EmbyContent content, EmbyMovie movieInfo, EmbyServers server, bool has4K, string quality){
|
||||
content.ImdbId = movieInfo.ProviderIds.Imdb;
|
||||
content.ImdbId = movieInfo.ProviderIds?.Imdb;
|
||||
content.TheMovieDbId = movieInfo.ProviderIds?.Tmdb;
|
||||
content.Title = movieInfo.Name;
|
||||
content.Type = MediaType.Movie;
|
||||
content.EmbyId = movieInfo.Id;
|
||||
content.Url = EmbyHelper.GetEmbyMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname);
|
||||
content.Url = EmbyHelper.GetEmbyMediaUrl(movieInfo.Id, server?.ServerId, server?.ServerHostname);
|
||||
content.Quality = has4K ? null : quality;
|
||||
content.Has4K = has4K;
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|||
{
|
||||
var has4kRequest = movie.Has4KRequest;
|
||||
JellyfinContent jellyfinContent = null;
|
||||
if (movie.TheMovieDbId > 0)
|
||||
if (movie?.TheMovieDbId > 0)
|
||||
{
|
||||
jellyfinContent = await _repo.GetByTheMovieDbId(movie.TheMovieDbId.ToString());
|
||||
}
|
||||
|
|
|
@ -154,7 +154,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|||
Title = tvShow.Name,
|
||||
Type = MediaType.Series,
|
||||
JellyfinId = tvShow.Id,
|
||||
Url = JellyfinHelper.GetJellyfinMediaUrl(tvShow.Id, server?.ServerId, server.ServerHostname),
|
||||
Url = JellyfinHelper.GetJellyfinMediaUrl(tvShow.Id, server?.ServerId, server?.ServerHostname),
|
||||
AddedAt = DateTime.UtcNow
|
||||
});
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|||
else
|
||||
{
|
||||
var movieHasChanged = false;
|
||||
if (existingMovie.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
|
||||
if (existingMovie?.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie?.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
|
||||
{
|
||||
_logger.LogDebug($"Updating existing movie '{movieInfo.Name}'");
|
||||
MapJellyfinMovie(existingMovie, movieInfo, server, has4K, quality);
|
||||
|
@ -282,12 +282,12 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|||
|
||||
private void MapJellyfinMovie(JellyfinContent content, JellyfinMovie movieInfo, JellyfinServers server, bool has4K, string quality)
|
||||
{
|
||||
content.ImdbId = movieInfo.ProviderIds.Imdb;
|
||||
content.ImdbId = movieInfo.ProviderIds?.Imdb;
|
||||
content.TheMovieDbId = movieInfo.ProviderIds?.Tmdb;
|
||||
content.Title = movieInfo.Name;
|
||||
content.Type = MediaType.Movie;
|
||||
content.JellyfinId = movieInfo.Id;
|
||||
content.Url = JellyfinHelper.GetJellyfinMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname);
|
||||
content.Url = JellyfinHelper.GetJellyfinMediaUrl(movieInfo.Id, server?.ServerId, server?.ServerHostname);
|
||||
content.Quality = has4K ? null : quality;
|
||||
content.Has4K = has4K;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ namespace Ombi.Schedule.Jobs.Ombi
|
|||
{
|
||||
sb.Append("<tr>");
|
||||
sb.Append("<td class=\"poster-container\" width=\"150\" height=\"225\" valign=\"top\" style=\"ont-family: sans-serif; font-size: 14px; vertical-align: top; width: 150px; min-width: 150px; height: 225px; max-height: 225px; min-height: 225px; \">");
|
||||
sb.AppendFormat("<table class=\"poster-img\" width=\"100%\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; \">", url);
|
||||
sb.Append("<table class=\"poster-img\" width=\"100%\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; \">");
|
||||
}
|
||||
|
||||
protected virtual void AddMediaServerUrl(string mediaurl, string url)
|
||||
|
|
|
@ -115,7 +115,7 @@ namespace Ombi.Schedule.Jobs.Plex
|
|||
var resultCount = settings.EpisodeBatchSize == 0 ? 150 : settings.EpisodeBatchSize;
|
||||
var currentEpisodes = _repo.GetAllEpisodes().Cast<PlexEpisode>();
|
||||
var episodes = await _api.GetAllEpisodes(settings.PlexAuthToken, settings.FullUri, section.key, currentPosition, resultCount);
|
||||
_log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes.MediaContainer.librarySectionTitle} = {episodes.MediaContainer.totalSize}");
|
||||
_log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes?.MediaContainer?.librarySectionTitle} = {episodes?.MediaContainer?.totalSize}");
|
||||
|
||||
// Delete all the episodes because we cannot uniquly match an episode to series every time,
|
||||
// see comment below.
|
||||
|
|
|
@ -99,8 +99,8 @@ namespace Ombi.Schedule.Jobs.Plex
|
|||
var newUser = new OmbiUser
|
||||
{
|
||||
UserType = UserType.PlexUser,
|
||||
UserName = plexUser?.Username ?? plexUser.Id,
|
||||
ProviderUserId = plexUser.Id,
|
||||
UserName = plexUser?.Username ?? plexUser?.Id,
|
||||
ProviderUserId = plexUser?.Id,
|
||||
Email = plexUser?.Email ?? string.Empty,
|
||||
Alias = string.Empty,
|
||||
MovieRequestLimit = userManagementSettings.MovieRequestLimit,
|
||||
|
|
|
@ -104,12 +104,12 @@ namespace Ombi.Controllers.V1.External
|
|||
Items = new List<MediaFolders>()
|
||||
};
|
||||
|
||||
foreach(var folder in result)
|
||||
foreach (var folder in result)
|
||||
{
|
||||
var toAdd = new MediaFolders
|
||||
{
|
||||
Name = folder.Name,
|
||||
Id = folder.ItemId,
|
||||
Name = folder?.Name,
|
||||
Id = folder?.ItemId,
|
||||
ServerId = server.ServerId
|
||||
};
|
||||
|
||||
|
|
|
@ -82,8 +82,8 @@ namespace Ombi.Controllers.V1.External
|
|||
{
|
||||
var toAdd = new MediaFolders
|
||||
{
|
||||
Name = folder.Name,
|
||||
Id = folder.ItemId,
|
||||
Name = folder?.Name,
|
||||
Id = folder?.ItemId,
|
||||
ServerId = server.ServerId
|
||||
};
|
||||
|
||||
|
|
|
@ -528,7 +528,7 @@ namespace Ombi.Controllers.V1.External
|
|||
var status = await LidarrApi.Status(settings.ApiKey, settings.FullUri);
|
||||
return new TesterResultModel
|
||||
{
|
||||
IsValid = status?.urlBase == settings.SubDir || string.IsNullOrEmpty(status.urlBase) && string.IsNullOrEmpty(settings.SubDir),
|
||||
IsValid = status?.urlBase == settings.SubDir || string.IsNullOrEmpty(status?.urlBase) && string.IsNullOrEmpty(settings.SubDir),
|
||||
ExpectedSubDir = status?.urlBase
|
||||
};
|
||||
}
|
||||
|
@ -551,7 +551,7 @@ namespace Ombi.Controllers.V1.External
|
|||
var status = await WhatsAppApi.SendMessage(new WhatsAppModel {
|
||||
From = settings.From,
|
||||
Message = "This is a test from Ombi!",
|
||||
To = user.UserNotificationPreferences.FirstOrDefault(x => x.Agent == NotificationAgent.WhatsApp).Value
|
||||
To = user.UserNotificationPreferences.FirstOrDefault(x => x.Agent == NotificationAgent.WhatsApp)?.Value
|
||||
}, settings.AccountSid, settings.AuthToken);
|
||||
if (status.HasValue())
|
||||
{
|
||||
|
|
|
@ -317,10 +317,10 @@ namespace Ombi.Controllers.V1
|
|||
? issue.UserReported.Email
|
||||
: string.Empty,
|
||||
AdditionalInformation = $"{issue.Subject} | {issue.Description}",
|
||||
UserId = issue.UserReported.Id, // This is a resolved notification, so needs to go to the user who raised it
|
||||
UserId = issue.UserReported?.Id, // This is a resolved notification, so needs to go to the user who raised it
|
||||
|
||||
};
|
||||
AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported?.UserName ?? string.Empty, issue.UserReported.UserAlias);
|
||||
AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported?.UserName ?? string.Empty, issue.UserReported?.UserAlias);
|
||||
|
||||
await _notification.Notify(notificationModel);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue