diff --git a/src/Ombi.Api.Mattermost/Ombi.Api.Mattermost.csproj b/src/Ombi.Api.Mattermost/Ombi.Api.Mattermost.csproj
index 16c3a8558..2dd241a24 100644
--- a/src/Ombi.Api.Mattermost/Ombi.Api.Mattermost.csproj
+++ b/src/Ombi.Api.Mattermost/Ombi.Api.Mattermost.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/Ombi.Api.MusicBrainz/MusicBrainzApi.cs b/src/Ombi.Api.MusicBrainz/MusicBrainzApi.cs
index e870eb07f..e667d8ef1 100644
--- a/src/Ombi.Api.MusicBrainz/MusicBrainzApi.cs
+++ b/src/Ombi.Api.MusicBrainz/MusicBrainzApi.cs
@@ -1,12 +1,10 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Hqub.MusicBrainz.API;
using Hqub.MusicBrainz.API.Entities;
-using Hqub.MusicBrainz.API.Entities.Collections;
using Newtonsoft.Json;
using Ombi.Api.MusicBrainz.Models;
@@ -14,28 +12,30 @@ namespace Ombi.Api.MusicBrainz
{
public class MusicBrainzApi : IMusicBrainzApi
{
+ private readonly MusicBrainzClient _client;
private readonly IApi _api;
- public MusicBrainzApi(IApi api)
+ public MusicBrainzApi(MusicBrainzClient client, IApi api)
{
+ _client = client;
_api = api;
}
public Task GetAlbumInformation(string albumId)
{
- var album = Release.GetAsync(albumId);
+ var album = _client.Releases.GetAsync(albumId);
return album;
}
public async Task> SearchArtist(string artistQuery)
{
- var artist = await Artist.SearchAsync(artistQuery, 10);
+ var artist = await _client.Artists.SearchAsync(artistQuery, 10);
return artist.Items.Where(x => x.Type != null);
}
public async Task GetArtistInformation(string artistId)
{
- var artist = await Artist.GetAsync(artistId, "artist-rels", "url-rels", "releases", "release-groups");
+ var artist = await _client.Artists.GetAsync(artistId, "artist-rels", "url-rels", "releases", "release-groups");
return artist;
}
@@ -49,8 +49,7 @@ namespace Ombi.Api.MusicBrainz
};
// Search for a release by title.
- var releases = await Release.SearchAsync(query);
-
+ var releases = await _client.Releases.SearchAsync(query);
return releases.Items;
}
@@ -65,10 +64,5 @@ namespace Ombi.Api.MusicBrainz
}
return null;
}
-
- private void AddHeaders(Request req)
- {
- req.AddHeader("Accept", "application/json");
- }
}
}
diff --git a/src/Ombi.Api.MusicBrainz/Ombi.Api.MusicBrainz.csproj b/src/Ombi.Api.MusicBrainz/Ombi.Api.MusicBrainz.csproj
index c8a78e491..1a6497ceb 100644
--- a/src/Ombi.Api.MusicBrainz/Ombi.Api.MusicBrainz.csproj
+++ b/src/Ombi.Api.MusicBrainz/Ombi.Api.MusicBrainz.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/src/Ombi.Api.Notifications/Ombi.Api.Notifications.csproj b/src/Ombi.Api.Notifications/Ombi.Api.Notifications.csproj
index 6406ef9de..029acb3c5 100644
--- a/src/Ombi.Api.Notifications/Ombi.Api.Notifications.csproj
+++ b/src/Ombi.Api.Notifications/Ombi.Api.Notifications.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/src/Ombi.Api.Radarr/Ombi.Api.Radarr.csproj b/src/Ombi.Api.Radarr/Ombi.Api.Radarr.csproj
index 889aa0ea6..97d0cb959 100644
--- a/src/Ombi.Api.Radarr/Ombi.Api.Radarr.csproj
+++ b/src/Ombi.Api.Radarr/Ombi.Api.Radarr.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/Ombi.Api.Twilio/Ombi.Api.Twilio.csproj b/src/Ombi.Api.Twilio/Ombi.Api.Twilio.csproj
index 8e12c7c67..2b4bb3d8d 100644
--- a/src/Ombi.Api.Twilio/Ombi.Api.Twilio.csproj
+++ b/src/Ombi.Api.Twilio/Ombi.Api.Twilio.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Ombi.Api/Ombi.Api.csproj b/src/Ombi.Api/Ombi.Api.csproj
index 7670d4d14..ab0d14b5e 100644
--- a/src/Ombi.Api/Ombi.Api.csproj
+++ b/src/Ombi.Api/Ombi.Api.csproj
@@ -12,9 +12,9 @@
-
-
-
+
+
+
diff --git a/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs b/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs
index f8ced161f..8418cddbc 100644
--- a/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs
+++ b/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs
@@ -2,7 +2,6 @@
using Moq;
using Moq.AutoMock;
using NUnit.Framework;
-using Ombi.Core.Authentication;
using Ombi.Core.Engine;
using Ombi.Core.Helpers;
using Ombi.Core.Models.Requests;
@@ -52,7 +51,7 @@ namespace Ombi.Core.Tests.Engine
_subject = _mocker.CreateInstance();
var list = DbHelper.GetQueryableMockDbSet(new RequestSubscription());
- _mocker.Setup, IQueryable>(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock().Object);
+ _mocker.Setup, IQueryable>(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock());
}
[Test]
diff --git a/src/Ombi.Core.Tests/Engine/MovieRequestLimitsTests.cs b/src/Ombi.Core.Tests/Engine/MovieRequestLimitsTests.cs
index 88e1c75d2..5bb4c69cb 100644
--- a/src/Ombi.Core.Tests/Engine/MovieRequestLimitsTests.cs
+++ b/src/Ombi.Core.Tests/Engine/MovieRequestLimitsTests.cs
@@ -3,7 +3,6 @@ using Moq;
using Moq.AutoMock;
using NUnit.Framework;
using Ombi.Core.Authentication;
-using Ombi.Core.Engine;
using Ombi.Core.Helpers;
using Ombi.Core.Models;
using Ombi.Core.Services;
@@ -64,7 +63,7 @@ namespace Ombi.Core.Tests.Engine
var user = new OmbiUser();
var um = _mocker.GetMock();
- um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock().Object);
+ um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock());
@@ -82,7 +81,7 @@ namespace Ombi.Core.Tests.Engine
};
var um = _mocker.GetMock();
- um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock().Object);
+ um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock());
@@ -100,7 +99,7 @@ namespace Ombi.Core.Tests.Engine
MovieRequestLimit = 1
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user);
@@ -131,7 +130,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user);
@@ -206,7 +205,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user);
@@ -239,7 +238,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user);
@@ -272,7 +271,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user);
@@ -311,7 +310,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user);
@@ -344,7 +343,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user);
@@ -376,7 +375,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user, today);
@@ -415,7 +414,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user, today);
@@ -448,7 +447,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user, today);
@@ -481,7 +480,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user, today);
@@ -521,7 +520,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMovieRequests(user, today);
diff --git a/src/Ombi.Core.Tests/Engine/MusicRequestLimitTests.cs b/src/Ombi.Core.Tests/Engine/MusicRequestLimitTests.cs
index 93dd5050d..477ab7502 100644
--- a/src/Ombi.Core.Tests/Engine/MusicRequestLimitTests.cs
+++ b/src/Ombi.Core.Tests/Engine/MusicRequestLimitTests.cs
@@ -3,7 +3,6 @@ using Moq;
using Moq.AutoMock;
using NUnit.Framework;
using Ombi.Core.Authentication;
-using Ombi.Core.Engine;
using Ombi.Core.Helpers;
using Ombi.Core.Models;
using Ombi.Core.Services;
@@ -62,7 +61,7 @@ namespace Ombi.Core.Tests.Engine
var user = new OmbiUser();
var um = _mocker.GetMock();
- um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock().Object);
+ um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock());
@@ -80,7 +79,7 @@ namespace Ombi.Core.Tests.Engine
};
var um = _mocker.GetMock();
- um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock().Object);
+ um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock());
@@ -98,7 +97,7 @@ namespace Ombi.Core.Tests.Engine
MusicRequestLimit = 1
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -129,7 +128,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -204,7 +203,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -237,7 +236,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -270,7 +269,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -309,7 +308,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -342,7 +341,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -374,7 +373,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user, today);
@@ -413,7 +412,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -445,7 +444,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -478,7 +477,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user);
@@ -518,7 +517,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingMusicRequests(user, today);
diff --git a/src/Ombi.Core.Tests/Engine/TvRequestLimitsTests.cs b/src/Ombi.Core.Tests/Engine/TvRequestLimitsTests.cs
index ba383da6c..201251960 100644
--- a/src/Ombi.Core.Tests/Engine/TvRequestLimitsTests.cs
+++ b/src/Ombi.Core.Tests/Engine/TvRequestLimitsTests.cs
@@ -3,7 +3,6 @@ using Moq;
using Moq.AutoMock;
using NUnit.Framework;
using Ombi.Core.Authentication;
-using Ombi.Core.Engine;
using Ombi.Core.Helpers;
using Ombi.Core.Models;
using Ombi.Core.Services;
@@ -59,7 +58,7 @@ namespace Ombi.Core.Tests.Engine
var user = new OmbiUser();
var um = _mocker.GetMock();
- um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock().Object);
+ um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock());
@@ -77,7 +76,7 @@ namespace Ombi.Core.Tests.Engine
};
var um = _mocker.GetMock();
- um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock().Object);
+ um.SetupGet(x => x.Users).Returns(new List { user }.AsQueryable().BuildMock());
@@ -95,7 +94,7 @@ namespace Ombi.Core.Tests.Engine
EpisodeRequestLimit = 1
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -126,7 +125,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -209,7 +208,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -243,7 +242,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -276,7 +275,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -317,7 +316,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -358,7 +357,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -380,7 +379,7 @@ namespace Ombi.Core.Tests.Engine
EpisodeRequestLimitType = RequestLimitType.Week,
Id = "id1"
};
- var lastWeek = DateTime.Now.AddDays(-8);
+ var lastWeek = DateTime.UtcNow.AddDays(-8);
var log = new List
{
new RequestLog
@@ -392,7 +391,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -425,7 +424,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -466,7 +465,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -507,7 +506,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -541,7 +540,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -574,7 +573,7 @@ namespace Ombi.Core.Tests.Engine
}
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -615,7 +614,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
@@ -656,7 +655,7 @@ namespace Ombi.Core.Tests.Engine
},
};
var repoMock = _mocker.GetMock>();
- repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock().Object);
+ repoMock.Setup(x => x.GetAll()).Returns(log.AsQueryable().BuildMock());
var result = await _subject.GetRemainingTvRequests(user);
diff --git a/src/Ombi.Core.Tests/Engine/VoteEngineTests.cs b/src/Ombi.Core.Tests/Engine/VoteEngineTests.cs
index 4194ae0ea..a3c42197e 100644
--- a/src/Ombi.Core.Tests/Engine/VoteEngineTests.cs
+++ b/src/Ombi.Core.Tests/Engine/VoteEngineTests.cs
@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.Linq;
-using System.Security.Principal;
using System.Threading.Tasks;
using AutoFixture;
using MockQueryable.Moq;
@@ -71,7 +70,7 @@ namespace Ombi.Core.Tests.Engine
VoteRepository.Setup(x => x.GetAll()).Returns(new EnumerableQuery(votes)
.AsQueryable()
- .BuildMock().Object);
+ .BuildMock());
var result = new VoteEngineResult();
if (type == VoteType.Downvote)
{
@@ -118,7 +117,7 @@ namespace Ombi.Core.Tests.Engine
});
VoteRepository.Setup(x => x.GetAll()).Returns(new EnumerableQuery(votes)
.AsQueryable()
- .BuildMock().Object);
+ .BuildMock());
var result = new VoteEngineResult();
if (type == VoteType.Downvote)
{
@@ -163,7 +162,7 @@ namespace Ombi.Core.Tests.Engine
});
VoteRepository.Setup(x => x.GetAll()).Returns(new EnumerableQuery(votes)
.AsQueryable()
- .BuildMock().Object);
+ .BuildMock());
var result = new VoteEngineResult();
if (type == VoteType.Downvote)
diff --git a/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj b/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj
index 4e01e32cd..40956f5fc 100644
--- a/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj
+++ b/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj
@@ -8,18 +8,18 @@
-
+
-
-
-
-
-
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/src/Ombi.Core.Tests/Rule/Request/ExistingMovieRequestRuleTests.cs b/src/Ombi.Core.Tests/Rule/Request/ExistingMovieRequestRuleTests.cs
index 682d4bf4d..ae54bc805 100644
--- a/src/Ombi.Core.Tests/Rule/Request/ExistingMovieRequestRuleTests.cs
+++ b/src/Ombi.Core.Tests/Rule/Request/ExistingMovieRequestRuleTests.cs
@@ -1,21 +1,15 @@
-using System;
using System.Collections.Generic;
using System.Linq;
-using System.Security.Principal;
using System.Threading.Tasks;
using MockQueryable.Moq;
using Moq;
using NUnit.Framework;
-using Ombi.Core.Authentication;
-using Ombi.Core.Rule.Rules;
using Ombi.Core.Rule.Rules.Request;
using Ombi.Core.Services;
-using Ombi.Helpers;
using Ombi.Settings.Settings.Models;
using Ombi.Store.Entities;
using Ombi.Store.Entities.Requests;
using Ombi.Store.Repository.Requests;
-using Ombi.Test.Common;
namespace Ombi.Core.Tests.Rule.Request
{
@@ -45,7 +39,7 @@ namespace Ombi.Core.Tests.Rule.Request
TheMovieDbId = 1,
RequestType = RequestType.Movie
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var o = new MovieRequests
{
TheMovieDbId = 1,
@@ -67,7 +61,7 @@ namespace Ombi.Core.Tests.Rule.Request
ImdbId = 1.ToString(),
RequestType = RequestType.Movie
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var o = new MovieRequests
{
ImdbId = 1.ToString(),
@@ -89,7 +83,7 @@ namespace Ombi.Core.Tests.Rule.Request
ImdbId = "2",
RequestType = RequestType.Movie
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var o = new MovieRequests
{
TheMovieDbId = 1,
@@ -113,7 +107,7 @@ namespace Ombi.Core.Tests.Rule.Request
RequestType = RequestType.Movie,
Is4kRequest = true
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var o = new MovieRequests
{
TheMovieDbId = 2,
@@ -139,7 +133,7 @@ namespace Ombi.Core.Tests.Rule.Request
RequestType = RequestType.Movie,
Is4kRequest = false
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var o = new MovieRequests
{
TheMovieDbId = 2,
@@ -165,7 +159,7 @@ namespace Ombi.Core.Tests.Rule.Request
RequestType = RequestType.Movie,
Is4kRequest = false
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var o = new MovieRequests
{
TheMovieDbId = 2,
diff --git a/src/Ombi.Core.Tests/Rule/Request/ExistingPlexRequestRuleTests.cs b/src/Ombi.Core.Tests/Rule/Request/ExistingPlexRequestRuleTests.cs
index 314b543b8..838b11497 100644
--- a/src/Ombi.Core.Tests/Rule/Request/ExistingPlexRequestRuleTests.cs
+++ b/src/Ombi.Core.Tests/Rule/Request/ExistingPlexRequestRuleTests.cs
@@ -7,10 +7,8 @@ using Ombi.Store.Entities;
using Ombi.Store.Entities.Requests;
using Ombi.Store.Repository;
using Ombi.Store.Repository.Requests;
-using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using System.Threading.Tasks;
namespace Ombi.Core.Tests.Rule.Request
@@ -31,7 +29,7 @@ namespace Ombi.Core.Tests.Rule.Request
[Test]
public async Task RequestShow_DoesNotExistAtAll_IsSuccessful()
{
- PlexContentRepo.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock().Object);
+ PlexContentRepo.Setup(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock());
var req = new ChildRequests
{
SeasonRequests = new List
@@ -203,7 +201,7 @@ namespace Ombi.Core.Tests.Rule.Request
TheMovieDbId = 123.ToString(),
}
};
- PlexContentRepo.Setup(x => x.GetAll()).Returns(content.AsQueryable().BuildMock().Object);
+ PlexContentRepo.Setup(x => x.GetAll()).Returns(content.AsQueryable().BuildMock());
var req = new MovieRequests
{
@@ -245,7 +243,7 @@ namespace Ombi.Core.Tests.Rule.Request
}
}
};
- PlexContentRepo.Setup(x => x.GetAll()).Returns(childRequests.AsQueryable().BuildMock().Object);
+ PlexContentRepo.Setup(x => x.GetAll()).Returns(childRequests.AsQueryable().BuildMock());
}
}
}
diff --git a/src/Ombi.Core.Tests/Rule/Request/ExistingTvRequestRuleTests.cs b/src/Ombi.Core.Tests/Rule/Request/ExistingTvRequestRuleTests.cs
index d5ca903bf..fcaaf44a5 100644
--- a/src/Ombi.Core.Tests/Rule/Request/ExistingTvRequestRuleTests.cs
+++ b/src/Ombi.Core.Tests/Rule/Request/ExistingTvRequestRuleTests.cs
@@ -5,10 +5,8 @@ using Ombi.Core.Rule.Rules.Request;
using Ombi.Store.Entities;
using Ombi.Store.Entities.Requests;
using Ombi.Store.Repository.Requests;
-using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using System.Threading.Tasks;
namespace Ombi.Core.Tests.Rule.Request
@@ -29,7 +27,7 @@ namespace Ombi.Core.Tests.Rule.Request
[Test]
public async Task RequestShow_DoesNotExistAtAll_IsSuccessful()
{
- TvRequestRepo.Setup(x => x.GetChild()).Returns(new List().AsQueryable().BuildMock().Object);
+ TvRequestRepo.Setup(x => x.GetChild()).Returns(new List().AsQueryable().BuildMock());
var req = new ChildRequests
{
SeasonRequests = new List
@@ -209,7 +207,7 @@ namespace Ombi.Core.Tests.Rule.Request
}
}
};
- TvRequestRepo.Setup(x => x.GetChild()).Returns(childRequests.AsQueryable().BuildMock().Object);
+ TvRequestRepo.Setup(x => x.GetChild()).Returns(childRequests.AsQueryable().BuildMock());
}
}
}
diff --git a/src/Ombi.Core.Tests/Senders/MassEmailSenderTests.cs b/src/Ombi.Core.Tests/Senders/MassEmailSenderTests.cs
index 5c5cedabe..bdd9899a7 100644
--- a/src/Ombi.Core.Tests/Senders/MassEmailSenderTests.cs
+++ b/src/Ombi.Core.Tests/Senders/MassEmailSenderTests.cs
@@ -54,7 +54,7 @@ namespace Ombi.Core.Tests.Senders
Id = "a",
Email = "Test@test.com"
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var result = await _subject.SendMassEmail(model);
@@ -95,7 +95,7 @@ namespace Ombi.Core.Tests.Senders
Id = "b",
Email = "b@test.com"
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var result = await _subject.SendMassEmail(model);
@@ -129,7 +129,7 @@ namespace Ombi.Core.Tests.Senders
{
Id = "a",
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var result = await _subject.SendMassEmail(model);
_mocker.Verify>(
@@ -177,7 +177,7 @@ namespace Ombi.Core.Tests.Senders
Id = "b",
Email = "b@test.com"
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var result = await _subject.SendMassEmail(model);
@@ -217,7 +217,7 @@ namespace Ombi.Core.Tests.Senders
{
Id = "b",
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var result = await _subject.SendMassEmail(model);
diff --git a/src/Ombi.Core.Tests/Services/PlexServiceTests.cs b/src/Ombi.Core.Tests/Services/PlexServiceTests.cs
index a61c86b2e..8056cab97 100644
--- a/src/Ombi.Core.Tests/Services/PlexServiceTests.cs
+++ b/src/Ombi.Core.Tests/Services/PlexServiceTests.cs
@@ -59,7 +59,7 @@ namespace Ombi.Core.Tests.Services
_subject = _mocker.CreateInstance();
_mocker.Setup, IQueryable>(x => x.GetAll())
- .Returns(new List().AsQueryable().BuildMock().Object);
+ .Returns(new List().AsQueryable().BuildMock());
var result = await _subject.GetWatchlistUsers(CancellationToken.None);
@@ -95,7 +95,7 @@ namespace Ombi.Core.Tests.Services
_subject = _mocker.CreateInstance();
_mocker.Setup, IQueryable>(x => x.GetAll())
- .Returns(new List().AsQueryable().BuildMock().Object);
+ .Returns(new List().AsQueryable().BuildMock());
var result = await _subject.GetWatchlistUsers(CancellationToken.None);
@@ -132,7 +132,7 @@ namespace Ombi.Core.Tests.Services
UserId = "1",
MediaServerToken = "test",
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
var result = await _subject.GetWatchlistUsers(CancellationToken.None);
diff --git a/src/Ombi.Core.Tests/Services/RecentlyRequestedServiceTests.cs b/src/Ombi.Core.Tests/Services/RecentlyRequestedServiceTests.cs
index fd67e4e33..018ee99e9 100644
--- a/src/Ombi.Core.Tests/Services/RecentlyRequestedServiceTests.cs
+++ b/src/Ombi.Core.Tests/Services/RecentlyRequestedServiceTests.cs
@@ -15,7 +15,6 @@ using Ombi.Store.Repository.Requests;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -70,9 +69,9 @@ namespace Ombi.Core.Tests.Services
};
var albums = new List();
var chilRequests = new List();
- _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock().Object);
+ _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock());
var result = await _subject.GetRecentlyRequested(CancellationToken.None);
@@ -132,9 +131,9 @@ namespace Ombi.Core.Tests.Services
};
var albums = new List();
var chilRequests = new List();
- _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock().Object);
+ _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock());
var result = await _subject.GetRecentlyRequested(CancellationToken.None);
@@ -163,9 +162,9 @@ namespace Ombi.Core.Tests.Services
var albums = _fixture.CreateMany(10);
var chilRequests = _fixture.CreateMany(10);
- _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock().Object);
+ _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock());
var result = await _subject.GetRecentlyRequested(CancellationToken.None);
@@ -187,9 +186,9 @@ namespace Ombi.Core.Tests.Services
var albums = _fixture.CreateMany(10);
var chilRequests = _fixture.CreateMany(10);
- _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock().Object);
- _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock().Object);
+ _mocker.Setup>(x => x.GetAll()).Returns(movies.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetAll()).Returns(albums.AsQueryable().BuildMock());
+ _mocker.Setup>(x => x.GetChild()).Returns(chilRequests.AsQueryable().BuildMock());
_mocker.Setup>(x => x.GetUser()).ReturnsAsync(new OmbiUser { UserName = "test", Alias = "alias", UserType = UserType.LocalUser });
_mocker.Setup(x => x.Username).Returns("test");
_mocker.Setup>(x => x.IsInRoleAsync(It.IsAny(), It.IsAny())).ReturnsAsync(false);
diff --git a/src/Ombi.Core/Ombi.Core.csproj b/src/Ombi.Core/Ombi.Core.csproj
index 67ecdbe13..e4826d3c9 100644
--- a/src/Ombi.Core/Ombi.Core.csproj
+++ b/src/Ombi.Core/Ombi.Core.csproj
@@ -11,14 +11,13 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
diff --git a/src/Ombi.DependencyInjection/IocExtensions.cs b/src/Ombi.DependencyInjection/IocExtensions.cs
index 9e47042de..09d99d4b7 100644
--- a/src/Ombi.DependencyInjection/IocExtensions.cs
+++ b/src/Ombi.DependencyInjection/IocExtensions.cs
@@ -71,6 +71,8 @@ using System.Net.Http;
using Microsoft.Extensions.Logging;
using Ombi.Core.Services;
using Ombi.Core.Helpers;
+using Ombi.Hubs;
+using Hqub.MusicBrainz.API;
namespace Ombi.DependencyInjection
{
@@ -86,6 +88,7 @@ namespace Ombi.DependencyInjection
services.RegisterServices();
services.RegisterStore();
services.RegisterJobs();
+ services.RegisterHubs();
}
public static void RegisterEngines(this IServiceCollection services)
@@ -171,6 +174,7 @@ namespace Ombi.DependencyInjection
services.AddTransient();
services.AddTransient();
services.AddTransient();
+ services.AddTransient(_ => new MusicBrainzClient());
services.AddTransient();
services.AddTransient();
services.AddTransient();
@@ -231,7 +235,7 @@ namespace Ombi.DependencyInjection
services.AddTransient();
services.AddTransient();
}
-
+
public static void RegisterJobs(this IServiceCollection services)
{
services.AddSingleton();
@@ -268,5 +272,10 @@ namespace Ombi.DependencyInjection
services.AddTransient();
services.AddTransient();
}
+
+ public static void RegisterHubs(this IServiceCollection services)
+ {
+ services.AddScoped();
+ }
}
}
diff --git a/src/Ombi.DependencyInjection/Ombi.DependencyInjection.csproj b/src/Ombi.DependencyInjection/Ombi.DependencyInjection.csproj
index 93b839c07..221afe19a 100644
--- a/src/Ombi.DependencyInjection/Ombi.DependencyInjection.csproj
+++ b/src/Ombi.DependencyInjection/Ombi.DependencyInjection.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/Ombi.HealthChecks/Ombi.HealthChecks.csproj b/src/Ombi.HealthChecks/Ombi.HealthChecks.csproj
index e228dd0d2..fd4ee1900 100644
--- a/src/Ombi.HealthChecks/Ombi.HealthChecks.csproj
+++ b/src/Ombi.HealthChecks/Ombi.HealthChecks.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Ombi.Helpers.Tests/Ombi.Helpers.Tests.csproj b/src/Ombi.Helpers.Tests/Ombi.Helpers.Tests.csproj
index 370440d1c..ba571a1a4 100644
--- a/src/Ombi.Helpers.Tests/Ombi.Helpers.Tests.csproj
+++ b/src/Ombi.Helpers.Tests/Ombi.Helpers.Tests.csproj
@@ -9,10 +9,10 @@
-
+
-
-
+
+
diff --git a/src/Ombi.Helpers/AssemblyHelper.cs b/src/Ombi.Helpers/AssemblyHelper.cs
index 9abc3bf92..472b2a70c 100644
--- a/src/Ombi.Helpers/AssemblyHelper.cs
+++ b/src/Ombi.Helpers/AssemblyHelper.cs
@@ -1,6 +1,4 @@
-using Microsoft.Extensions.PlatformAbstractions;
-using System.Linq;
-using System.Reflection;
+using System;
namespace Ombi.Helpers
{
@@ -8,9 +6,8 @@ namespace Ombi.Helpers
{
public static string GetRuntimeVersion()
{
- ApplicationEnvironment app = PlatformServices.Default.Application;
- var split = app.ApplicationVersion.Split('.');
- return string.Join('.', split.Take(3));
+ Version version = System.Reflection.Assembly.GetEntryAssembly()?.GetName().Version;
+ return version == null ? "1.0.0" : $"{version.Major}.{version.Minor}.{version.Build}";
}
}
}
\ No newline at end of file
diff --git a/src/Ombi.Helpers/Ombi.Helpers.csproj b/src/Ombi.Helpers/Ombi.Helpers.csproj
index 2098fa51f..fd99de0c1 100644
--- a/src/Ombi.Helpers/Ombi.Helpers.csproj
+++ b/src/Ombi.Helpers/Ombi.Helpers.csproj
@@ -11,15 +11,14 @@
-
-
+
+
-
-
-
-
+
+
+
+
-
\ No newline at end of file
diff --git a/src/Ombi.Hubs/INotificationHubService.cs b/src/Ombi.Hubs/INotificationHubService.cs
new file mode 100644
index 000000000..ad97c82aa
--- /dev/null
+++ b/src/Ombi.Hubs/INotificationHubService.cs
@@ -0,0 +1,12 @@
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Ombi.Hubs;
+
+public interface INotificationHubService
+{
+ IEnumerable GetOnlineUsers();
+ Task SendNotificationToAdmins(string data, CancellationToken token = default);
+ Task SendNotificationToAll(string data, CancellationToken token = default);
+}
\ No newline at end of file
diff --git a/src/Ombi.Hubs/NotificationHub.cs b/src/Ombi.Hubs/NotificationHub.cs
index 5e211b093..cb2ebab0e 100644
--- a/src/Ombi.Hubs/NotificationHub.cs
+++ b/src/Ombi.Hubs/NotificationHub.cs
@@ -1,77 +1,50 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.SignalR;
using System.Linq;
using System.Security.Claims;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.SignalR;
using Microsoft.EntityFrameworkCore;
using Ombi.Core.Authentication;
-using Ombi.Helpers;
+using Ombi.Store.Entities;
+
+namespace Ombi.Hubs;
-namespace Ombi.Hubs
+public class NotificationHub : Hub
{
- public class NotificationHub : Hub
+ private readonly OmbiUserManager _userManager;
+ public static readonly ConcurrentDictionary UsersOnline = new();
+
+ public NotificationHub(OmbiUserManager userManager)
{
- public NotificationHub(OmbiUserManager um)
- {
- _userManager = um;
- }
-
- public static ConcurrentDictionary UsersOnline = new ConcurrentDictionary();
-
- public static List AdminConnectionIds
- {
- get
- {
- if (UsersOnline.Any())
- {
- return UsersOnline.Where(x => x.Value.Roles.Contains(OmbiRoles.Admin)).Select(x => x.Key).ToList();
- }
- return Enumerable.Empty().ToList();
- }
- }
-
- public const string NotificationEvent = "Notification";
-
- private readonly OmbiUserManager _userManager;
+ _userManager = userManager;
+ }
- public override async Task OnConnectedAsync()
+ public override async Task OnConnectedAsync()
+ {
+ ClaimsIdentity identity = (ClaimsIdentity)Context.User?.Identity;
+ Claim userIdClaim = identity?.Claims
+ .FirstOrDefault(x => x.Type.Equals("Id", StringComparison.InvariantCultureIgnoreCase));
+ if (userIdClaim == null)
{
- var identity = (ClaimsIdentity) Context.User.Identity;
- var userIdClaim = identity.Claims.FirstOrDefault(x => x.Type.Equals("Id", StringComparison.InvariantCultureIgnoreCase));
- if (userIdClaim == null)
- {
- await base.OnConnectedAsync();
- return;
- }
-
- var user = await _userManager.Users.
- FirstOrDefaultAsync(x => x.Id == userIdClaim.Value);
- var claims = await _userManager.GetRolesAsync(user);
- UsersOnline.TryAdd(Context.ConnectionId, new HubUsers
- {
- UserId = userIdClaim.Value,
- Roles = claims
- });
await base.OnConnectedAsync();
+ return;
}
- public override Task OnDisconnectedAsync(Exception exception)
+ OmbiUser user = await _userManager.Users.FirstOrDefaultAsync(x => x.Id == userIdClaim.Value);
+ IList claims = await _userManager.GetRolesAsync(user);
+ UsersOnline.TryAdd(Context.ConnectionId, new NotificationHubUser
{
- UsersOnline.TryRemove(Context.ConnectionId, out _);
- return base.OnDisconnectedAsync(exception);
- }
-
- public Task Notification(string data)
- {
- return Clients.All.SendAsync(NotificationEvent, data);
- }
+ UserId = userIdClaim.Value,
+ Roles = claims
+ });
+ await base.OnConnectedAsync();
}
- public class HubUsers
+ public override async Task OnDisconnectedAsync(Exception exception)
{
- public string UserId { get; set; }
- public IList Roles { get; set; } = new List();
+ UsersOnline.TryRemove(Context.ConnectionId, out _);
+ await base.OnDisconnectedAsync(exception);
}
-}
+}
\ No newline at end of file
diff --git a/src/Ombi.Hubs/NotificationHubService.cs b/src/Ombi.Hubs/NotificationHubService.cs
new file mode 100644
index 000000000..2544dbeb3
--- /dev/null
+++ b/src/Ombi.Hubs/NotificationHubService.cs
@@ -0,0 +1,44 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.SignalR;
+using Ombi.Helpers;
+
+namespace Ombi.Hubs;
+
+public class NotificationHubService : INotificationHubService
+{
+ public const string NotificationEvent = "Notification";
+
+ private readonly IHubContext _hubContext;
+
+ public NotificationHubService(IHubContext hubContext)
+ {
+ _hubContext = hubContext;
+ }
+
+ public IEnumerable GetOnlineUsers()
+ {
+ return NotificationHub.UsersOnline.Values;
+ }
+
+ public Task SendNotificationToAdmins(string data, CancellationToken token = default)
+ {
+ return _hubContext.Clients
+ .Clients(GetConnectionIdsWithRole(OmbiRoles.Admin))
+ .SendAsync(NotificationEvent, data, token);
+ }
+
+ public Task SendNotificationToAll(string data, CancellationToken token = default)
+ {
+ return _hubContext.Clients.All.SendAsync(NotificationEvent, data, token);
+ }
+
+ private static List GetConnectionIdsWithRole(string role)
+ {
+ return NotificationHub.UsersOnline
+ .Where(x => x.Value.Roles.Contains(role))
+ .Select(x => x.Key).ToList();
+ }
+}
\ No newline at end of file
diff --git a/src/Ombi.Hubs/NotificationHubUser.cs b/src/Ombi.Hubs/NotificationHubUser.cs
new file mode 100644
index 000000000..036fda59d
--- /dev/null
+++ b/src/Ombi.Hubs/NotificationHubUser.cs
@@ -0,0 +1,9 @@
+using System.Collections.Generic;
+
+namespace Ombi.Hubs;
+
+public class NotificationHubUser
+{
+ public string UserId { get; set; }
+ public IList Roles { get; init; } = new List();
+}
\ No newline at end of file
diff --git a/src/Ombi.Hubs/Ombi.Hubs.csproj b/src/Ombi.Hubs/Ombi.Hubs.csproj
index f6bee2eb1..f8f03b5d0 100644
--- a/src/Ombi.Hubs/Ombi.Hubs.csproj
+++ b/src/Ombi.Hubs/Ombi.Hubs.csproj
@@ -7,8 +7,7 @@
-
-
+
diff --git a/src/Ombi.Mapping/Ombi.Mapping.csproj b/src/Ombi.Mapping/Ombi.Mapping.csproj
index 322942cf2..8f120cc6b 100644
--- a/src/Ombi.Mapping/Ombi.Mapping.csproj
+++ b/src/Ombi.Mapping/Ombi.Mapping.csproj
@@ -11,9 +11,9 @@
-
-
-
+
+
+
diff --git a/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj b/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj
index e936c9072..a87b1fafc 100644
--- a/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj
+++ b/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj
@@ -6,14 +6,14 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
diff --git a/src/Ombi.Notifications/Ombi.Notifications.csproj b/src/Ombi.Notifications/Ombi.Notifications.csproj
index 41fd3ae17..d061707fe 100644
--- a/src/Ombi.Notifications/Ombi.Notifications.csproj
+++ b/src/Ombi.Notifications/Ombi.Notifications.csproj
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/src/Ombi.Schedule.Tests/AvailabilityCheckerTests.cs b/src/Ombi.Schedule.Tests/AvailabilityCheckerTests.cs
index d909b7519..1e015b632 100644
--- a/src/Ombi.Schedule.Tests/AvailabilityCheckerTests.cs
+++ b/src/Ombi.Schedule.Tests/AvailabilityCheckerTests.cs
@@ -1,5 +1,4 @@
-using Microsoft.AspNetCore.SignalR;
-using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging;
using MockQueryable.Moq;
using Moq;
using Moq.AutoMock;
@@ -83,7 +82,7 @@ namespace Ombi.Schedule.Tests
EpisodeNumber = 2,
SeasonNumber = 1,
},
- }.AsQueryable().BuildMock().Object;
+ }.AsQueryable().BuildMock();
await _subject.ProcessTvShow(databaseEpisodes, request);
@@ -160,7 +159,7 @@ namespace Ombi.Schedule.Tests
EpisodeNumber = 3,
SeasonNumber = 1,
},
- }.AsQueryable().BuildMock().Object;
+ }.AsQueryable().BuildMock();
await _subject.ProcessTvShow(databaseEpisodes, request);
@@ -183,7 +182,7 @@ namespace Ombi.Schedule.Tests
public class TestAvailabilityChecker : AvailabilityChecker
{
- public TestAvailabilityChecker(ITvRequestRepository tvRequest, INotificationHelper notification, ILogger log, IHubContext hub) : base(tvRequest, notification, log, hub)
+ public TestAvailabilityChecker(ITvRequestRepository tvRequest, INotificationHelper notification, ILogger log, INotificationHubService notificationHubService) : base(tvRequest, notification, log, notificationHubService)
{
}
diff --git a/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs b/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs
index 712fdabee..dbba08d21 100644
--- a/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs
+++ b/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs
@@ -9,7 +9,6 @@ using Ombi.Settings.Settings.Models;
using Ombi.Store.Entities.Requests;
using Ombi.Store.Repository;
using System.Threading.Tasks;
-using MockQueryable;
using MockQueryable.Moq;
namespace Ombi.Schedule.Tests
@@ -51,7 +50,7 @@ namespace Ombi.Schedule.Tests
};
Settings.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new IssueSettings { DeleteIssues = true, DaysAfterResolvedToDelete = 5 });
- Repo.Setup(x => x.GetAll()).Returns(new List(issues).AsQueryable().BuildMock().Object);
+ Repo.Setup(x => x.GetAll()).Returns(new List(issues).AsQueryable().BuildMock());
await Job.Execute(null);
Assert.That(issues.First().Status, Is.EqualTo(IssueStatus.Deleted));
@@ -76,7 +75,7 @@ namespace Ombi.Schedule.Tests
};
Settings.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new IssueSettings { DeleteIssues = true, DaysAfterResolvedToDelete = 5 });
- Repo.Setup(x => x.GetAll()).Returns(new EnumerableQuery(issues).AsQueryable().BuildMock().Object);
+ Repo.Setup(x => x.GetAll()).Returns(new EnumerableQuery(issues).AsQueryable().BuildMock());
await Job.Execute(null);
Assert.That(issues[0].Status, Is.Not.EqualTo(IssueStatus.Deleted));
@@ -102,7 +101,7 @@ namespace Ombi.Schedule.Tests
};
Settings.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new IssueSettings { DeleteIssues = true, DaysAfterResolvedToDelete = 5 });
- Repo.Setup(x => x.GetAll()).Returns(new EnumerableQuery(issues).AsQueryable().BuildMock().Object);
+ Repo.Setup(x => x.GetAll()).Returns(new EnumerableQuery(issues).AsQueryable().BuildMock());
await Job.Execute(null);
Assert.That(issues[0].Status, Is.Not.EqualTo(IssueStatus.Deleted));
diff --git a/src/Ombi.Schedule.Tests/Ombi.Schedule.Tests.csproj b/src/Ombi.Schedule.Tests/Ombi.Schedule.Tests.csproj
index d2215c5f1..bb222da71 100644
--- a/src/Ombi.Schedule.Tests/Ombi.Schedule.Tests.csproj
+++ b/src/Ombi.Schedule.Tests/Ombi.Schedule.Tests.csproj
@@ -7,14 +7,14 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
diff --git a/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs b/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs
index d25bb8413..4e48c7d94 100644
--- a/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs
+++ b/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs
@@ -1,16 +1,11 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
-using System.Linq.Expressions;
-using System.Threading;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
-using Microsoft.AspNetCore.SignalR;
using Moq;
using MockQueryable.Moq;
using NUnit.Framework;
using Ombi.Core;
-using Ombi.Core.Notifications;
using Ombi.Hubs;
using Ombi.Schedule.Jobs.Plex;
using Ombi.Store.Entities;
@@ -50,7 +45,7 @@ namespace Ombi.Schedule.Tests
{
ImdbId = "test"
};
- _mocker.Setup(x => x.GetAll()).Returns(new List { request }.AsQueryable());
+ _mocker.Setup>(x => x.GetAll()).Returns(new List { request }.AsQueryable());
_mocker.Setup>(x => x.Get("test", ProviderType.ImdbId)).ReturnsAsync(new PlexServerContent());
await _subject.Execute(null);
@@ -77,7 +72,7 @@ namespace Ombi.Schedule.Tests
ImdbId = null,
TheMovieDbId = 33
};
- _mocker.Setup(x => x.GetAll()).Returns(new List { request }.AsQueryable());
+ _mocker.Setup>(x => x.GetAll()).Returns(new List { request }.AsQueryable());
_mocker.Setup>(x => x.Get(It.IsAny(), ProviderType.ImdbId)).ReturnsAsync((PlexServerContent)null);
_mocker.Setup>(x => x.Get("33", ProviderType.TheMovieDbId)).ReturnsAsync(new PlexServerContent());
@@ -105,7 +100,7 @@ namespace Ombi.Schedule.Tests
{
ImdbId = "test"
};
- _mocker.Setup(x => x.GetAll()).Returns(new List { request }.AsQueryable());
+ _mocker.Setup>(x => x.GetAll()).Returns(new List { request }.AsQueryable());
_mocker.Setup>(x => x.Get("test", ProviderType.ImdbId)).ReturnsAsync(new PlexServerContent { Quality = "1080p" });
await _subject.Execute(null);
@@ -134,7 +129,7 @@ namespace Ombi.Schedule.Tests
Is4kRequest = true,
Has4KRequest = true,
};
- _mocker.Setup(x => x.GetAll()).Returns(new List { request }.AsQueryable());
+ _mocker.Setup>(x => x.GetAll()).Returns(new List { request }.AsQueryable());
_mocker.Setup>(x => x.Get("test", ProviderType.ImdbId)).ReturnsAsync(new PlexServerContent { Has4K = true });
await _subject.Execute(null);
@@ -162,7 +157,7 @@ namespace Ombi.Schedule.Tests
{
ImdbId = "test"
};
- _mocker.Setup(x => x.GetAll()).Returns(new List { request }.AsQueryable());
+ _mocker.Setup>(x => x.GetAll()).Returns(new List { request }.AsQueryable());
await _subject.Execute(null);
@@ -173,7 +168,7 @@ namespace Ombi.Schedule.Tests
public async Task ProcessTv_ShouldMark_Episode_Available_WhenInPlex_MovieDbId()
{
var request = CreateChildRequest(null, 33, 99);
- _mocker.Setup(x => x.GetChild()).Returns(new List { request }.AsQueryable().BuildMock().Object);
+ _mocker.Setup>(x => x.GetChild()).Returns(new List { request }.AsQueryable().BuildMock());
_mocker.Setup>(x => x.GetAllEpisodes()).Returns(new List
{
new PlexEpisode
@@ -186,7 +181,7 @@ namespace Ombi.Schedule.Tests
EpisodeNumber = 1,
SeasonNumber = 2,
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
await _subject.Execute(null);
@@ -199,7 +194,7 @@ namespace Ombi.Schedule.Tests
public async Task ProcessTv_ShouldMark_Episode_Available_WhenInPlex_ImdbId()
{
var request = CreateChildRequest("abc", -1, 99);
- _mocker.Setup(x => x.GetChild()).Returns(new List { request }.AsQueryable().BuildMock().Object);
+ _mocker.Setup>(x => x.GetChild()).Returns(new List { request }.AsQueryable().BuildMock());
_mocker.Setup>(x => x.GetAllEpisodes()).Returns(new List
{
new PlexEpisode
@@ -211,7 +206,7 @@ namespace Ombi.Schedule.Tests
EpisodeNumber = 1,
SeasonNumber = 2,
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
await _subject.Execute(null);
@@ -224,7 +219,7 @@ namespace Ombi.Schedule.Tests
public async Task ProcessTv_ShouldMark_Episode_Available_By_TitleMatch()
{
var request = CreateChildRequest("abc", -1, 99);
- _mocker.Setup(x => x.GetChild()).Returns(new List { request }.AsQueryable().BuildMock().Object);
+ _mocker.Setup>(x => x.GetChild()).Returns(new List { request }.AsQueryable().BuildMock());
_mocker.Setup>(x => x.GetAllEpisodes()).Returns(new List
{
new PlexEpisode
@@ -237,7 +232,7 @@ namespace Ombi.Schedule.Tests
EpisodeNumber = 1,
SeasonNumber = 2,
}
- }.AsQueryable().BuildMock().Object);
+ }.AsQueryable().BuildMock());
await _subject.Execute(null);
diff --git a/src/Ombi.Schedule.Tests/PlexContentSyncTests.cs b/src/Ombi.Schedule.Tests/PlexContentSyncTests.cs
index 8540f0037..f72971606 100644
--- a/src/Ombi.Schedule.Tests/PlexContentSyncTests.cs
+++ b/src/Ombi.Schedule.Tests/PlexContentSyncTests.cs
@@ -2,9 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
-using System.Text;
using System.Threading.Tasks;
-using Microsoft.Extensions.Logging;
using Moq;
using Moq.AutoMock;
using NUnit.Framework;
@@ -48,7 +46,7 @@ namespace Ombi.Schedule.Tests
};
var contentToAdd = new HashSet();
var contentProcessed = new Dictionary();
- _mocker.Setup(x =>
+ _mocker.Setup>(x =>
x.GetFirstContentByCustom(It.IsAny>>()))
.Returns(Task.FromResult(new PlexServerContent()));
@@ -108,7 +106,7 @@ namespace Ombi.Schedule.Tests
};
var contentToAdd = new HashSet();
var contentProcessed = new Dictionary();
- _mocker.Setup(x => x.GetMetadata(It.IsAny(), It.IsAny(), It.IsAny()))
+ _mocker.Setup>(x => x.GetMetadata(It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(Task.FromResult(new PlexMetadata
{
MediaContainer = new Mediacontainer
@@ -166,7 +164,7 @@ namespace Ombi.Schedule.Tests
};
var contentToAdd = new HashSet();
var contentProcessed = new Dictionary();
- _mocker.Setup(x =>
+ _mocker.Setup>(x =>
x.GetFirstContentByCustom(It.IsAny>>()))
.Returns(Task.FromResult(new PlexServerContent
{
@@ -204,7 +202,7 @@ namespace Ombi.Schedule.Tests
};
var contentToAdd = new HashSet();
var contentProcessed = new Dictionary();
- _mocker.Setup(x =>
+ _mocker.Setup>(x =>
x.GetFirstContentByCustom(It.IsAny>>()))
.Returns(Task.FromResult(new PlexServerContent
{
diff --git a/src/Ombi.Schedule.Tests/PlexWatchlistImportTests.cs b/src/Ombi.Schedule.Tests/PlexWatchlistImportTests.cs
index 64794f010..5e724b6f8 100644
--- a/src/Ombi.Schedule.Tests/PlexWatchlistImportTests.cs
+++ b/src/Ombi.Schedule.Tests/PlexWatchlistImportTests.cs
@@ -9,7 +9,6 @@ using Ombi.Core.Engine.Interfaces;
using Ombi.Core.Models.Requests;
using Ombi.Core.Settings;
using Ombi.Core.Settings.Models.External;
-using Ombi.Core.Tests;
using Ombi.Schedule.Jobs.Plex;
using Ombi.Store.Entities;
using Ombi.Store.Repository;
@@ -39,7 +38,7 @@ namespace Ombi.Schedule.Tests
_context = _mocker.GetMock();
_context.Setup(x => x.CancellationToken).Returns(CancellationToken.None);
_subject = _mocker.CreateInstance();
- _mocker.Setup, IQueryable>(x => x.GetAll()).Returns(new List().AsQueryable().BuildMock().Object);
+ _mocker.Setup, IQueryable