using CefSharp; using TweetLib.Browser.CEF.Interfaces; using ResourceType = TweetLib.Browser.Request.ResourceType; namespace TweetDuck.Browser.Base { sealed class CefRequestAdapter : IRequestAdapter<IRequest> { public static CefRequestAdapter Instance { get; } = new CefRequestAdapter(); private CefRequestAdapter() {} public ulong GetIdentifier(IRequest request) { return request.Identifier; } public string GetUrl(IRequest request) { return request.Url; } public void SetUrl(IRequest request, string url) { request.Url = url; } public bool IsTransitionForwardBack(IRequest request) { return request.TransitionType.HasFlag(TransitionType.ForwardBack); } public bool IsCspReport(IRequest request) { return request.ResourceType == CefSharp.ResourceType.CspReport; } public ResourceType GetResourceType(IRequest request) { return request.ResourceType switch { CefSharp.ResourceType.MainFrame => ResourceType.MainFrame, CefSharp.ResourceType.Script => ResourceType.Script, CefSharp.ResourceType.Stylesheet => ResourceType.Stylesheet, CefSharp.ResourceType.Xhr => ResourceType.Xhr, CefSharp.ResourceType.Image => ResourceType.Image, _ => ResourceType.Unknown }; } public void SetHeader(IRequest request, string header, string value) { request.SetHeaderByName(header, value, overwrite: true); } } }