public async Task RenewToken(IDictionary <string, string> headers, string tokenUri = null) { if (string.IsNullOrEmpty(tokenUri)) { AddBearerToken(headers); } else { var response = await _httpClientWrapper.Send(tokenUri, HttpMethod.Post, _tokenRequestBody, _tokenHeaders); var token = await ConvertJsonBody.From(response).To <TokenResponse>(); AddBearerToken(headers, token.AccessToken); } }
private async Task <HttpResponseMessage> GetResponse(IDictionary <string, string> headers, Func <Task <HttpResponseMessage> > callApi) { await _authenticate.RenewToken(headers); var response = await callApi(); if (response.StatusCode == HttpStatusCode.Unauthorized) { var unauthorizedResponse = await ConvertJsonBody.From(response).To <Resource>(); var tokenUri = unauthorizedResponse.GetUriForRel("/rels/token"); await _authenticate.RenewToken(headers, tokenUri); response = await callApi(); } return(response); }
private async Task <string> CallApi(IDictionary <string, string> headers, Func <Task <HttpResponseMessage> > callApi) { var response = await GetResponse(headers, callApi); return(await ConvertJsonBody.From(response).ToStringAsync()); }