private async Task <bool> RequestWriteAccess(IR2Credentials credentials, CancellationToken cancelTkn, bool addCertToWhiteList) { CsrfToken = string.Empty; SetCredentials(credentials, addCertToWhiteList); _cookie = null; await Task.Run(async() => { _cookie = await GetCookie(cancelTkn); } ).ConfigureAwait(false); if (_cookie == null) { return(false); } await Task.Run(async() => { CsrfToken = await GetCsrfToken(_cookie, cancelTkn); } ).ConfigureAwait(false); return(!CsrfToken.IsBlank()); }
public override Task <T> CookieAuthGET <T>(D8Cookie cookie, string resourceUrl, CancellationToken cancelTkn) { var client = new JsonServiceClient(Creds.BaseURL); client.SetCookie(cookie.Name, cookie.Id); return(Retry.Forever <T>(resourceUrl, (x, ct) => client.GetAsync <string>(resourceUrl), cancelTkn)); }
public override Task <T> CookieAuthPOST <T>(D8Cookie cookie, string resourceUrl, CancellationToken cancelTkn) { var client = new JsonServiceClient(Creds.BaseURL); client.SetCookie(cookie.Name, cookie.Id); return(Retry.Forever <T>(resourceUrl, (url, ct) //=> client.PostAsync<string>(resourceUrl, null), cancelTkn); //=> resourceUrl.PostToUrlAsync(string.Empty, requestFilter: req => { req.Headers["X-CSRF-Token"] = CsrfToken; }), cancelTkn); => url.PostToUrlAsync(string.Empty, "application/json", r => SetBasicAuthRequest(r)), cancelTkn)); }
internal async Task <bool> GetCsrfToken(string resourceUrl) { var client = new JsonServiceClient(_creds.ApiBaseURL); var body = new { username = _creds.Username, password = _creds.Password }; _cookie = null; var json = await client.PostAsync <string>(resourceUrl, body); if (!Json.TryDeserialize <D8Cookie>(json, out _cookie)) { return(false); } _csrfToken = await CookieAuthClient().GetAsync <string>("rest/session/token"); return(!_csrfToken.IsBlank()); }
private Task <string> GetCsrfToken(D8Cookie cookie, CancellationToken cancelTkn) => _client.CookieAuthGET <string>(cookie, D8.REST_SESSION_TOKEN, cancelTkn);
public abstract Task <T> CookieAuthPOST <T>(D8Cookie cookie, string url, CancellationToken cancelTkn);