From f53eb36dd0382fe08a3e0d4df7ddb5632df14ef4 Mon Sep 17 00:00:00 2001 From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com> Date: Sat, 27 Apr 2024 20:11:40 +0200 Subject: [PATCH] Add UserAgent setting --- src/Markdowser/Models/Settings.cs | 3 +++ src/Markdowser/ViewModels/MainWindowViewModel.cs | 8 +++++++- src/Markdowser/ViewModels/SettingsViewModel.cs | 6 ++++++ src/Markdowser/Views/SettingsView.axaml | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Markdowser/Models/Settings.cs b/src/Markdowser/Models/Settings.cs index 4179104..1188d85 100644 --- a/src/Markdowser/Models/Settings.cs +++ b/src/Markdowser/Models/Settings.cs @@ -1,6 +1,7 @@ using Markdowser.Utilities; using System.IO; +using System.Reflection; using System.Text.Json; namespace Markdowser.Models; @@ -15,6 +16,8 @@ public class Settings public string? HomeUrl { get; set; } + public string UserAgent { get; set; } = $"{Assembly.GetExecutingAssembly().GetName().Name}/{Assembly.GetExecutingAssembly().GetName().Version?.ToString()}"; + public static void SaveSettings() { if (!Directory.Exists(Configuration.ApplicationDataPath)) diff --git a/src/Markdowser/ViewModels/MainWindowViewModel.cs b/src/Markdowser/ViewModels/MainWindowViewModel.cs index 44fcc0c..78dbad7 100644 --- a/src/Markdowser/ViewModels/MainWindowViewModel.cs +++ b/src/Markdowser/ViewModels/MainWindowViewModel.cs @@ -161,7 +161,6 @@ public partial class MainWindowViewModel : ViewModelBase public MainWindowViewModel() { - httpClient.DefaultRequestHeaders.UserAgent.ParseAdd($"{nameof(Markdowser)}/{Assembly.GetExecutingAssembly().GetName().Version?.ToString()}"); httpClient.Timeout = TimeSpan.FromSeconds(10); content = DefaultContent; @@ -232,6 +231,13 @@ public partial class MainWindowViewModel : ViewModelBase } } + httpClient.DefaultRequestHeaders.UserAgent.Clear(); + if (!httpClient.DefaultRequestHeaders.UserAgent.TryParseAdd(Settings.Current.UserAgent)) + { + WindowNotificationManager.Show(new Notification("Invalid User Agent", "Failed to set user agent.", NotificationType.Error)); + return; + } + IsBusy = true; Progress = 0; diff --git a/src/Markdowser/ViewModels/SettingsViewModel.cs b/src/Markdowser/ViewModels/SettingsViewModel.cs index 7d80466..b4d9d9c 100644 --- a/src/Markdowser/ViewModels/SettingsViewModel.cs +++ b/src/Markdowser/ViewModels/SettingsViewModel.cs @@ -16,6 +16,12 @@ public class SettingsViewModel : ViewModelBase set => Settings.Current.SearchEngineUrl = value; } + public string UserAgent + { + get => Settings.Current.UserAgent; + set => Settings.Current.UserAgent = value; + } + public bool DarkMode { get => Settings.Current.DarkMode; diff --git a/src/Markdowser/Views/SettingsView.axaml b/src/Markdowser/Views/SettingsView.axaml index 53a8ff8..4135a5e 100644 --- a/src/Markdowser/Views/SettingsView.axaml +++ b/src/Markdowser/Views/SettingsView.axaml @@ -28,5 +28,8 @@ + + + \ No newline at end of file