public ApiService( ITokenService tokenService, IPlatformUtilsService platformUtilsService, Func <Tuple <string, bool, bool>, Task> logoutCallbackAsync, string customUserAgent = null) { _tokenService = tokenService; _platformUtilsService = platformUtilsService; _logoutCallbackAsync = logoutCallbackAsync; var device = (int)_platformUtilsService.GetDevice(); _httpClient.DefaultRequestHeaders.Add("Device-Type", device.ToString()); _httpClient.DefaultRequestHeaders.Add("Bitwarden-Client-Name", _platformUtilsService.GetClientType().GetString()); _httpClient.DefaultRequestHeaders.Add("Bitwarden-Client-Version", _platformUtilsService.GetApplicationVersion()); if (!string.IsNullOrWhiteSpace(customUserAgent)) { _httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(customUserAgent); } }
public async Task <IdentityResponse> PostIdentityTokenAsync(TokenRequest request) { var requestMessage = new HttpRequestMessage { Version = new Version(1, 0), RequestUri = new Uri(string.Concat(IdentityBaseUrl, "/connect/token")), Method = HttpMethod.Post, Content = new FormUrlEncodedContent(request.ToIdentityToken(_platformUtilsService.GetClientType().GetString())) }; requestMessage.Headers.Add("Accept", "application/json"); request.AlterIdentityTokenHeaders(requestMessage.Headers); HttpResponseMessage response; try { response = await _httpClient.SendAsync(requestMessage); } catch (Exception e) { throw new ApiException(HandleWebError(e)); } JObject responseJObject = null; if (IsJsonResponse(response)) { var responseJsonString = await response.Content.ReadAsStringAsync(); responseJObject = JObject.Parse(responseJsonString); } var identityResponse = new IdentityResponse(response.StatusCode, responseJObject); if (identityResponse.FailedToParse) { throw new ApiException(new ErrorResponse(responseJObject, response.StatusCode, true)); } return(identityResponse); }