From c4774fa372b45fbce0091a617214a4c53e8ba52c Mon Sep 17 00:00:00 2001 From: FFace32 Date: Tue, 10 Oct 2023 15:28:31 +0300 Subject: [PATCH] Added cookies support --- src/FlareSolverrSharp/Solvers/FlareSolverr.cs | 17 +++++++------- .../Types/FlareSolverrRequest.cs | 3 +++ .../Types/FlareSolverrResponse.cs | 23 +++++++++++++++---- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/FlareSolverrSharp/Solvers/FlareSolverr.cs b/src/FlareSolverrSharp/Solvers/FlareSolverr.cs index f4e6628..c2bcfca 100644 --- a/src/FlareSolverrSharp/Solvers/FlareSolverr.cs +++ b/src/FlareSolverrSharp/Solvers/FlareSolverr.cs @@ -27,9 +27,9 @@ public FlareSolverr(string flareSolverrApiUrl) _flareSolverrUri = new Uri(apiUrl + "v1"); } - public async Task Solve(HttpRequestMessage request, string sessionId = "") + public async Task Solve(HttpRequestMessage request, string sessionId = "", Types.Cookie[] cookies = null) { - return await SendFlareSolverrRequest(GenerateFlareSolverrRequest(request, sessionId)); + return await SendFlareSolverrRequest(GenerateFlareSolverrRequest(request, sessionId, cookies)); } public async Task CreateSession() @@ -168,11 +168,11 @@ private HttpContent GetSolverRequestContent(FlareSolverrRequest request) return content; } - private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, string sessionId = "") + private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, string sessionId = "", Types.Cookie[] cookies = null) { FlareSolverrRequest req; if (string.IsNullOrWhiteSpace(sessionId)) - sessionId = null; + sessionId = null; var url = request.RequestUri.ToString(); @@ -186,7 +186,8 @@ private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, stri Url = url, MaxTimeout = MaxTimeout, Proxy = proxy, - Session = sessionId + Session = sessionId, + Cookies = cookies }; } else if (request.Method == HttpMethod.Post) @@ -202,7 +203,8 @@ private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, stri PostData = request.Content.ReadAsStringAsync().Result, MaxTimeout = MaxTimeout, Proxy = proxy, - Session = sessionId + Session = sessionId, + Cookies = cookies }; } else if (contentMediaType.Contains("multipart/form-data") @@ -223,6 +225,5 @@ private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, stri return GetSolverRequestContent(req); } - } -} \ No newline at end of file +} diff --git a/src/FlareSolverrSharp/Types/FlareSolverrRequest.cs b/src/FlareSolverrSharp/Types/FlareSolverrRequest.cs index 49bd18b..394cc14 100644 --- a/src/FlareSolverrSharp/Types/FlareSolverrRequest.cs +++ b/src/FlareSolverrSharp/Types/FlareSolverrRequest.cs @@ -15,5 +15,8 @@ public class FlareSolverrRequest [JsonProperty("proxy")] public FlareSolverrRequestProxy Proxy; + + [JsonProperty("cookies")] + public Cookie[] Cookies; } } diff --git a/src/FlareSolverrSharp/Types/FlareSolverrResponse.cs b/src/FlareSolverrSharp/Types/FlareSolverrResponse.cs index e852ef7..9d9cd3f 100644 --- a/src/FlareSolverrSharp/Types/FlareSolverrResponse.cs +++ b/src/FlareSolverrSharp/Types/FlareSolverrResponse.cs @@ -29,20 +29,33 @@ public class Solution public class Cookie { + [JsonProperty("name")] public string Name; + + [JsonProperty("value")] public string Value; + + [JsonProperty("domain")] public string Domain; + + [JsonProperty("path")] public string Path; - public double Expires; - public int Size; + + [JsonProperty("expiry", DefaultValueHandling = DefaultValueHandling.Ignore)] + public int Expiry; + + [JsonProperty("httpOnly", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool HttpOnly; + + [JsonProperty("secure", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool Secure; - public bool Session; + + [JsonProperty("sameSite")] public string SameSite; public string ToHeaderValue() => $"{Name}={Value}"; - public System.Net.Cookie ToCookieObj() => new System.Net.Cookie(Name, Value); + public System.Net.Cookie ToCookieObj() => new System.Net.Cookie(Name, Value); } public class Headers @@ -52,4 +65,4 @@ public class Headers [JsonProperty(PropertyName = "content-type")] public string ContentType; } -} \ No newline at end of file +}