Skip to content

Commit 9e7c3a1

Browse files
committed
Fixes; refactoring; updates; integrates PR FlareSolverr#22, FlareSolverr#26, FlareSolverr#27, FlareSolverr#29
1 parent e806042 commit 9e7c3a1

File tree

9 files changed

+39
-42
lines changed

9 files changed

+39
-42
lines changed

sample/FlareSolverrSharp.Sample/FlareSolverrSharp.Sample.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<TargetFramework>net8.0</TargetFramework>
66
<RootNamespace>FlareSolverrSharp.Sample</RootNamespace>
77
<AssemblyName>FlareSolverrSharp.Sample</AssemblyName>
8-
<Version>3.0.7</Version>
8+
<Version>3.0.8</Version>
99
</PropertyGroup>
1010

1111
<ItemGroup>

src/FlareSolverrSharp/ClearanceHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,18 @@ public class ClearanceHandler : DelegatingHandler
4444

4545
public bool CookieCapacity { get; set; }
4646

47-
private readonly IFlaresolverrResponseStorage _responseStorage;
47+
private readonly IFlareSolverrResponseStorage _responseStorage;
4848

4949
/// <summary>
5050
/// Creates a new instance of the <see cref="ClearanceHandler"/>.
5151
/// </summary>
5252
/// <param name="flareSolverrApiUrl">FlareSolverr API URL. If null or empty it will detect the challenges, but
5353
/// they will not be solved. Example: "http://localhost:8191/"</param>
5454
public ClearanceHandler(string api)
55-
: this(new FlareSolverr(api), new DefaultFlaresolverrResponseStorage()) { }
55+
: this(new FlareSolverr(api), new DefaultFlareSolverrResponseStorage()) { }
5656

5757

