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
2022-02-05 23:34:00 +01:00

30 lines
1.1 KiB
C#

using System;
using System.Net;
using TweetLib.Browser.CEF.Data;
using TweetLib.Browser.CEF.Interfaces;
using TweetLib.Browser.Interfaces;
using TweetLib.Browser.Request;
namespace TweetLib.Browser.CEF.Logic {
abstract class SchemeResourceVisitor {
protected static readonly SchemeResource.Status FileIsEmpty = new (HttpStatusCode.NoContent, "File is empty.");
}
sealed class SchemeResourceVisitor<TResourceHandler> : SchemeResourceVisitor, ISchemeResourceVisitor<TResourceHandler> {
private readonly IResourceHandlerFactory<TResourceHandler> factory;
public SchemeResourceVisitor(IResourceHandlerFactory<TResourceHandler> factory) {
this.factory = factory;
}
public TResourceHandler Status(SchemeResource.Status status) {
return factory.CreateResourceHandler(new ByteArrayResource(Array.Empty<byte>(), statusCode: status.Code, statusText: status.Message));
}
public TResourceHandler File(SchemeResource.File file) {
byte[] contents = file.Contents;
return contents.Length == 0 ? Status(FileIsEmpty) : factory.CreateResourceHandler(new ByteArrayResource(contents, factory.GetMimeTypeFromExtension(file.Extension)));
}
}
}