public void StartProcessing(BaseApiRequest request) { if (_handlers.ContainsKey(request.GetType())) { throw new Exception("No handlers registered for request type " + request.GetType()); } // validate synchronously _handlers[request.GetType()].Validate(request); _requests.Add(request); }
/// <summary> /// A general API call for all calls. TResponse can be <typeparamref name="System.Dynamic"/> for /// dynamic typed. /// </summary> public async Task <TResponse> ExecuteGetApiAsync <TResponse>(BaseApiRequest request) { var restRequest = this.CreateRequest(request.RestUrl, Method.GET); var properties = request.GetType().GetProperties(); foreach (var property in properties) { var propertyValue = property.GetValue(request); if (propertyValue != null) { var jsonAttribute = property .GetCustomAttributes(typeof(JsonPropertyAttribute), false) .FirstOrDefault() as JsonPropertyAttribute; var name = jsonAttribute == null ? property.Name : jsonAttribute.PropertyName; restRequest.AddQueryParameter(name, propertyValue.ToString()); } } var response = await this.RestClient.ExecuteTaskAsync(restRequest); response.EnsureStatus(System.Net.HttpStatusCode.OK); var result = JsonConvert.DeserializeObject <TResponse>(response.Content); return(result); }