58-
public ClearanceHandler(FlareSolverr solverr, IFlaresolverrResponseStorage storage)
58+
public ClearanceHandler(FlareSolverr solverr, IFlareSolverrResponseStorage storage)
5959
: base(new HttpClientHandler())
6060
{
6161
m_client = new HttpClient(new HttpClientHandler

src/FlareSolverrSharp/FlareSolverrSharp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<PackageId>FlareSolverrSharp</PackageId>
66
<RootNamespace>FlareSolverrSharp</RootNamespace>
77
<LangVersion>latest</LangVersion>
8-
<Version>3.0.7</Version>
8+
<Version>3.0.8</Version>
99
<Authors>Diego Heras (ngosang)</Authors>
1010
<Description>FlareSolverr .Net / Proxy server to bypass Cloudflare protection.</Description>
1111
<PackageTags>flaresolverr, flaresolver, cloudflare, solver, bypass, protection, solving, library, cloudflaresolver, delegatinghandler, recaptcha, captcha, javascript, challenge, utilities</PackageTags>

src/FlareSolverrSharp/Solvers/FlareSolverr.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,15 @@ public class FlareSolverr : INotifyPropertyChanged
4040
JsonIgnoreCondition.WhenWritingDefault,
4141
};
4242

43-
private static readonly SemaphoreLocker s_locker = new SemaphoreLocker();
43+
private static readonly SemaphoreLocker s_locker = new();
4444

45-
private /*readonly*/ HttpClient m_httpClient;
45+
private readonly HttpClient m_httpClient;
4646

4747
public Uri FlareSolverrApi { get; }
4848

49-
private readonly Uri _flareSolverrIndexUri;
50-
private int m_maxTimeout;
49+
public Uri FlareSolverrIndexUri { get; }
50+
51+
private int m_maxTimeout;
5152

5253
public int MaxTimeout
5354
{
@@ -77,7 +78,7 @@ public FlareSolverr(string flareSolverrApiUrl)
7778
}
7879

7980
FlareSolverrApi = new Uri($"{apiUrl}v1");
80-
81+
FlareSolverrIndexUri = new Uri(apiUrl);
8182
m_httpClient = new HttpClient()
8283
{
8384
// Timeout = AdjustHttpClientTimeout()
@@ -200,7 +201,7 @@ await s_locker.LockAsync(async () =>
200201
// m_httpClient.Timeout = TimeSpan.FromMilliseconds(MaxTimeout + 5000);
201202

202203
if (flareSolverrRequest == null) {
203-
response = await m_httpClient.GetAsync(_flareSolverrIndexUri);
204+
response = await m_httpClient.GetAsync(FlareSolverrIndexUri);
204205
}
205206
else {
206207
response = await m_httpClient.PostAsync(FlareSolverrApi, flareSolverrRequest);

src/FlareSolverrSharp/Types/FlareSolverrRequestProxy.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ public class FlareSolverrRequestProxy
66
{
77

88
[JsonPropertyName("url")]
9-
public string Url {get;set;}
9+
public string Url { get; set; }
1010

1111
[JsonPropertyName("username")]
12-
public string Username{get;set;}
12+
public string Username { get; set; }
1313

1414
[JsonPropertyName("password")]
15-
public string Password{get;set;}
15+
public string Password { get; set; }
1616

1717
public FlareSolverrRequestProxy() { }
1818

src/FlareSolverrSharp/Types/FlareSolverrResponse.cs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,13 @@
33
using System.Collections.Generic;
44
using System.ComponentModel;
55
using System.Net;
6-
using System.Text.Json;
76
using System.Text.Json.Serialization;
87

98
// ReSharper disable UnusedMember.Global
109
// ReSharper disable UnassignedField.Global
1110
// ReSharper disable ClassNeverInstantiated.Global
1211
namespace FlareSolverrSharp.Types;
1312

14-
public class StringOrNumberConverter : JsonConverter<string>
15-
{
16-
17-
public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
18-
{
19-
if (reader.TokenType == JsonTokenType.Number) {
20-
return reader.GetInt32().ToString();
21-
}
22-
else if (reader.TokenType == JsonTokenType.String) {
23-
return reader.GetString();
24-
}
25-
26-
throw new JsonException("Unexpected token type");
27-
}
28-
29-
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
30-
{
31-
writer.WriteStringValue(value);
32-
}
33-
34-
}
35-
3613
public class FlareSolverrResponse
3714
{
3815

src/FlareSolverrSharp/Types/IFlaresolverrResponseStorage.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
// Author: Deci | Project: FlareSolverrSharp | Name: IFlaresolverrResponseStorage.cs
1+
// Author: Deci | Project: FlareSolverrSharp | Name: IFlareSolverrResponseStorage.cs
22
// Date: 2024/10/23 @ 17:10:02
33

44
using System.Threading.Tasks;
55

66
namespace FlareSolverrSharp.Types;
77

8-
public interface IFlaresolverrResponseStorage
8+
public interface IFlareSolverrResponseStorage
99
{
1010

1111
Task SaveAsync(FlareSolverrResponse result);
@@ -14,7 +14,7 @@ public interface IFlaresolverrResponseStorage
1414

1515
}
1616

17-
public class DefaultFlaresolverrResponseStorage : IFlaresolverrResponseStorage
17+
public class DefaultFlareSolverrResponseStorage : IFlareSolverrResponseStorage
1818
{
1919

2020
public Task<FlareSolverrResponse?> LoadAsync()

test/FlareSolverrSharp.Tests/FlareSolverrSharp.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<IsPackable>false</IsPackable>
66
<AssemblyName>FlareSolverrSharp.Tests</AssemblyName>
77
<RootNamespace>FlareSolverrSharp.Tests</RootNamespace>
8-
<Version>3.0.7</Version>
8+
<Version>3.0.8</Version>
99
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
1010
</PropertyGroup>
1111

test/FlareSolverrSharp.Tests/FlareSolverrTests.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public async Task SolveOk()
4343
[TestMethod]
4444
public async Task SolveOk2()
4545
{
46-
var uri = new Uri("https://ascii2d.net/search/url/https://pomf2.lain.la/f/m2otcpa1.jpeg");
46+
var uri = new Uri("https://ascii2d.net/search/url/https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2Fxixxli0axz7b1.jpg");
4747
var flareSolverr = new FlareSolverr(Settings.FlareSolverrApiUrl);
4848
var request = new HttpRequestMessage(HttpMethod.Get, uri);
4949

@@ -60,7 +60,26 @@ public async Task SolveOk2()
6060
Assert.IsTrue(!string.IsNullOrWhiteSpace(firstCookie.Name));
6161
Assert.IsTrue(!string.IsNullOrWhiteSpace(firstCookie.Value));
6262
}
63+
[TestMethod]
64+
public async Task SolveOk3()
65+
{
66+
var uri = new Uri("https://ascii2d.net/search/url/https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2Fxixxli0axz7b1.jpg");
67+
var flareSolverr = new FlareSolverr(Settings.FlareSolverrApiUrl);
68+
var request = new HttpRequestMessage(HttpMethod.Get, uri);
6369

70+
var flareSolverrResponse = await flareSolverr.SolveAsync(request);
71+
Assert.AreEqual("ok", flareSolverrResponse.Status);
72+
73+
// Assert.AreEqual("", flareSolverrResponse.Message);
74+
Assert.IsTrue(flareSolverrResponse.StartTimestamp > 0);
75+
Assert.IsTrue(flareSolverrResponse.EndTimestamp > flareSolverrResponse.StartTimestamp);
76+
Assert.IsTrue(flareSolverrResponse.Version.Major >= 2);
77+
78+
79+
var firstCookie = flareSolverrResponse.Solution.Cookies.First();
80+
Assert.IsTrue(!string.IsNullOrWhiteSpace(firstCookie.Name));
81+
Assert.IsTrue(!string.IsNullOrWhiteSpace(firstCookie.Value));
82+
}
6483
[TestMethod]
6584
public async Task SolveOkUserAgent()
6685
{

0 commit comments

Comments
 (0)