Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 protected virtual void HandleResponse(IHttpWebResponseWrapper response, Message message)
 {
     using (StreamReader reader = new StreamReader(response.GetResponseStream()))
     {
         SetMessageState(GetStringFromReader(reader), message);
     }
 }
Пример #4
0
        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);
        }
Пример #5
0
        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;
		}
Пример #7
0
        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"];
		}