diff --git a/Changelog.md b/Changelog.md index 8205fda..9cb7586 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,6 +3,7 @@ ## ElectronNET.Core - Fixed handling of `Center` property for windows (#1001) +- Added missing methods on `Cookies` (#1000) # 0.4.0 diff --git a/src/ElectronNET.API/API/Cookies.cs b/src/ElectronNET.API/API/Cookies.cs index dac0d2d..17ac7ee 100644 --- a/src/ElectronNET.API/API/Cookies.cs +++ b/src/ElectronNET.API/API/Cookies.cs @@ -2,6 +2,7 @@ using ElectronNET.API.Entities; using ElectronNET.API.Serialization; using System; using System.Text.Json; +using System.Threading.Tasks; namespace ElectronNET.API { @@ -54,10 +55,79 @@ namespace ElectronNET.API _changed -= value; if (_changed == null) + { BridgeConnector.Socket.Off("webContents-session-cookies-changed" + Id); + } } } private event Action _changed; + + + + /// + /// Sends a request to get all cookies matching filter, and resolves a callack with the response. + /// + /// + /// + /// A task which resolves an array of cookie objects. + public Task GetAsync(CookieFilter filter) + { + var tcs = new TaskCompletionSource(); + var guid = Guid.NewGuid().ToString(); + + BridgeConnector.Socket.Once("webContents-session-cookies-get-completed" + guid, tcs.SetResult); + BridgeConnector.Socket.Emit("webContents-session-cookies-get", Id, filter, guid); + + return tcs.Task; + } + + /// + /// + /// + /// + /// + public Task SetAsync(CookieDetails details) + { + var tcs = new TaskCompletionSource(); + var guid = Guid.NewGuid().ToString(); + + BridgeConnector.Socket.Once("webContents-session-cookies-set-completed" + guid, tcs.SetResult); + BridgeConnector.Socket.Emit("webContents-session-cookies-set", Id, details, guid); + + return tcs.Task; + } + + /// + /// Removes the cookies matching url and name + /// + /// The URL associated with the cookie. + /// The name of cookie to remove. + /// A task which resolves when the cookie has been removed + public Task RemoveAsync(string url, string name) + { + var tcs = new TaskCompletionSource(); + var guid = Guid.NewGuid().ToString(); + + BridgeConnector.Socket.Once("webContents-session-cookies-remove-completed" + guid, tcs.SetResult); + BridgeConnector.Socket.Emit("webContents-session-cookies-remove", Id, url, name, guid); + + return tcs.Task; + } + + /// + /// Writes any unwritten cookies data to disk. + /// + /// A task which resolves when the cookie store has been flushed + public Task FlushStoreAsync() + { + var tcs = new TaskCompletionSource(); + var guid = Guid.NewGuid().ToString(); + + BridgeConnector.Socket.Once("webContents-session-cookies-flushStore-completed" + guid, tcs.SetResult); + BridgeConnector.Socket.Emit("webContents-session-cookies-flushStore", Id, guid); + + return tcs.Task; + } } } \ No newline at end of file