Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }