public async Task HandleRateLimitTest() { // Test no delay. await MtgApiController.HandleRateLimit(); // Test with delay. var privateController = new PrivateType(typeof(MtgApiController)); privateController.SetStaticFieldOrProperty("RatelimitLimit", 2000); var limit = new RateLimit(); var privateLimit = new PrivateObject(limit); privateLimit.SetFieldOrProperty("_webServiceCalls", new List <DateTime>() { DateTime.Now.AddSeconds(-1), DateTime.Now.AddSeconds(-2), DateTime.Now.AddSeconds(-3), DateTime.Now.AddSeconds(-4), DateTime.Now.AddSeconds(-5), DateTime.Now.AddSeconds(-8), }); privateController.SetStaticFieldOrProperty("_apiRateLimit", limit); await MtgApiController.HandleRateLimit(); }
/// <summary> /// Makes a GET call to the web service. /// </summary> /// <typeparam name="T">The type of object to serialize the response into.</typeparam> /// <param name="requestUri">The URL to call.</param> /// <returns>The response of the GET serialized into the specified object.</returns> protected async Task <T> CallWebServiceGet <T>(Uri requestUri) where T : Dto.MtgResponseBase { if (requestUri == null) { throw new ArgumentNullException("requestUri"); } // Makes sure that th rate limit is not reached. await MtgApiController.HandleRateLimit(); return(await this._adapter.WebGetAsync <T>(requestUri).ConfigureAwait(false)); }