mirror of
https://github.com/chylex/TweetDuck.git
synced 2024-11-23 17:42:46 +01:00
64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
using CefSharp;
|
|
using System.Collections.Specialized;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
namespace TweetDuck.Core.Handling{
|
|
sealed class ResourceHandlerNotification : IResourceHandler{
|
|
private readonly NameValueCollection headers = new NameValueCollection(0);
|
|
private MemoryStream dataIn;
|
|
|
|
public void SetHTML(string html){
|
|
dataIn?.Dispose();
|
|
dataIn = ResourceHandler.GetMemoryStream(html, Encoding.UTF8);
|
|
}
|
|
|
|
public void Dispose(){
|
|
if (dataIn != null){
|
|
dataIn.Dispose();
|
|
dataIn = null;
|
|
}
|
|
}
|
|
|
|
bool IResourceHandler.ProcessRequest(IRequest request, ICallback callback){
|
|
callback.Continue();
|
|
return true;
|
|
}
|
|
|
|
void IResourceHandler.GetResponseHeaders(IResponse response, out long responseLength, out string redirectUrl){
|
|
redirectUrl = null;
|
|
|
|
response.MimeType = "text/html";
|
|
response.StatusCode = 200;
|
|
response.StatusText = "OK";
|
|
response.ResponseHeaders = headers;
|
|
responseLength = dataIn?.Length ?? -1;
|
|
}
|
|
|
|
bool IResourceHandler.ReadResponse(Stream dataOut, out int bytesRead, ICallback callback){
|
|
callback.Dispose();
|
|
|
|
try{
|
|
int length = (int)dataIn.Length;
|
|
|
|
dataIn.CopyTo(dataOut, length);
|
|
bytesRead = length;
|
|
return true;
|
|
}catch{ // catch IOException, possibly NullReferenceException if dataIn is null
|
|
bytesRead = 0;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
bool IResourceHandler.CanGetCookie(Cookie cookie){
|
|
return true;
|
|
}
|
|
|
|
bool IResourceHandler.CanSetCookie(Cookie cookie){
|
|
return true;
|
|
}
|
|
|
|
void IResourceHandler.Cancel(){}
|
|
}
|
|
}
|