예제 #1
0
        public void DeleteOnEachEndpoint <TRes>(string relativePathOrAbsoluteUri, Action <TRes> validate)
        {
            using (var xmlClient = new XmlServiceClient(BaseUrl))
                using (var jsonClient = new JsonServiceClient(BaseUrl))
                    using (var jsvClient = new JsvServiceClient(BaseUrl))
                    {
                        var xmlResponse = xmlClient.Delete <TRes>(relativePathOrAbsoluteUri);
                        if (validate != null)
                        {
                            validate(xmlResponse);
                        }

                        var jsonResponse = jsonClient.Delete <TRes>(relativePathOrAbsoluteUri);
                        if (validate != null)
                        {
                            validate(jsonResponse);
                        }

                        var jsvResponse = jsvClient.Delete <TRes>(relativePathOrAbsoluteUri);
                        if (validate != null)
                        {
                            validate(jsvResponse);
                        }
                    }
        }
예제 #2
0
        public static IServiceGateway ResolveBestFitClient(string baseUrl, Type requestType)
        {
            var restricts       = requestType.AllAttributes <RestrictAttribute>();
            var inSecureAllowed = restricts.All(t => t.HasAccessTo(RequestAttributes.InSecure)) || restricts.All(t => !t.HasAccessTo(RequestAttributes.Secure));

            if (!inSecureAllowed && baseUrl.StartsWith("http", StringComparison.InvariantCultureIgnoreCase))
            {
                baseUrl = baseUrl.Insert(4, "s"); //tack in the secure if required and not in base listening url
            }
            IServiceGateway gateway = null;

            if (requestType.HasJsonClientSupport())
            {
                gateway = new JsonServiceClient(baseUrl);
            }
            else if (requestType.HasJsvClientSupport())
            {
                gateway = new JsvServiceClient(baseUrl);
            }
            else if (requestType.HasXmlClientSupport())
            {
                gateway = new XmlServiceClient(baseUrl);
            }
            return(gateway ?? (IServiceGateway) new JsonServiceClient(baseUrl)); //default will be Json if logic doesn't figure it out
        }
