async Task <IApiResponse> ProcessResponse(IApiRequest request) { if (Config.UseCache && TryHitCache(request, true, out IApiResponse response)) { return(response); } TryGetETag(request, out string eTag); request.SetHeader("If-None-Match", eTag); response = await responseManager.GetResponse(request); if (response is ApiError) { ApiError error = response as ApiError; if (error.StatusCode == System.Net.HttpStatusCode.NotModified) { TryHitCache(request, false, out response); response.Expired = error.Expired; } } if (response.Expired != default && (Cacheability.Public | Cacheability.Private).HasFlag(response.CacheControl.Cacheability)) { SaveToCache(request, response); } return(response); }
async Task <int> AddToRequestQueue(IApiRequest request) { await tokenManager.AddAuthTokens(request); if (string.IsNullOrEmpty(Config.UserAgent)) { throw new Exception("User-Agent must be set."); } request.SetHeader("User-Agent", Config.UserAgent); return(requestQueue.AddRequest(request)); }
/// <summary> /// Add auth token to the correct location accoridng to the login config /// </summary> /// <param name="request"></param> /// <param name="token"></param> void AddTokenLocation(IApiRequest request, string token) { switch (Config.TokenLocation) { case "header": request.SetHeader(Config.TokenName, token); break; case "query": request.SetParameter(Config.TokenName, token); break; default: throw new Exception("Invalid token location"); } }