diff --git a/PlexRequests.Core.Migration/MigrationRunner.cs b/PlexRequests.Core.Migration/MigrationRunner.cs index d53ab8d3d..21d0a1863 100644 --- a/PlexRequests.Core.Migration/MigrationRunner.cs +++ b/PlexRequests.Core.Migration/MigrationRunner.cs @@ -4,6 +4,7 @@ using System.Data.Common; using System.Linq; using System.Reflection; using Ninject; +using NLog; using PlexRequests.Store; namespace PlexRequests.Core.Migration @@ -18,6 +19,7 @@ namespace PlexRequests.Core.Migration private IKernel Kernel { get; } private ISqliteConfiguration Db { get; } + private static Logger _log = LogManager.GetCurrentClassLogger(); public void MigrateToLatest() { @@ -25,25 +27,34 @@ namespace PlexRequests.Core.Migration var versions = GetMigrations(); var dbVersion = con.GetVersionInfo().OrderByDescending(x => x.Version).FirstOrDefault() ?? - new TableCreation.VersionInfo { Version = 0 }; + new TableCreation.VersionInfo {Version = 0}; foreach (var v in versions) { #if !DEBUG if (v.Value.Version > dbVersion.Version) { #endif - // Assuming only one constructor - var ctor = v.Key.GetConstructors().FirstOrDefault(); - var dependencies = ctor.GetParameters().Select(param => Kernel.Get(param.ParameterType)).ToList(); - - var method = v.Key.GetMethod("Start"); - if (method != null) + try { - var classInstance = Activator.CreateInstance(v.Key, dependencies.Any() ? dependencies.ToArray() : null); - var parametersArray = new object[] { Db.DbConnection() }; + // Assuming only one constructor + var ctor = v.Key.GetConstructors().FirstOrDefault(); + var dependencies = ctor.GetParameters().Select(param => Kernel.Get(param.ParameterType)).ToList(); + + var method = v.Key.GetMethod("Start"); + if (method != null) + { + var classInstance = Activator.CreateInstance(v.Key, dependencies.Any() ? dependencies.ToArray() : null); + var parametersArray = new object[] { Db.DbConnection() }; - method.Invoke(classInstance, parametersArray); + method.Invoke(classInstance, parametersArray); + } } + catch (Exception e) + { + _log.Fatal("Error when migrating version : {0}", v.Value.Version); + _log.Fatal(e); + } + #if !DEBUG } #endif diff --git a/PlexRequests.Core.Migration/Migrations/Version1100.cs b/PlexRequests.Core.Migration/Migrations/Version1100.cs index 7e23cbdbe..aa776230b 100644 --- a/PlexRequests.Core.Migration/Migrations/Version1100.cs +++ b/PlexRequests.Core.Migration/Migrations/Version1100.cs @@ -1,4 +1,5 @@ #region Copyright + // /************************************************************************ // Copyright (c) 2016 Jamie Rees // File: Version1100.cs @@ -23,16 +24,15 @@ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // ************************************************************************/ + #endregion using System; -using System.Collections.Generic; using System.Data; using NLog; using System.Linq; using PlexRequests.Api.Interfaces; using PlexRequests.Core.SettingModels; -using PlexRequests.Core.Users; using PlexRequests.Helpers; using PlexRequests.Helpers.Permissions; using PlexRequests.Store; @@ -44,8 +44,10 @@ namespace PlexRequests.Core.Migration.Migrations [Migration(11000, "v1.10.0.0")] public class Version1100 : BaseMigration, IMigration { - public Version1100(IUserRepository userRepo, IRequestService requestService, ISettingsService log, IPlexApi plexApi, ISettingsService plexService, - IPlexUserRepository plexusers, ISettingsService prSettings, ISettingsService umSettings, + public Version1100(IUserRepository userRepo, IRequestService requestService, ISettingsService log, + IPlexApi plexApi, ISettingsService plexService, + IPlexUserRepository plexusers, ISettingsService prSettings, + ISettingsService umSettings, ISettingsService sjs, IRepository usersToNotify) { UserRepo = userRepo; @@ -59,7 +61,9 @@ namespace PlexRequests.Core.Migration.Migrations ScheduledJobSettings = sjs; UserNotifyRepo = usersToNotify; } + public int Version => 11000; + private IUserRepository UserRepo { get; } private IRequestService RequestService { get; } private ISettingsService Log { get; } @@ -71,6 +75,9 @@ namespace PlexRequests.Core.Migration.Migrations private ISettingsService ScheduledJobSettings { get; } private IRepository UserNotifyRepo { get; } + + private static Logger Logger = LogManager.GetCurrentClassLogger(); + public void Start(IDbConnection con) { UpdateDb(con); @@ -89,190 +96,250 @@ namespace PlexRequests.Core.Migration.Migrations private void MigrateUserNotifications() { - var usersToNotify = UserNotifyRepo.GetAll(); - var plexUsers = PlexUsers.GetAll().ToList(); - var users = UserRepo.GetAll().ToList(); - - if (usersToNotify == null) + try { - return; - } + var usersToNotify = UserNotifyRepo.GetAll(); + var plexUsers = PlexUsers.GetAll().ToList(); + var users = UserRepo.GetAll().ToList(); - foreach (var u in usersToNotify) - { - var selectedPlexUser = plexUsers.FirstOrDefault(x => x.Username.Equals(u.Username, StringComparison.CurrentCultureIgnoreCase)); - if (selectedPlexUser != null) + if (usersToNotify == null) { - selectedPlexUser.Features += (int)Features.RequestAddedNotification; - PlexUsers.Update(selectedPlexUser); + return; } - var selectedLocalUser = - users.FirstOrDefault(x => x.UserName.Equals(u.Username, StringComparison.CurrentCultureIgnoreCase)); - if (selectedLocalUser != null) + foreach (var u in usersToNotify) { - selectedLocalUser.Features += (int)Features.RequestAddedNotification; - UserRepo.Update(selectedLocalUser); + var selectedPlexUser = + plexUsers.FirstOrDefault( + x => x.Username.Equals(u.Username, StringComparison.CurrentCultureIgnoreCase)); + if (selectedPlexUser != null) + { + selectedPlexUser.Features += (int)Features.RequestAddedNotification; + PlexUsers.Update(selectedPlexUser); + } + + var selectedLocalUser = + users.FirstOrDefault(x => x.UserName.Equals(u.Username, StringComparison.CurrentCultureIgnoreCase)); + if (selectedLocalUser != null) + { + selectedLocalUser.Features += (int)Features.RequestAddedNotification; + UserRepo.Update(selectedLocalUser); + } } - + } + catch (Exception e) + { + Logger.Fatal("Exception when migrating Version 1.10.0 (UpdateScheduledJobs)"); + Logger.Fatal(e); } } private void UpdateScheduledJobs() { - var settings = ScheduledJobSettings.GetSettings(); + try + { + var settings = ScheduledJobSettings.GetSettings(); - settings.PlexUserChecker = 24; - settings.PlexContentCacher = 60; + settings.PlexUserChecker = 24; + settings.PlexContentCacher = 60; - ScheduledJobSettings.SaveSettings(settings); + ScheduledJobSettings.SaveSettings(settings); + } + catch (Exception e) + { + Logger.Fatal("Exception when migrating Version 1.10.0 (UpdateScheduledJobs)"); + Logger.Fatal(e); + } } private void PopulateDefaultUserManagementSettings() { - var plexRequestSettings = PlexRequestSettings.GetSettings(); - - UserManagementSettings.SaveSettings(new UserManagementSettings + try { - AutoApproveMovies = !plexRequestSettings.RequireMovieApproval, - RequestTvShows = plexRequestSettings.SearchForTvShows, - RequestMusic = plexRequestSettings.SearchForMusic, - RequestMovies = plexRequestSettings.SearchForMovies, - AutoApproveMusic = !plexRequestSettings.RequireMusicApproval, - AutoApproveTvShows = !plexRequestSettings.RequireTvShowApproval - }); - } + var plexRequestSettings = PlexRequestSettings.GetSettings(); - private void UpdatePlexUsers() - { - var settings = PlexSettings.GetSettings(); - if (string.IsNullOrEmpty(settings.PlexAuthToken)) - { - return; + UserManagementSettings.SaveSettings(new UserManagementSettings + { + AutoApproveMovies = !plexRequestSettings.RequireMovieApproval, + RequestTvShows = plexRequestSettings.SearchForTvShows, + RequestMusic = plexRequestSettings.SearchForMusic, + RequestMovies = plexRequestSettings.SearchForMovies, + AutoApproveMusic = !plexRequestSettings.RequireMusicApproval, + AutoApproveTvShows = !plexRequestSettings.RequireTvShowApproval + }); } - var plexUsers = PlexApi.GetUsers(settings.PlexAuthToken); - - if (plexUsers?.User == null) + catch (Exception e) { - return; + Logger.Fatal("Exception when migrating Version 1.10.0 (PopulateDefaultUserMngmentSettings)"); + Logger.Fatal(e); } + } - var prSettings = PlexRequestSettings.GetSettings(); - - var dbUsers = PlexUsers.GetAll().ToList(); - foreach (var user in plexUsers.User) + private void UpdatePlexUsers() + { + try { - if (dbUsers.FirstOrDefault(x => x.PlexUserId == user.Id) != null) + var settings = PlexSettings.GetSettings(); + if (string.IsNullOrEmpty(settings.PlexAuthToken)) { - continue; + return; } + var plexUsers = PlexApi.GetUsers(settings.PlexAuthToken); - int permissions = 0; - if (prSettings.SearchForMovies) - { - permissions = (int)Permissions.RequestMovie; - } - if (prSettings.SearchForTvShows) + if (plexUsers?.User == null) { - permissions += (int)Permissions.RequestTvShow; - } - if (prSettings.SearchForMusic) - { - permissions += (int)Permissions.RequestMusic; - } - if (!prSettings.RequireMovieApproval) - { - permissions += (int)Permissions.AutoApproveMovie; - } - if (!prSettings.RequireTvShowApproval) - { - permissions += (int)Permissions.AutoApproveTv; - } - if (!prSettings.RequireMusicApproval) - { - permissions += (int)Permissions.AutoApproveAlbum; + return; } - // Add report Issues + var prSettings = PlexRequestSettings.GetSettings(); - permissions += (int)Permissions.ReportIssue; - - var m = new PlexUsers + var dbUsers = PlexUsers.GetAll().ToList(); + foreach (var user in plexUsers.User) { - PlexUserId = user.Id, - Permissions = permissions, - Features = 0, - UserAlias = string.Empty, - EmailAddress = user.Email, - Username = user.Username, - LoginId = Guid.NewGuid().ToString() - }; - - PlexUsers.Insert(m); + if (dbUsers.FirstOrDefault(x => x.PlexUserId == user.Id) != null) + { + continue; + } + + int permissions = 0; + if (prSettings.SearchForMovies) + { + permissions = (int)Permissions.RequestMovie; + } + if (prSettings.SearchForTvShows) + { + permissions += (int)Permissions.RequestTvShow; + } + if (prSettings.SearchForMusic) + { + permissions += (int)Permissions.RequestMusic; + } + if (!prSettings.RequireMovieApproval) + { + permissions += (int)Permissions.AutoApproveMovie; + } + if (!prSettings.RequireTvShowApproval) + { + permissions += (int)Permissions.AutoApproveTv; + } + if (!prSettings.RequireMusicApproval) + { + permissions += (int)Permissions.AutoApproveAlbum; + } + + // Add report Issues + + permissions += (int)Permissions.ReportIssue; + + var m = new PlexUsers + { + PlexUserId = user.Id, + Permissions = permissions, + Features = 0, + UserAlias = string.Empty, + EmailAddress = user.Email, + Username = user.Username, + LoginId = Guid.NewGuid().ToString() + }; + + PlexUsers.Insert(m); + } + } + catch (Exception e) + { + Logger.Fatal("Exception when migrating Version 1.10.0 (UpdatePlexUsers)"); + Logger.Fatal(e); } - } private void ResetLogLevel() { - var logSettings = Log.GetSettings(); - logSettings.Level = LogLevel.Error.Ordinal; - Log.SaveSettings(logSettings); + try + { + var logSettings = Log.GetSettings(); + logSettings.Level = LogLevel.Error.Ordinal; + Log.SaveSettings(logSettings); - LoggingHelper.ReconfigureLogLevel(LogLevel.FromOrdinal(logSettings.Level)); + LoggingHelper.ReconfigureLogLevel(LogLevel.FromOrdinal(logSettings.Level)); + } + catch (Exception e) + { + Logger.Fatal("Exception when migrating Version 1.10.0 (ResetLogLvl)"); + Logger.Fatal(e); + } } private void UpdateDb(IDbConnection con) { - // Create the two new columns - con.AlterTable("Users", "ADD", "Permissions", true, "INTEGER"); - con.AlterTable("Users", "ADD", "Features", true, "INTEGER"); - - con.AlterTable("PlexUsers", "ADD", "Permissions", true, "INTEGER"); - con.AlterTable("PlexUsers", "ADD", "Features", true, "INTEGER"); - con.AlterTable("PlexUsers", "ADD", "Username", true, "VARCHAR(100)"); - con.AlterTable("PlexUsers", "ADD", "EmailAddress", true, "VARCHAR(100)"); - con.AlterTable("PlexUsers", "ADD", "LoginId", true, "VARCHAR(100)"); - - //https://image.tmdb.org/t/p/w150/https://image.tmdb.org/t/p/w150//aqhAqttDq7zgsTaBHtCD8wmTk6k.jpg - - // UI = https://image.tmdb.org/t/p/w150/{{posterPath}} - // Update old invalid posters - var allRequests = RequestService.GetAll(); - if (allRequests == null) - { - return; - } - var requestedModels = allRequests as RequestedModel[] ?? allRequests.ToArray(); - foreach (var req in requestedModels) + try { - if (req.PosterPath.Contains("https://image.tmdb.org/t/p/w150/")) + // Create the two new columns + con.AlterTable("Users", "ADD", "Permissions", true, "INTEGER"); + con.AlterTable("Users", "ADD", "Features", true, "INTEGER"); + + con.AlterTable("PlexUsers", "ADD", "Permissions", true, "INTEGER"); + con.AlterTable("PlexUsers", "ADD", "Features", true, "INTEGER"); + con.AlterTable("PlexUsers", "ADD", "Username", true, "VARCHAR(100)"); + con.AlterTable("PlexUsers", "ADD", "EmailAddress", true, "VARCHAR(100)"); + con.AlterTable("PlexUsers", "ADD", "LoginId", true, "VARCHAR(100)"); + + //https://image.tmdb.org/t/p/w150/https://image.tmdb.org/t/p/w150//aqhAqttDq7zgsTaBHtCD8wmTk6k.jpg + + // UI = https://image.tmdb.org/t/p/w150/{{posterPath}} + // Update old invalid posters + var allRequests = RequestService.GetAll(); + if (allRequests == null) { - var newImg = req.PosterPath.Replace("https://image.tmdb.org/t/p/w150/", string.Empty); - req.PosterPath = newImg; + return; } + var requestedModels = allRequests.ToList(); + foreach (var req in requestedModels) + { + if (string.IsNullOrEmpty(req.PosterPath)) + { + continue; + } + if (req.PosterPath.Contains("https://image.tmdb.org/t/p/w150/")) + { + var newImg = req.PosterPath.Replace("https://image.tmdb.org/t/p/w150/", string.Empty); + req.PosterPath = newImg; + } + } + RequestService.BatchUpdate(requestedModels); + } + catch (Exception e) + { + Logger.Fatal("Exception when migrating Version 1.10.0 (UpdateDb)"); + Logger.Fatal(e); } - RequestService.BatchUpdate(requestedModels); } private void UpdateAdmin() { - var users = UserRepo.GetAll().ToList(); + try + { + var users = UserRepo.GetAll().ToList(); - foreach (var user in users) + foreach (var user in users) + { + user.Permissions = (int) + (Permissions.Administrator + | Permissions.ReportIssue + | Permissions.RequestMusic + | Permissions.RequestTvShow + | Permissions.RequestMovie + | Permissions.AutoApproveAlbum + | Permissions.AutoApproveMovie + | Permissions.AutoApproveTv); + } + + UserRepo.UpdateAll(users); + } + catch (Exception e) { - user.Permissions = (int) - (Permissions.Administrator - | Permissions.ReportIssue - | Permissions.RequestMusic - | Permissions.RequestTvShow - | Permissions.RequestMovie - | Permissions.AutoApproveAlbum - | Permissions.AutoApproveMovie - | Permissions.AutoApproveTv); + Logger.Fatal("Exception when migrating Version 1.10.0 (UpdateAdmin)"); + Logger.Fatal(e); } - - UserRepo.UpdateAll(users); } } } diff --git a/PlexRequests.Helpers/Analytics/Analytics.cs b/PlexRequests.Helpers/Analytics/Analytics.cs index ed7eed4fd..67a92ed33 100644 --- a/PlexRequests.Helpers/Analytics/Analytics.cs +++ b/PlexRequests.Helpers/Analytics/Analytics.cs @@ -49,41 +49,89 @@ namespace PlexRequests.Helpers.Analytics public void TrackEvent(Category category, Action action, string label, string username, string clientId, int? value = null) { - var cat = category.ToString(); - var act = action.ToString(); - Track(HitType.@event, username, cat, act, label, clientId, value); + try + { + + var cat = category.ToString(); + var act = action.ToString(); + Track(HitType.@event, username, cat, act, label, clientId, value); + } + catch (Exception ex) + { + Log.Error(ex); + } } public async void TrackEventAsync(Category category, Action action, string label, string username, string clientId, int? value = null) { - var cat = category.ToString(); - var act = action.ToString(); - await TrackAsync(HitType.@event, username, cat, act, clientId, label, value); + try + { + var cat = category.ToString(); + var act = action.ToString(); + await TrackAsync(HitType.@event, username, cat, act, clientId, label, value); + + } + catch (Exception ex) + { + Log.Error(ex); + } } public void TrackPageview(Category category, Action action, string label, string username, string clientId, int? value = null) { - var cat = category.ToString(); - var act = action.ToString(); - Track(HitType.@pageview, username, cat, act, clientId, label, value); + try + { + var cat = category.ToString(); + var act = action.ToString(); + Track(HitType.@pageview, username, cat, act, clientId, label, value); + + } + catch (Exception ex) + { + Log.Error(ex); + } } public async Task TrackPageviewAsync(Category category, Action action, string label, string username, string clientId, int? value = null) { - var cat = category.ToString(); - var act = action.ToString(); - await TrackAsync(HitType.@pageview, username, cat, act, clientId, label, value); + try + { + var cat = category.ToString(); + var act = action.ToString(); + await TrackAsync(HitType.@pageview, username, cat, act, clientId, label, value); + + } + catch (Exception ex) + { + Log.Error(ex); + } } public void TrackException(string message, string username, string clientId, bool fatal) { - var fatalInt = fatal ? 1 : 0; - Track(HitType.exception, message, fatalInt, username, clientId); + try + { + + var fatalInt = fatal ? 1 : 0; + Track(HitType.exception, message, fatalInt, username, clientId); + } + catch (Exception ex) + { + Log.Error(ex); + } } public async Task TrackExceptionAsync(string message, string username, string clientId, bool fatal) { - var fatalInt = fatal ? 1 : 0; - await TrackAsync(HitType.exception, message, fatalInt, username, clientId); + try + { + + var fatalInt = fatal ? 1 : 0; + await TrackAsync(HitType.exception, message, fatalInt, username, clientId); + } + catch (Exception ex) + { + Log.Error(ex); + } } private void Track(HitType type, string username, string category, string action, string clientId, string label, int? value = null) diff --git a/PlexRequests.Services/Jobs/RecentlyAdded.cs b/PlexRequests.Services/Jobs/RecentlyAdded.cs index cccc020b4..fac9a5730 100644 --- a/PlexRequests.Services/Jobs/RecentlyAdded.cs +++ b/PlexRequests.Services/Jobs/RecentlyAdded.cs @@ -511,7 +511,7 @@ namespace PlexRequests.Services.Jobs private void EndLoopHtml(StringBuilder sb) { - sb.Append(""); sb.Append("
"); sb.Append("
"); sb.Append("
"); diff --git a/PlexRequests.UI/Modules/Admin/SystemStatusModule.cs b/PlexRequests.UI/Modules/Admin/SystemStatusModule.cs index 3f5b33947..32bc92abe 100644 --- a/PlexRequests.UI/Modules/Admin/SystemStatusModule.cs +++ b/PlexRequests.UI/Modules/Admin/SystemStatusModule.cs @@ -28,6 +28,8 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.IO; +using System.Reflection; using System.Threading.Tasks; using MarkdownSharp; using Nancy; @@ -118,10 +120,23 @@ namespace PlexRequests.UI.Modules.Admin Analytics.TrackEventAsync(Category.Admin, PlexRequests.Helpers.Analytics.Action.Update, "AutoUpdate", Username, CookieHelper.GetAnalyticClientId(Cookies)); var url = Request.Form["url"]; + var args = (string)Request.Form["args"].ToString(); + var lowered = args.ToLower(); + var appPath = Path.Combine(Path.GetDirectoryName(Assembly.GetAssembly(typeof(SystemStatusModule)).Location ?? string.Empty) ?? string.Empty, "PlexRequests.Updater.exe"); + + if (!string.IsNullOrEmpty(lowered)) + { + if (lowered.Contains("plexrequests.exe")) + { + lowered = lowered.Replace("plexrequests.exe", ""); + } + } + + var startArgs = string.IsNullOrEmpty(lowered) ? appPath : $"{lowered} Plexrequests.Updater.exe"; var startInfo = Type.GetType("Mono.Runtime") != null - ? new ProcessStartInfo("mono PlexRequests.Updater.exe") { Arguments = url } - : new ProcessStartInfo("PlexRequests.Updater.exe") { Arguments = url }; + ? new ProcessStartInfo(startArgs) { Arguments = $"{url} {lowered}", } + : new ProcessStartInfo(startArgs) { Arguments = $"{url} {lowered}" }; Process.Start(startInfo); diff --git a/PlexRequests.UI/Program.cs b/PlexRequests.UI/Program.cs index 2153aca13..76f00396e 100644 --- a/PlexRequests.UI/Program.cs +++ b/PlexRequests.UI/Program.cs @@ -128,7 +128,7 @@ namespace PlexRequests.UI private static void WriteOutVersion() { - var assemblyVer = AssemblyHelper.GetProductVersion(); + var assemblyVer = AssemblyHelper.GetFileVersion(); Log.Info($"Version: {assemblyVer}"); Console.WriteLine($"Version: {assemblyVer}"); } diff --git a/PlexRequests.UI/Views/Admin/Logs.cshtml b/PlexRequests.UI/Views/Admin/Logs.cshtml index a28aee738..3e4916fe3 100644 --- a/PlexRequests.UI/Views/Admin/Logs.cshtml +++ b/PlexRequests.UI/Views/Admin/Logs.cshtml @@ -41,7 +41,7 @@ - +
@@ -63,7 +63,7 @@ var logsUrl = "/admin/loadlogs"; var url = createBaseUrl(baseUrl, logsUrl); - $('#example').DataTable({ + $('#logDatatable').DataTable({ "ajax": url, "columns": [ { "data": "message" }, @@ -147,5 +147,8 @@ }); + $('body .dropdown-toggle').dropdown(); + + }); \ No newline at end of file diff --git a/PlexRequests.UI/Views/Admin/Settings.cshtml b/PlexRequests.UI/Views/Admin/Settings.cshtml index 2951b5162..653e3d734 100644 --- a/PlexRequests.UI/Views/Admin/Settings.cshtml +++ b/PlexRequests.UI/Views/Admin/Settings.cshtml @@ -57,7 +57,6 @@
-
diff --git a/PlexRequests.UI/Views/SystemStatus/Status.cshtml b/PlexRequests.UI/Views/SystemStatus/Status.cshtml index 6b1c65403..9dd06986a 100644 --- a/PlexRequests.UI/Views/SystemStatus/Status.cshtml +++ b/PlexRequests.UI/Views/SystemStatus/Status.cshtml @@ -11,7 +11,7 @@
- + @if (Model.Status.UpdateAvailable) {
@@ -50,6 +50,8 @@ {
+ +
} else @@ -92,7 +94,10 @@ $.ajax({ type: "Post", url: "autoupdate", - data: { url: "@Model.Status.DownloadUri" }, + data: { + url: "@Model.Status.DownloadUri", + args: $('#args').val() + }, dataType: "json", error: function () { setTimeout( diff --git a/PlexRequests.Updater/Program.cs b/PlexRequests.Updater/Program.cs index 98692c11d..122f84966 100644 --- a/PlexRequests.Updater/Program.cs +++ b/PlexRequests.Updater/Program.cs @@ -8,7 +8,14 @@ namespace PlexRequests.Updater { Console.WriteLine ("Starting PlexRequests .Net updater"); var s = new Updater(); - s.Start(args[0]); + if (args.Length >= 2) + { + s.Start(args[0], args[1]); + } + else + { + s.Start(args[0], string.Empty); + } } } } diff --git a/PlexRequests.Updater/Updater.cs b/PlexRequests.Updater/Updater.cs index 2b32317b0..2b04776eb 100644 --- a/PlexRequests.Updater/Updater.cs +++ b/PlexRequests.Updater/Updater.cs @@ -29,6 +29,7 @@ using System.Diagnostics; using System.IO; using System.IO.Compression; using System.Net; +using System.Reflection; using System.Windows.Forms; namespace PlexRequests.Updater @@ -67,7 +68,7 @@ namespace PlexRequests.Updater } } - public void Start(string downloadPath) + public void Start(string downloadPath, string launchOptions) { try { @@ -79,6 +80,10 @@ namespace PlexRequests.Updater Console.WriteLine("Downloading new version"); using (var client = new WebClient()) { + client.DownloadProgressChanged += (s, e) => + { + Console.WriteLine($"{e.ProgressPercentage}%"); + }; client.DownloadFile(downloadPath, TempPath); } Console.WriteLine("Downloaded!"); @@ -130,7 +135,7 @@ namespace PlexRequests.Updater RestoreBackup(); } - FinishUpdate(); + FinishUpdate(launchOptions); } } @@ -139,8 +144,9 @@ namespace PlexRequests.Updater Console.WriteLine("Backing up the current version"); try { - var dir = Directory.CreateDirectory("BackupSystem"); - var applicationPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath)); + var applicationPath = Path.GetDirectoryName(Assembly.GetAssembly(typeof(Updater)).Location ?? string.Empty) ?? string.Empty; + + var dir = Directory.CreateDirectory(Path.Combine(applicationPath, "BackupSystem")); var allfiles = Directory.GetFiles(applicationPath, "*.*", SearchOption.AllDirectories); BackupPath = Path.Combine(dir.FullName, "PlexRequestsBackup.zip"); @@ -179,7 +185,9 @@ namespace PlexRequests.Updater { try { - return Directory.CreateDirectory("UpdateTemp"); + var location = Path.GetDirectoryName(Assembly.GetAssembly(typeof(Updater)).Location ?? string.Empty); + var path = Path.Combine(location, "UpdateTemp"); + return Directory.CreateDirectory(path); } catch (Exception e) { @@ -190,15 +198,13 @@ namespace PlexRequests.Updater } } - private void FinishUpdate() + private void FinishUpdate(string launchOptions) { - ProcessStartInfo startInfo; - startInfo = Type.GetType("Mono.Runtime") != null - ? new ProcessStartInfo("mono PlexRequests.exe") { Arguments = Error ? "-u 2" : "-u 1" } - : new ProcessStartInfo("PlexRequests.exe") { Arguments = Error ? "-u 2" : "-u 1" }; + var args = Error ? "-u 2" : "-u 1"; + var startInfo = new ProcessStartInfo($"{launchOptions}PlexRequests.exe") { Arguments = args, UseShellExecute = true }; Process.Start(startInfo); - + Environment.Exit(0); } } diff --git a/README.md b/README.md index 43fa06ea3..51425bda6 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,6 @@ ____ [![Github All Releases](https://img.shields.io/github/downloads/tidusjar/PlexRequests.net/total.svg)](https://github.com/tidusjar/PlexRequests.Net) [![Stories in Progress](https://badge.waffle.io/tidusjar/PlexRequests.Net.svg?label=in progress&title=In Progress)](http://waffle.io/tidusjar/PlexRequests.Net) -This is based off [Plex Requests by lokenx](https://github.com/lokenx/plexrequests-meteor) so big props to that guy! -I wanted to write a similar application in .Net! # Features Here some of the features Plex Requests.Net has:
Message