예제 #3
0
        /// <summary>
        /// Run the request against each Endpoint
        /// </summary>
        /// <typeparam name="TRes"></typeparam>
        /// <param name="request"></param>
        /// <param name="validate"></param>
        /// <param name="httpMethod"></param>
        public void SendToEachEndpoint <TRes>(object request, string httpMethod, Action <TRes> validate)
        {
            using (var xmlClient = new XmlServiceClient(BaseUrl))
                using (var jsonClient = new JsonServiceClient(BaseUrl))
                    using (var jsvClient = new JsvServiceClient(BaseUrl))
                    {
                        xmlClient.HttpMethod  = httpMethod;
                        jsonClient.HttpMethod = httpMethod;
                        jsvClient.HttpMethod  = httpMethod;

                        var xmlResponse = xmlClient.Send <TRes>(request);
                        if (validate != null)
                        {
                            validate(xmlResponse);
                        }

                        var jsonResponse = jsonClient.Send <TRes>(request);
                        if (validate != null)
                        {
                            validate(jsonResponse);
                        }

                        var jsvResponse = jsvClient.Send <TRes>(request);
                        if (validate != null)
                        {
                            validate(jsvResponse);
                        }
                    }
        }
        public void IniciarSesion()
        {
            if (autorizado != null)
            {
                CerrarConexionVivanto();
            }

            disposedValue = false;
            cliente       = new XmlServiceClient(parametros.UrlBase);

            using (var httpResponse = cliente.Get <HttpWebResponse>("{0}/{1},{2},{3}".Fmt(parametros.UrlLogin, parametros.IdAplicacion, login.Usuario, login.Clave)))
            {
                var responseStream = httpResponse.GetResponseStream();
                var r2             = responseStream.ToUtf8String();
                var dd             = ServiceStack.Text.XmlSerializer.DeserializeFromString <List <Autorizado> >(r2);
                if (dd.Count > 0)
                {
                    autorizado = dd[0];
                    long prueba;
                    if (!long.TryParse(autorizado.IdUsuario, out prueba))
                    {
                        var msg = autorizado.IdUsuario;
                        autorizado = null;
                        throw new ExcepcionServicioVivanto(DirInfoLog, msg);
                    }

                    Log.Autorizado(DirInfoLog, "{0} {1}".Fmt(autorizado.IdUsuario, autorizado.Token));
                    return;
                }
            }
            throw new ExcepcionServicioVivanto(DirInfoLog, "Metodo de autenticación no retornó Autorizados");
        }
 private void CerrarConexionVivanto()
 {
     if (cliente != null)
     {
         using (cliente)
         {
             if (autorizado != null)
             {
                 try {
                     using (var httpResponse = cliente.Get <HttpWebResponse>("{0}/{1},{2},{3}".Fmt(parametros.UrlLogout, parametros.IdAplicacion, autorizado.IdUsuario, autorizado.Token)))
                     {
                         var responseStream = httpResponse.GetResponseStream();
                         var r2             = responseStream.ToUtf8String();
                         Log.Sesion(DirInfoLog, r2);
                     }
                 }
                 catch (Exception ex)
                 {
                     Log.Sesion(DirInfoLog, ex.Message);
                 }
                 autorizado = null;
             }
         }
         cliente = null;
     }
 }
 /// <summary>Sends a request of contentype application/xml </summary>
 private void IncorrectRequest()
 {
     var client  = new XmlServiceClient(HostingAt);
     var request = new MyRequest {
         Data = "RequestData"
     };
     var response = client.Post(request);
 }
        public void Can_call_GetFactorial_WebService()
        {
            var client = new XmlServiceClient(ListeningOn);
            var request = new GetFactorial { ForNumber = 3 };
            var response = client.Send<GetFactorialResponse>(request);

            Assert.That(response.Result, Is.EqualTo(GetFactorialService.GetFactorial(request.ForNumber)));
        }
예제 #8
0
 public void PostRequest()
 {
     var client = new XmlServiceClient(Config.ServiceStackBaseUri);
     client.Headers.Add("Bar", "abc123");
     client.Headers.Add("Foo", "xyz");
     var response = client.Post(new CustomHeaders());
     Assert.That(response.Bar, Is.EqualTo("abc123"));
     Assert.That(response.Foo, Is.EqualTo("xyz"));
 }
