[CHANGE] Add account dialog
This commit is contained in:
@@ -2,28 +2,26 @@ using System.Text.Json;
|
||||
using DotBased.Monads;
|
||||
using Manager.YouTube.Models.Innertube;
|
||||
using Manager.YouTube.Parsers;
|
||||
using Manager.YouTube.Util;
|
||||
|
||||
namespace Manager.YouTube;
|
||||
|
||||
public static class NetworkService
|
||||
{
|
||||
private const string Origin = "https://www.youtube.com/";
|
||||
|
||||
public static async Task<Result<ClientState>> GetClientStateAsync(YouTubeClient client)
|
||||
{
|
||||
var origin = "https://www.youtube.com/";
|
||||
var httpRequest = new HttpRequestMessage
|
||||
{
|
||||
Method = HttpMethod.Get,
|
||||
RequestUri = new Uri(origin)
|
||||
RequestUri = new Uri(Origin)
|
||||
};
|
||||
httpRequest.Headers.IfModifiedSince = new DateTimeOffset(DateTime.UtcNow);
|
||||
httpRequest.Headers.UserAgent.ParseAdd(client.UserAgent);
|
||||
|
||||
if (client.SapisidCookie != null)
|
||||
{
|
||||
httpRequest.Headers.Authorization = AuthenticationUtilities.GetSapisidHashHeader(client.SapisidCookie.Value, origin);
|
||||
httpRequest.Headers.Add("Origin", origin);
|
||||
}
|
||||
httpRequest.Headers.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
||||
httpRequest.Headers.Connection.Add("keep-alive");
|
||||
httpRequest.Headers.Add("DNT", "1");
|
||||
httpRequest.Headers.Add("Upgrade-Insecure-Requests", "1");
|
||||
|
||||
var http = client.GetHttpClient();
|
||||
if (http == null)
|
||||
@@ -38,7 +36,7 @@ public static class NetworkService
|
||||
return Result<ClientState>.Fail(ResultError.Fail(responseResult));
|
||||
}
|
||||
var responseHtml = await response.Content.ReadAsStringAsync();
|
||||
var clientStateResult = HtmlParser.GetJsonFromScriptFunction(responseHtml, "ytcfg.set");
|
||||
var clientStateResult = HtmlParser.GetStateJson(responseHtml);
|
||||
if (clientStateResult is { IsSuccess: false, Error: not null })
|
||||
{
|
||||
return clientStateResult.Error;
|
||||
@@ -47,7 +45,7 @@ public static class NetworkService
|
||||
ClientState? clientState;
|
||||
try
|
||||
{
|
||||
clientState = JsonSerializer.Deserialize<ClientState>(clientStateResult.Value);
|
||||
clientState = JsonSerializer.Deserialize<ClientState>(clientStateResult.Value.Item1);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -56,4 +54,22 @@ public static class NetworkService
|
||||
|
||||
return clientState == null ? ResultError.Fail("Unable to parse client state!") : clientState;
|
||||
}
|
||||
|
||||
public static async Task<Result> GetCurrentAccountAsync()
|
||||
{
|
||||
//URL: /youtubei/v1/account/account_menu
|
||||
// Payload
|
||||
// "context": {
|
||||
// "client": {CLIENT INFO FROM STATE}
|
||||
// }
|
||||
|
||||
/* Auth header
|
||||
* if (client.SapisidCookie != null)
|
||||
{
|
||||
httpRequest.Headers.Authorization = AuthenticationUtilities.GetSapisidHashHeader(client.SapisidCookie.Value, origin);
|
||||
httpRequest.Headers.Add("Origin", origin);
|
||||
}
|
||||
*/
|
||||
return ResultError.Fail("Not implemented");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user