private static string EvaluateSegmentMatch(Match match, object segments) { if (segments == null) { throw new ArgumentException("Route expects 'segments' object, but it was null.", nameof(segments)); } var name = match.Result("$1"); var property = segments.GetType().GetProperty(name); if (property == null) { throw new ArgumentException($"Property '{name}', which is required by the route, not found in 'segments' object.", nameof(segments)); } var value = property.GetValue(segments); if (value == null) { throw new ArgumentException($"'segments' object has '{name}' value equal to 'null'.", nameof(segments)); } var stringValue = WebApiClientHelper.SerializeValueToJson(value); return(stringValue); }
private Task <HttpResponseMessage> SendRequest(ServiceRequest request) { var uri = request.Route; var finalUri = WebApiClientHelper.AddQueryParams(uri, request.QueryParameters); var message = new HttpRequestMessage(request.HttpMethod, finalUri); if (request.Body != null) { var json = JsonConvert.SerializeObject(request.Body, WebApiClientHelper.JsonSerializerSettings); message.Content = new StringContent(json, Encoding.UTF8, "application/json"); } if (request.Headers != null) { foreach (var pair in request.Headers) { var headerName = pair.Key; var headerValue = pair.Value; if (headerValue != null) { message.Headers.Add(headerName, headerValue); } } } return(this.HttpClient.SendAsync(message)); }