1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-08-17 00:31:42 +02:00
Files
.github
.idea
bld
lib
TweetLib.Api
TweetLib.Browser
TweetLib.Browser.CEF
Component
Data
Dialogs
Interfaces
Logic
ByteArrayResourceHandlerLogic.cs
ContextMenuLogic.cs
DialogHandlerLogic.cs
DownloadRequestClientLogic.cs
DragHandlerLogic.cs
JsDialogHandlerLogic.cs
LifeSpanHandlerLogic.cs
RequestHandlerLogic.cs
ResourceRequestHandlerFactoryLogic.cs
ResourceRequestHandlerLogic.cs
ResponseFilterLogic.cs
SchemeHandlerFactoryLogic.cs
SchemeResourceVisitor.cs
Utils
Lib.cs
TweetLib.Browser.CEF.csproj
TweetLib.Communication
TweetLib.Core
TweetLib.Utils
TweetTest.Browser.CEF
TweetTest.Core
TweetTest.Utils
linux
resources
windows
.gitattributes
.gitignore
LICENSE.md
README.md
TweetDuck.sln
TweetDuck.sln.DotSettings
Version.cs
global.json
TweetDuck/lib/TweetLib.Browser.CEF/Logic/SchemeHandlerFactoryLogic.cs

22 lines
972 B
C#

using System;
using TweetLib.Browser.CEF.Interfaces;
using TweetLib.Browser.Interfaces;
namespace TweetLib.Browser.CEF.Logic {
public sealed class SchemeHandlerFactoryLogic<TRequest, TResourceHandler> where TResourceHandler : class {
private readonly ICustomSchemeHandler handler;
private readonly IRequestAdapter<TRequest> requestAdapter;
private readonly ISchemeResourceVisitor<TResourceHandler> resourceVisitor;
public SchemeHandlerFactoryLogic(ICustomSchemeHandler handler, IRequestAdapter<TRequest> requestAdapter, IResourceHandlerFactory<TResourceHandler> resourceHandlerFactory) {
this.handler = handler;
this.requestAdapter = requestAdapter;
this.resourceVisitor = new SchemeResourceVisitor<TResourceHandler>(resourceHandlerFactory);
}
public TResourceHandler? Create(TRequest request) {
return Uri.TryCreate(requestAdapter.GetUrl(request), UriKind.Absolute, out var uri) ? handler.Resolve(uri)?.Visit(resourceVisitor) : null;
}
}
}