예제 #9
0
        void RptrTestsItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {
            var request        = (AuthenticateRequest)e.Item.DataItem;
            var lMessage       = (Label)e.Item.FindControl("lMessage");
            var lSuccess       = (Label)e.Item.FindControl("lSuccess");
            var lUser          = (Label)e.Item.FindControl("lUser");
            var lUsername      = (Label)e.Item.FindControl("lUsername");
            var lFirstName     = (Label)e.Item.FindControl("lFirstName");
            var lLastName      = (Label)e.Item.FindControl("lLastName");
            var lAddress       = (Label)e.Item.FindControl("lAddress");
            var lAddressStreet = (Label)e.Item.FindControl("lAddressStreet");
            var lCity          = (Label)e.Item.FindControl("lCity");
            var lState         = (Label)e.Item.FindControl("lState");
            var lZip           = (Label)e.Item.FindControl("lZip");
            var phAddress      = (PlaceHolder)e.Item.FindControl("phAddress");
            var hUsername      = (Label)e.Item.FindControl("hUsername");

            hUsername.Text = request.Username;

            //var restClient = new JsonServiceClient("http://localhost:25000/");
            var restClient = new XmlServiceClient("http://localhost:25000/");

            restClient.Timeout = new TimeSpan(0, 0, 30);
            var response = restClient.Send <AuthenticateResponse>(request);

            lMessage.Text = response.Message ?? "null";
            lSuccess.Text = response.Success ? "true" : "false";

            if (response.User == null)
            {
                lUser.Text = "null";
            }
            else
            {
                lUser.Text = "not null";
                User u = response.User;
                lUsername.Text  = u.Username ?? "null";
                lFirstName.Text = u.FirstName ?? "null";
                lLastName.Text  = u.LastName ?? "null";
                if (u.Address == null)
                {
                    lAddress.Text     = "null";
                    phAddress.Visible = false;
                }
                else
                {
                    lAddress.Text = "not null";

                    Address a = u.Address;
                    lAddressStreet.Text = a.Street ?? "null";
                    lCity.Text          = a.City ?? "null";
                    lState.Text         = a.State ?? "null";
                    lZip.Text           = a.Zip ?? "null";
                }
            }
        }
        public void Can_call_GetFactorial_WebService()
        {
            var client  = new XmlServiceClient(ListeningOn);
            var request = new GetFactorial {
                ForNumber = 3
            };
            var response = client.Send <GetFactorialResponse>(request);

            Assert.That(response.Result, Is.EqualTo(GetFactorialService.GetFactorial(request.ForNumber)));
        }
        public void PostRequest()
        {
            var client = new XmlServiceClient(Config.ServiceStackBaseUri);

            client.Headers.Add("Bar", "abc123");
            client.Headers.Add("Foo", "xyz");
            var response = client.Post(new CustomHeaders());

            Assert.That(response.Bar, Is.EqualTo("abc123"));
            Assert.That(response.Foo, Is.EqualTo("xyz"));
        }
        public void GetAllOrders()
        {
            //ARRANGE ---
            var client = new XmlServiceClient("http://localhost:50712/");

            //ACT  ------
            var orders = client.Get <OrdersResponse>("/orders");

            //ASSERT ----
            Assert.IsTrue(orders != null);
            Assert.IsTrue(orders.Orders.Count > 0);
        }
        public void UpdateOrder()
        {
            //ARRANGE ---
            HttpStatusCode statusCode        = 0;
            const string   SITE              = "http://localhost:50712";
            const string   ORDERS_LINK       = "/orders/1";
            const string   URI               = SITE + ORDERS_LINK;
            const int      NEW_PRODUCT_ID    = 5;
            DateTime       NEW_CREATION_DATE = new DateTime(2013, 08, 08);

            var client = new XmlServiceClient(SITE)
            {
                //grabbing the header once the call is ended.
                LocalHttpWebResponseFilter =
                    httpRes =>
                {
                    statusCode = httpRes.StatusCode;
                }
            };

            var updateOrder = new Order
            {
                CreationDate = NEW_CREATION_DATE,
                IsTakeAway   = false,
                Items        = new List <OrderItem>()
                {
                    new OrderItem
                    {
                        Id = 6,
                        //setting a different product!
                        Product = new Product {
                            Id = NEW_PRODUCT_ID
                        },
                        //setting a different quantity.
                        Quantity = 100
                    }
                },
                Status = new Status {
                    Id = 1
                }
            };

            //ACT  ------
            var orderResponse = client.Put <OrderResponse>(ORDERS_LINK, updateOrder);

            //ASSERT ----
            Assert.IsTrue(statusCode == HttpStatusCode.OK);
            Assert.IsTrue(orderResponse.CreationDate == NEW_CREATION_DATE);
            Assert.IsTrue(orderResponse.IsTakeAway == false);
            //only one item
            Assert.IsTrue(orderResponse.Items.Count == 1);
            Assert.IsTrue(orderResponse.Items[0].Product.Id == NEW_PRODUCT_ID);
        }
        public void GetOrdersByOrderId()
        {
            //ARRANGE ---
            const int ORDER_ID = 1;
            var       client   = new XmlServiceClient("http://localhost:50712/");

            //ACT  ------
            var order = client.Get <OrderResponse>("/orders/" + ORDER_ID);

            //ASSERT ----
            Assert.IsTrue(order != null);
            Assert.IsTrue(order.Id == ORDER_ID);
        }
