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);
 }
Пример #2
0
        /// <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);
        }