Skip to content

Commit 4fdd882

Browse files
committed
More refactoring
1 parent 7cbc023 commit 4fdd882

22 files changed

Lines changed: 268 additions & 301 deletions

SmartImage.Lib/Clients/Booru/BaseBooruClient.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,22 @@
66
using System.Linq;
77
using System.Text;
88
using System.Threading.Tasks;
9+
using SmartImage.Lib.Model;
910

1011
namespace SmartImage.Lib.Clients.Booru;
1112

1213
// TODO
1314
[Experimental(AppSupport.DIAG_ID_EXPERIMENTAL)]
14-
public abstract class BaseBooruClient : IDisposable
15+
public abstract class BaseBooruClient : IDisposable, IUrl
1516
{
1617

17-
public Url BaseUrl { get; }
18+
public Url Url { get; }
1819

1920
public abstract string Name { get; }
2021

21-
protected BaseBooruClient(Url baseUrl)
22+
protected BaseBooruClient(Url url)
2223
{
23-
BaseUrl = baseUrl;
24+
Url = url;
2425
}
2526

2627
public virtual void Dispose()

SmartImage.Lib/Clients/Booru/BaseGelbooruClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ public abstract class BaseGelbooruClient : BaseBooruClient
2121
[CBN]
2222
public string Id { get; set; }
2323

24-
protected BaseGelbooruClient(Url baseUrl) : base(baseUrl)
24+
protected BaseGelbooruClient(Url url) : base(url)
2525
{
2626

2727
Client = new FlurlClient()
2828
{
29-
BaseUrl = baseUrl,
29+
BaseUrl = url,
3030
Settings =
3131
{
3232
JsonSerializer = { }

SmartImage.Lib/Clients/FlareSolverrClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ public bool Configure(string api)
4444

4545
s_logger.LogTrace("Init with {Api}", api);
4646

47-
return HasClient;
47+
return IsInitialized;
4848
}
4949

50-
public FlareSolverrClient([CBN] string api = SearchConfig.FLARE_SOLVERR_API_URL_DEFAULT)
50+
public FlareSolverrClient([CBN] string api = FLARE_SOLVERR_API_URL_DEFAULT)
5151
{
5252
Configure(api);
5353
}
@@ -72,6 +72,7 @@ public ValueTask<bool> ApplyConfigAsync(SearchConfig cfg, CancellationToken ct =
7272
return ValueTask.FromResult(ok);
7373
}
7474

75-
75+
76+
public const string FLARE_SOLVERR_API_URL_DEFAULT = "http://localhost:8191";
7677

7778
}

SmartImage.Lib/Engines/BaseSearchEngine.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ namespace SmartImage.Lib.Engines;
2222
#pragma warning disable CA1822
2323
#nullable disable
2424

25-
public abstract class BaseSearchEngine : IDisposable, IEquatable<BaseSearchEngine>, ISearchEngine
25+
public abstract class BaseSearchEngine : IDisposable, IEquatable<BaseSearchEngine>, ISearchEngine, IUrl
2626
{
2727

2828
protected static readonly ILogger Logger = AppSupport.Factory.CreateLogger(nameof(BaseSearchEngine));
2929

3030
/// <summary>
3131
/// Base URI
3232
/// </summary>
33-
public virtual Url BaseUrl { get; }
33+
public virtual Url Url { get; }
3434

3535
public virtual string Name => EngineOption.ToString();
3636

@@ -72,9 +72,9 @@ static BaseSearchEngine()
7272
});
7373
}
7474

75-
protected BaseSearchEngine([NN] Url baseUrl)
75+
protected BaseSearchEngine([NN] Url url)
7676
{
77-
BaseUrl = baseUrl;
77+
Url = url;
7878
Timeout = TimeSpan.FromSeconds(30);
7979
ErrorBodyMessages = [];
8080
MaxLength = null;
@@ -111,7 +111,7 @@ protected virtual Url GetRawUrl(SearchQuery query)
111111
throw new SmartImageException($"{query} not uploaded");
112112
}
113113

114-
Url u = (BaseUrl + query.Upload);
114+
Url u = (Url + query.Upload);
115115

116116
return u;
117117
}
@@ -135,7 +135,7 @@ public virtual bool VerifyQuery(SearchQuery q)
135135