예제 #15
0
        void RptrTestsItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {
            var request = (AuthenticateRequest)e.Item.DataItem;
            var lMessage = (Label)e.Item.FindControl("lMessage");
            var lSuccess = (Label)e.Item.FindControl("lSuccess");
            var lUser = (Label)e.Item.FindControl("lUser");
            var lUsername = (Label)e.Item.FindControl("lUsername");
            var lFirstName = (Label)e.Item.FindControl("lFirstName");
            var lLastName = (Label)e.Item.FindControl("lLastName");
            var lAddress = (Label)e.Item.FindControl("lAddress");
            var lAddressStreet = (Label)e.Item.FindControl("lAddressStreet");
            var lCity = (Label)e.Item.FindControl("lCity");
            var lState = (Label)e.Item.FindControl("lState");
            var lZip = (Label)e.Item.FindControl("lZip");
            var phAddress = (PlaceHolder)e.Item.FindControl("phAddress");
            var hUsername = (Label)e.Item.FindControl("hUsername");

            hUsername.Text = request.Username;

            //var restClient = new JsonServiceClient("http://localhost:25000/");
            var restClient = new XmlServiceClient("http://localhost:25000/");
            restClient.Timeout = new TimeSpan(0, 0, 30);
            var response = restClient.Send<AuthenticateResponse>(request);

            lMessage.Text = response.Message ?? "null";
            lSuccess.Text = response.Success ? "true" : "false";

            if(response.User == null)
            {
                lUser.Text = "null";
            } else {
                lUser.Text = "not null";
                User u = response.User;
                lUsername.Text = u.Username ?? "null";
                lFirstName.Text = u.FirstName ?? "null";
                lLastName.Text = u.LastName ?? "null";
                if(u.Address == null)
                {
                    lAddress.Text = "null";
                    phAddress.Visible = false;
                } else {
                    lAddress.Text = "not null";

                    Address a = u.Address;
                    lAddressStreet.Text = a.Street ?? "null";
                    lCity.Text = a.City ?? "null";
                    lState.Text = a.State ?? "null";
                    lZip.Text = a.Zip ?? "null";
                }
            }
        }
        public void CreateNewOrder()
        {
            //ARRANGE ---
            WebHeaderCollection headers    = null;
            HttpStatusCode      statusCode = 0;
            const string        SITE       = "http://localhost:50712";
            const string        ORDERS     = "/orders";
            const string        URI        = SITE + ORDERS;

            var client = new XmlServiceClient(SITE)
            {
                //grabbing the header once the call is ended.
                LocalHttpWebResponseFilter =
                    httpRes =>
                {
                    headers    = httpRes.Headers;
                    statusCode = httpRes.StatusCode;
                }
            };
            var newOrder = new Order
            {
                CreationDate = DateTime.Now,
                IsTakeAway   = true,
                Status       = new Status {
                    Id = 1
                },                                  //active
                Items = new List <OrderItem>
                {
                    new OrderItem {
                        Product = new Product {
                            Id = 1
                        }, Quantity = 10
                    },
                    new OrderItem {
                        Product = new Product {
                            Id = 2
                        }, Quantity = 10
                    }
                }
            };

            //ACT  ------
            var order = client.Post <OrderResponse>(ORDERS, newOrder);

            //ASSERT ----

            Assert.IsTrue(headers["Location"] == URI + "/" + order.Id);
            Assert.IsTrue(statusCode == HttpStatusCode.Created);
            Assert.IsTrue(order.Items.Count == 2);
            Assert.IsTrue(order.Status.Id == 1); //status is active.
        }
		public void Get_Xml_XmlCodifiedLanguages()
		{
			var repository = Substitute.For<ILanguageRepository>();
			Replacing(repository);
			repository.FindAll().Returns(new[] {"es", "da"});

			using (var client = new XmlServiceClient())
			{
				var response = client.Get<LanguagesResponse>(UrlFor("/languages"));
				Assert.That(response.ResponseStatus, Is.Null);
				Assert.That(response.Languages[0].Code, Is.EqualTo("es"));
				Assert.That(response.Languages[1].Code, Is.EqualTo("da"));
			}
		}
        public void GetOrderItemByOrderId()
        {
            //ARRANGE ---
            var    ITEM_ID   = "2";
            var    client    = new XmlServiceClient("http://localhost:50712/");
            string ITEM_LINK = "/orders/1/items/2";

            //ACT  ------
            var item = client.Get <OrderItemResponse>(ITEM_LINK);

            //ASSERT ----
            Assert.IsNotNull(item != null);
            Assert.IsTrue(item.Id.ToString() == ITEM_ID);
        }
        public void Get_customers_using_XmlServiceClient()
        {
            using (IServiceClient client = new XmlServiceClient(base.XmlSyncReplyBaseUri))
            {
                var request = new GetCustomers {
                    CustomerIds = new ArrayOfIntId {
                        CustomerId
                    }
                };
                var response = client.Send <GetCustomersResponse>(request);

                Assert.AreEqual(1, response.Customers.Count);
                Assert.AreEqual(CustomerId, response.Customers[0].Id);
            }
        }
        public void GetOrderItemsByOrderId()
        {
            //ARRANGE ---
            int    ORDER_ID   = 1;
            string ITEMS_LINK = "/orders/" + ORDER_ID + "/items";

            var client = new XmlServiceClient("http://localhost:50712/");

            //ACT  ------
            var items = client.Get <OrderItemsResponse>(ITEMS_LINK);

            //ASSERT ----
            Assert.IsNotNull(items != null);
            Assert.IsNotNull(items.Items);
            Assert.IsTrue(items.Items.Count == 2);
        }
        public void Send <TRes>(object request, Action <TRes> validate)
        {
            using (var xmlClient = new XmlServiceClient(BaseUrl))
                using (var jsonClient = new JsonServiceClient(BaseUrl))
                    using (var jsvClient = new JsvServiceClient(BaseUrl))
                    {
                        var xmlResponse = xmlClient.Send <TRes>(request);
                        validate(xmlResponse);

                        var jsonResponse = jsonClient.Send <TRes>(request);
                        validate(jsonResponse);

                        var jsvResponse = jsvClient.Send <TRes>(request);
                        validate(jsvResponse);
                    }
        }
