public async Task <T> GetAsync <T>(string query) { throwIfInvalidRequest(); if (hasTokenExpired()) { await SendTokenRequest(); } string urlRequest = parsePath(query); IApiResponse response = await _webClient.MakeApiRequestAsync(Configuration.GetApiUrl() + urlRequest); limiters.NotifyAll(this, response); if (response.IsSuccessful()) { string json = await response.ReadContentAsync(); return(JsonConvert.DeserializeObject <T>(json)); } else { throw new BadResponseException("Response is not successful", response); } }
public async Task <WoWJson> GetAsync <WoWJson>(string query, Namespace?ns = null) where WoWJson : BlizzardApiJsonResponse, new() { await Check().ConfigureAwait(false); string urlRequest = ParsePath(query, ns); IApiResponse response = await _webClient.MakeApiRequestAsync(new Uri(_config.GetApiUrl(), urlRequest).AbsoluteUri); switch (response.GetStatusCode()) { case HttpStatusCode.OK: string json = await response.ReadContentAsync(); WoWJson result = JsonSerializer.Deserialize <WoWJson>(json); result.ResultCode = response.GetStatusCode(); result.DirectlyCalled = true; return(result); case HttpStatusCode.NotFound: case HttpStatusCode.Forbidden: return(new WoWJson() { ResultCode = response.GetStatusCode() }); default: throw new BadResponseException($"Get {typeof(WoWJson)} fail : {response.GetStatusCode()}", response.GetStatusCode(), response); } }
public async Task <string> GetJsonAsync(string query, Namespace?ns = null) { await Check().ConfigureAwait(false); string urlRequest = ParsePath(query, ns); IApiResponse response = await _webClient.MakeApiRequestAsync(new Uri(_config.GetApiUrl(), urlRequest).AbsoluteUri); switch (response.GetStatusCode()) { case HttpStatusCode.OK: string json = await response.ReadContentAsync(); return(json); default: throw new BadResponseException($"Get JSON fail : {response.GetStatusCode()}", response.GetStatusCode(), response); } }
public async Task <string> SendTokenRequest() { IApiResponse response = await _webClient.RequestAccessTokenAsync(); switch (response.GetStatusCode()) { case HttpStatusCode.OK: string json = await response.ReadContentAsync(); AuthToken credentials = JsonSerializer.Deserialize <AuthToken>(json); _token = credentials.AccessToken; int expiresInSeconds = credentials.ExpiresIn; _tokenExpiration = DateTime.Now.AddSeconds(expiresInSeconds); return(_token); default: throw new HttpRequestException($"Send Token Error : {response.GetStatusCode()}"); } }