Example #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);
        }
Example #2
0
        private IHttpWebRequestWrapper BuildHttpRequest(Request request)
        {
            IHttpWebRequestWrapper httpRequest = this.factory.Create(request.ConstructUrl());

            httpRequest.UserAgent = "twilio-csharp/" + AssemblyInfomation.AssemblyInformationalVersion + PlatVersion;

            httpRequest.Method = request.Method.ToString();
            httpRequest.Accept = "application/json";
            httpRequest.Headers["Accept-Encoding"] = "utf-8";

            var authBytes = Authentication(request.Username, request.Password);

            httpRequest.Headers["Authorization"] = "Basic " + authBytes;
            httpRequest.ContentType = "application/x-www-form-urlencoded";

            return(httpRequest);
        }
Example #3
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);
        }
Example #4
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);
        }
Example #5
0
 protected virtual void PrepareRequest(IHttpWebRequestWrapper request)
 {
 }