136136
public override string ToString()
137137
{
138-
return $"{Name}: {BaseUrl} {Timeout}";
138+
return $"{Name}: {Url} {Timeout}";
139139
}
140140

141141

SmartImage.Lib/Engines/ParsedSearchEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public abstract class ParsedSearchEngine<TItem, TIntermediate, TSource> : BaseSe
1919
where TItem : SearchResultItem
2020
{
2121

22-
protected ParsedSearchEngine([NN] Url baseUrl) : base(baseUrl) { }
22+
protected ParsedSearchEngine([NN] Url url) : base(url) { }
2323

2424

2525
public override async Task<SearchResult> GetResultAsync(SearchQuery query, CancellationToken token = default)

SmartImage.Lib/Engines/Search/ArchiveMoeEngine.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ public partial class ArchiveMoeEngine : WebSearchEngine<ChanPost, IList<INode>>
2828

2929
public ArchiveMoeEngine() : this("https://archived.moe/_/search/") { }
3030

31-
protected ArchiveMoeEngine(Url baseUrl) : base(baseUrl) { }
31+
protected ArchiveMoeEngine(Url url) : base(url) { }
3232

3333
protected override Url GetRawUrl(SearchQuery query)
3434
{
3535
Base64MD5Hash = GetBase64MD5Hash(query.Source.Bytes);
3636

37-
var r = Url.Combine(BaseUrl, "image", Base64MD5Hash);
37+
var r = Url.Combine(Url, "image", Base64MD5Hash);
3838
return r;
3939

40-
// return (BaseUrl.AppendPathSegments("image").AppendPathSegment(Base64Hash));
40+
// return (Url.AppendPathSegments("image").AppendPathSegment(Base64Hash));
4141
}
4242

4343

SmartImage.Lib/Engines/Search/Ascii2DEngine.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ public sealed class Ascii2DEngine : WebSearchEngine<Ascii2DItem, IList<INode>>,
4444

4545
public const string MAIN_URL = "https://ascii2d.net/search/url/";
4646

47-
private FlareSolverrClient m_fsClient;
47+
private readonly FlareSolverrClient m_fsClient;
4848

4949
public Ascii2DEngine() : base(MAIN_URL)
5050
{
5151
Timeout = TimeSpan.FromSeconds(30);
5252
MaxLength = 10_000_000;
5353
Jar = new CookieJar();
54+
m_fsClient = new FlareSolverrClient();
5455
}
5556

5657

@@ -204,7 +205,7 @@ public async ValueTask<bool> ApplyCookiesAsync(ICookiesSource source, Cancellati
204205
var ck = bck.AsCookie();
205206

206207
if (ck.Domain.Contains("ascii2d")) {
207-
Jar.AddOrReplace(new FlurlCookie(ck.Name, ck.Value, BaseUrl));
208+
Jar.AddOrReplace(new FlurlCookie(ck.Name, ck.Value, Url));
208209
}
209210
}
210211

@@ -215,10 +216,10 @@ public async ValueTask<bool> ApplyCookiesAsync(ICookiesSource source, Cancellati
215216
public ValueTask<bool> ApplyConfigAsync(SearchConfig cfg, CancellationToken ct = default)
216217
{
217218
if (cfg.FlareSolverr) {
218-
m_fsClient = new FlareSolverrClient(cfg.FlareSolverrApiUrl);
219+
m_fsClient.Configure(cfg.FlareSolverrApiUrl);
219220
}
220221

221-
return ValueTask.FromResult(m_fsClient is not null);
222+
return ValueTask.FromResult(m_fsClient.IsInitialized);
222223
}
223224

224225
}
@@ -242,7 +243,7 @@ public static Ascii2DItem ParseSource(INode nx, SearchResult r)
242243
var imgBox = nxe.Children[0];
243244
var thumb = imgBox.Children[0].Attributes["src"];
244245

245-
sri.Thumbnail = Url.Combine(r.Engine.BaseUrl.Root, thumb?.Value);
246+
sri.Thumbnail = Url.Combine(r.Engine.Url.Root, thumb?.Value);
246247

247248
var info = n.ChildNodes.Where(static n1 => !string.IsNullOrWhiteSpace(n1.TextContent))
248249
.ToArray();

SmartImage.Lib/Engines/Search/EHentaiEngine.cs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,34 +30,31 @@ static EHentaiEngine() { }
3030

3131
public EHentaiEngine(bool useExHentai = true) : base(EHentaiBase)
3232
{
33-
IsLoggedIn = false;
34-
33+
IsLoggedIn = false;
3534
UseExHentai = useExHentai;
36-
37-
Jar = new CookieJar();
35+
Jar = new CookieJar();
3836
}
3937

4038
// NOTE: a separate HttpClient is used for EHentai because of special network requests and other unique requirements...
4139

4240
#region
4341

44-
public static readonly Url EHentaiIndex = "https://forums.e-hentai.org/index.php";
45-
public static readonly Url EHentaiBase = "https://e-hentai.org/";
46-
public static readonly Url EHentaiLookup = "https://upld.e-hentai.org/image_lookup.php";
47-
42+
public static readonly Url EHentaiIndex = "https://forums.e-hentai.org/index.php";
43+
public static readonly Url EHentaiBase = "https://e-hentai.org/";
4844
public static readonly Url ExHentaiBase = "https://exhentai.org/";
45+
public static readonly Url EHentaiLookup = "https://upld.e-hentai.org/image_lookup.php";
4946
public static readonly Url ExHentaiLookup = "https://upld.exhentai.org/upld/image_lookup.php";
5047

5148
#region
5249

53-
public override Url BaseUrl => IsLoggedIn ? ExHentaiBase : EHentaiBase;
54-
55-
private Url BaseUrl2 => UseExHentai ? ExHentaiBase : EHentaiBase;
50+
public override Url Url => IsLoggedIn ? ExHentaiBase : EHentaiBase;
5651

57-
private Url LookupUrl =>
52+
private Url Url2 => UseExHentai ? ExHentaiBase : EHentaiBase;
5853

59-
// todo: handle UseExHentai
60-
IsLoggedIn ? ExHentaiLookup : EHentaiLookup;
54+
/// <summary>
55+
/// todo: handle UseExHentai
56+
/// </summary>
57+
private Url LookupUrl => IsLoggedIn ? ExHentaiLookup : EHentaiLookup;
6158

6259
private const string HOST_EH = ".e-hentai.org";
6360
private const string HOST_EX = ".exhentai.org";
@@ -74,7 +71,7 @@ public EHentaiEngine(bool useExHentai = true) : base(EHentaiBase)
7471

7572
private Task<IFlurlResponse> GetSessionAsync()
7673
{
77-
return Client.Request(BaseUrl2)
74+
return Client.Request(Url2)
7875
.WithCookies(Jar)
7976
.WithTimeout(Timeout)
8077
.WithHeaders(new
@@ -234,7 +231,7 @@ public async ValueTask<bool> ApplyCookiesAsync(ICookiesSource source, Cancellati
234231
c |= isEh;
235232

236233
if (c) {
237-
Jar.AddOrReplace(cookie.Name, cookie.Value, BaseUrl2);
234+
Jar.AddOrReplace(cookie.Name, cookie.Value, Url2);
238235
}
239236
}
240237

SmartImage.Lib/Engines/Search/GoogleLensEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class GoogleLensEngine : WebSearchEngine<GoogleLensItem, IList<INode>>, I
3333
public override SearchEngineOptions EngineOption => SearchEngineOptions.GoogleLens;
3434

3535

36-
public override Url BaseUrl => URL_BASE;
36+
public override Url Url => URL_BASE;
3737

3838
public Url Endpoint => URL_BASE;
3939

SmartImage.Lib/Engines/Search/IqdbEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public static IqdbItem ParseSource(IHtmlCollection<IElement> tr, SearchResult r)
188188
var src = tr[2];
189189

190190
var img2 = img.Children[0].Children[0].Children[0].Attributes["src"];
191-
var thumbnail = img2 != null ? Url.Combine(r.Engine.BaseUrl.Root, img2.Value) : null;
191+
var thumbnail = img2 != null ? Url.Combine(r.Engine.Url.Root, img2.Value) : null;
192192
var thumbnail1 = img.Children[0].Children[0].Attributes["alt"];
193193
var thumbnailAlt = thumbnail1?.Value;
194194

0 commit comments

Comments
 (0)