private static string GetPostParameters(ICallCriteria criteria) { return string.Join("&", criteria.PostParameters .AllKeys .Select(key => key + "=" + criteria.PostParameters[key]) .ToArray()); }
public string GetResponseStringFor(ICallCriteria criteria, AuthorizationHeader authHeader) { var responseValue = string.Empty; var webClient = new WebClient(); webClient.Headers.Add("AUTHORIZATION", authHeader.Value); try { using (webClient) { if (CallHasPostParameters(criteria)) { var uploadResponse = webClient.UploadValues(criteria.CallParameters.Url, criteria.PostParameters); responseValue = Encoding.ASCII.GetString(uploadResponse); } else { responseValue = webClient.DownloadString(criteria.CallParameters.Url); } } } catch (Exception ex) { throw new Exception("Unable to get response for url '{0}' - {1}", ex); } return responseValue; }
public ResponseViewModel Build(ICallCriteria criteria) { var authHeader = _authorizationHeaderBuilder.Build(criteria.CallParameters); var responseString = _webResponseBuilder.GetResponseStringFor(criteria, authHeader); return new ResponseViewModel { PartnerId = criteria.CallParameters.PartnerId, ConsumerKey = criteria.CallParameters.ConsumerKey, ConsumerSecret = criteria.CallParameters.ConsumerSecret, Url = criteria.CallParameters.Url, Response = responseString, AuthHeaders = authHeader.Value, PostParameters = GetPostParameters(criteria) }; }
private static bool CallHasPostParameters(ICallCriteria criteria) { return criteria.PostParameters != null && criteria.PostParameters.Count > 0; }