Remove duplicate user agent code

This commit is contained in:
UrbanCMC 2023-08-09 21:29:34 +02:00
parent 6399ef07d5
commit 63eaffd9e3
5 changed files with 36 additions and 33 deletions

View File

@ -8,6 +8,7 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.VisualBasic.CompilerServices; using Microsoft.VisualBasic.CompilerServices;
using Newtonsoft.Json; using Newtonsoft.Json;
using Wabbajack.Common;
using Wabbajack.Downloaders; using Wabbajack.Downloaders;
using Wabbajack.DTOs; using Wabbajack.DTOs;
using Wabbajack.DTOs.DownloadStates; using Wabbajack.DTOs.DownloadStates;
@ -146,7 +147,7 @@ namespace Wabbajack
private HttpRequestMessage MakeMessage(Uri uri) private HttpRequestMessage MakeMessage(Uri uri)
{ {
var msg = new HttpRequestMessage(HttpMethod.Get, uri); var msg = new HttpRequestMessage(HttpMethod.Get, uri);
msg.UseChromeUserAgent(); msg.AddChromeAgent();
return msg; return msg;
} }

View File

@ -8,6 +8,7 @@ using System.Threading.Tasks;
using System.Web; using System.Web;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using ReactiveUI; using ReactiveUI;
using Wabbajack.Common;
using Wabbajack.DTOs.Interventions; using Wabbajack.DTOs.Interventions;
using Wabbajack.DTOs.Logins; using Wabbajack.DTOs.Logins;
using Wabbajack.Messages; using Wabbajack.Messages;
@ -88,8 +89,7 @@ public abstract class OAuth2LoginHandler<TLoginType> : BrowserWindowViewModel
var msg = new HttpRequestMessage(); var msg = new HttpRequestMessage();
msg.Method = HttpMethod.Post; msg.Method = HttpMethod.Post;
msg.RequestUri = tlogin.TokenEndpoint; msg.RequestUri = tlogin.TokenEndpoint;
msg.Headers.Add("User-Agent", msg.AddChromeAgent();
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36");
msg.Headers.Add("Cookie", string.Join(";", cookies.Select(c => $"{c.Name}={c.Value}"))); msg.Headers.Add("Cookie", string.Join(";", cookies.Select(c => $"{c.Name}={c.Value}")));
msg.Content = new FormUrlEncodedContent(formData.ToList()); msg.Content = new FormUrlEncodedContent(formData.ToList());

View File

@ -14,12 +14,21 @@ namespace Wabbajack.Common;
public static class HttpExtensions public static class HttpExtensions
{ {
private const string ChromeUserAgent =
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36";
public static HttpRequestMessage AddCookies(this HttpRequestMessage msg, Cookie[] cookies) public static HttpRequestMessage AddCookies(this HttpRequestMessage msg, Cookie[] cookies)
{ {
msg.Headers.Add("Cookie", string.Join(";", cookies.Select(c => $"{c.Name}={c.Value}"))); msg.Headers.Add("Cookie", string.Join(";", cookies.Select(c => $"{c.Name}={c.Value}")));
return msg; return msg;
} }
public static HttpRequestMessage AddChromeAgent(this HttpRequestMessage msg, string? overrideUserAgent = null)
{
msg.Headers.UserAgent.Clear();
msg.Headers.Add("User-Agent", overrideUserAgent ?? ChromeUserAgent);
return msg;
}
public static HttpRequestMessage AddHeaders(this HttpRequestMessage msg, IEnumerable<(string Key, string Value)> headers) public static HttpRequestMessage AddHeaders(this HttpRequestMessage msg, IEnumerable<(string Key, string Value)> headers)
{ {
foreach (var header in headers) foreach (var header in headers)
@ -32,7 +41,7 @@ public static class HttpExtensions
public static HttpRequestMessage ToHttpRequestMessage(this ManualDownload.BrowserDownloadState browserState) public static HttpRequestMessage ToHttpRequestMessage(this ManualDownload.BrowserDownloadState browserState)
{ {
var msg = new HttpRequestMessage(HttpMethod.Get, browserState.Uri); var msg = new HttpRequestMessage(HttpMethod.Get, browserState.Uri);
msg.Headers.Add("User-Agent", browserState.UserAgent); msg.AddChromeAgent(browserState.UserAgent);
msg.AddCookies(browserState.Cookies); msg.AddCookies(browserState.Cookies);
msg.AddHeaders(browserState.Headers); msg.AddHeaders(browserState.Headers);
return msg; return msg;

View File

@ -112,7 +112,7 @@ public class GoogleDriveDownloader : ADownloader<DTOs.DownloadStates.GoogleDrive
{ {
var initialUrl = $"https://drive.google.com/uc?id={state.Id}&export=download"; var initialUrl = $"https://drive.google.com/uc?id={state.Id}&export=download";
var msg = new HttpRequestMessage(HttpMethod.Get, initialUrl); var msg = new HttpRequestMessage(HttpMethod.Get, initialUrl);
msg.UseChromeUserAgent(); msg.AddChromeAgent();
using var response = await _client.SendAsync(msg, token); using var response = await _client.SendAsync(msg, token);
var cookies = response.GetSetCookies(); var cookies = response.GetSetCookies();
@ -145,18 +145,18 @@ public class GoogleDriveDownloader : ADownloader<DTOs.DownloadStates.GoogleDrive
var url = $"https://drive.google.com/uc?export=download&confirm={warning.Value}&id={state.Id}"; var url = $"https://drive.google.com/uc?export=download&confirm={warning.Value}&id={state.Id}";
var httpState = new HttpRequestMessage(HttpMethod.Get, url); var httpState = new HttpRequestMessage(HttpMethod.Get, url);
httpState.UseChromeUserAgent(); httpState.AddChromeAgent();
return httpState; return httpState;
} }
else else
{ {
var url = $"https://drive.google.com/file/d/{state.Id}/edit"; var url = $"https://drive.google.com/file/d/{state.Id}/edit";
var msg = new HttpRequestMessage(HttpMethod.Get, url); var msg = new HttpRequestMessage(HttpMethod.Get, url);
msg.UseChromeUserAgent(); msg.AddChromeAgent();
using var response = await _client.SendAsync(msg, token); using var response = await _client.SendAsync(msg, token);
msg = new HttpRequestMessage(HttpMethod.Get, url); msg = new HttpRequestMessage(HttpMethod.Get, url);
msg.UseChromeUserAgent(); msg.AddChromeAgent();
return !response.IsSuccessStatusCode ? null : msg; return !response.IsSuccessStatusCode ? null : msg;
} }
} }

View File

@ -10,13 +10,6 @@ namespace Wabbajack.Networking.Http;
public static class Extensions public static class Extensions
{ {
public static HttpRequestMessage UseChromeUserAgent(this HttpRequestMessage msg)
{
msg.Headers.UserAgent.Clear();
msg.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36");
return msg;
}
public static async Task<T> GetJsonFromSendAsync<T>(this HttpClient client, HttpRequestMessage msg, public static async Task<T> GetJsonFromSendAsync<T>(this HttpClient client, HttpRequestMessage msg,
JsonSerializerOptions opts, CancellationToken? token = null) JsonSerializerOptions opts, CancellationToken? token = null)
{ {