/// <summary> /// Make an HTTP request /// </summary> /// <param name="request">Twilio request</param> /// <returns>Twilio response</returns> public override Response MakeRequest(Request request) { IHttpWebRequestWrapper httpRequest = BuildHttpRequest(request); if (!Equals(request.Method, HttpMethod.Get)) { httpRequest.WriteBody(request.EncodePostParams()); } this.LastRequest = request; this.LastResponse = null; try { IHttpWebResponseWrapper response = httpRequest.GetResponse(); string content = GetResponseContent(response); this.LastResponse = new Response(response.StatusCode, content, response.Headers); } catch (WebExceptionWrapper e) { if (e.Response == null) { // Network or connection error throw e.RealException; } // Non 2XX status code IHttpWebResponseWrapper errorResponse = e.Response; this.LastResponse = new Response(errorResponse.StatusCode, GetResponseContent(errorResponse), errorResponse.Headers); } return(this.LastResponse); }
public void TestMakeRequestThrowsOnConnectionError() { // Setup this._mockResponse = null; // Connection errors throw a WebException without a Response property set var rawException = Substitute.For <WebException>(); var wrappedException = Substitute.For <WebExceptionWrapper>(rawException); wrappedException.Response = null; this._mockRequest.GetResponse().Returns(x => { throw wrappedException; }); // Run Test var request = new Request(HttpMethod.Get, "https://api.twilio.com/v1/Resource.json"); try { this.TwilioClient.MakeRequest(request); Assert.Fail("Should have thrown"); } catch (WebException ex) { // Assert throws the raw exception Assert.AreSame(rawException, ex); } // Assert Assert.AreEqual(new Uri("https://api.twilio.com/v1/Resource.json"), this._requestUrl); Assert.IsNull(this._requestBody); Assert.AreSame(request, this.TwilioClient.LastRequest); Assert.IsNull(this.TwilioClient.LastResponse); }
protected virtual void HandleResponse(IHttpWebResponseWrapper response, Message message) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { SetMessageState(GetStringFromReader(reader), message); } }
public virtual void SendMessage(Message message) { var currentTime = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0); if (currentTime < this.BeginSmsTranssmisionPeriod || currentTime > EndSmsTranssmisionPeriod) { message.State = MessageState.Postponed; return; } IHttpWebRequestWrapper req = ServiceLocator.Current.ToNinject().Kernel.Get <IHttpWebRequestWrapper>(new ConstructorArgument("url", BuildMessageUrl(message))); PrepareRequest(req); this.Log.DebugFormat("Wysy³anie requestu do providera wiadomoœci na adres: {0}", req.RequestUri.AbsoluteUri); IHttpWebResponseWrapper response = req.GetResponse(); HandleResponse(response, message); }
public void Init() { this._requestUrl = null; this._requestBody = null; this._mockFactory = Substitute.For <HttpWebRequestFactory>(); this._mockRequest = Substitute.For <IHttpWebRequestWrapper>(); this._mockRequest.Headers = new NameValueCollection(); this._mockResponse = Substitute.For <IHttpWebResponseWrapper>(); this._mockResponse.GetResponseStream().Returns(new MemoryStream()); this._mockFactory.Create(Arg.Do <Uri>(arg => this._requestUrl = arg)) .Returns(this._mockRequest); this._mockRequest.GetResponse().Returns(this._mockResponse); this._mockRequest.WriteBody(Arg.Do <byte[]>(arg => this._requestBody = Encoding.UTF8.GetString(arg, 0, arg.Length) )); this.TwilioClient = new WebRequestClient(this._mockFactory); }
protected virtual bool IsRequestSuccess(IHttpWebResponseWrapper response) { return response.StatusCode == HttpStatusCode.OK; }
private string GetResponseContent(IHttpWebResponseWrapper response) { var reader = new StreamReader(response.GetResponseStream()); return(reader.ReadToEnd()); }
private string GetAccessToken(IHttpWebResponseWrapper response) { JObject jsonResponse = JObject.Parse(response.Content); return (string)jsonResponse["AccessToken"]; }