internal HttpRequestMessage CreateRequestMessage(TfsRestRequest request) { UriBuilder url = new UriBuilder(Configuration.Url); url.Path = UrlHelpers.JoinPath(Configuration.Url.AbsolutePath, GetRequestPath(request)); url.Query = GetRequestQuery(request); HttpRequestMessage message = new HttpRequestMessage(request.Method, url.Uri); message.Headers.UserAgent.ParseAdd( Configuration.UserAgent ?? DefaultUserAgent); foreach (KeyValuePair <string, object> header in request.Headers) { message.Headers.Add(header.Key, header.Value.ToString()); } string body = request.GetBody(); if (body != null) { message.Content = new StringContent(body, Encoding.UTF8, "application/json"); } return(message); }
public async Task <T> Execute <T>(TfsRestRequest request) where T : new() { HttpResponseMessage responseMessage = await SendRequest(request); string responseContent = await responseMessage.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <T>(responseContent)); }
private string GetRequestPath(TfsRestRequest request) { string path = request.Resource; foreach (KeyValuePair <string, object> urlSegment in request.UrlSegments) { path = path.Replace(String.Format("{{{0}}}", urlSegment.Key), FormatValue(urlSegment.Value)); } return(path); }
private async Task <HttpResponseMessage> SendRequest(TfsRestRequest request) { HttpRequestMessage requestMessage = CreateRequestMessage(request); using (HttpClient client = CreateClient()) { HttpResponseMessage responseMessage = await CreateClient().SendAsync(requestMessage); await HandleResponse(responseMessage); return(responseMessage); } }
private string GetRequestQuery(TfsRestRequest request) { StringBuilder requestPath = new StringBuilder(); int parameterCount = 0; foreach (KeyValuePair <string, object> parameter in request.Parameters) { if (parameterCount++ > 0) { requestPath.Append('&'); } requestPath.Append(Uri.EscapeUriString(parameter.Key)); requestPath.Append('='); requestPath.Append(Uri.EscapeUriString(FormatValue(parameter.Value))); } return(requestPath.ToString()); }
public async Task Execute(TfsRestRequest request, Stream output) { HttpResponseMessage responseMessage = await SendRequest(request); await responseMessage.Content.CopyToAsync(output); }
public async Task Execute(TfsRestRequest request) { await SendRequest(request); }