예제 #22
0
        public void Disabling_XML_ContentType_prevents_posting_XML()
        {
            var client = new XmlServiceClient(Config.ListeningOn);

            try
            {
                client.Post(new TestContentType {
                    Id = 1
                });
            }
            catch (WebServiceException ex)
            {
                Assert.That(ex.StatusCode, Is.EqualTo(403));
                Assert.That(ex.StatusDescription, Is.EqualTo(nameof(HttpStatusCode.Forbidden)));
            }
        }
예제 #23
0
        public void Can_start_Listener_and_call_GetFactorial_WebService()
        {
            var appHost = new AppHost();

            appHost.Init();
            appHost.Start(ListeningOn);

            System.Console.WriteLine("AppHost Created at {0}, listening on {1}",
                                     DateTime.Now, ListeningOn);

            var client  = new XmlServiceClient(ListeningOn);
            var request = new GetFactorial {
                ForNumber = 3
            };
            var response = client.Send <GetFactorialResponse>(request);

            Assert.That(response.Result, Is.EqualTo(GetFactorialService.GetFactorial(request.ForNumber)));
        }
        public void DeleteOrder()
        {
            //ARRANGE ---
            HttpStatusCode statusCode = 0;
            const string   SITE       = "http://localhost:50712";

            var client = new XmlServiceClient(SITE)
            {
                //grabbing the header once the call is ended.
                LocalHttpWebResponseFilter =
                    httpRes =>
                {
                    statusCode = httpRes.StatusCode;
                }
            };

            //ACT  ------
            client.Delete <HttpResult>("/orders/2");

            //ASSERT ----
            Assert.IsTrue(statusCode == HttpStatusCode.NoContent);
        }
예제 #25
0
 /// <summary>Sends a request of contentype application/xml </summary>
 private void IncorrectRequest()
 {
     var client = new XmlServiceClient(HostingAt);
     var request = new MyRequest {Data = "RequestData"};
     var response = client.Post(request);
 }