Ejemplo n.º 1
0
        public void FromValue_Value_Ok()
        {
            var request = new Request {
                Id = 1, Name = "Nelibur"
            };
            IUrlSerializer      urlSerializer = UrlSerializer.FromValue(request);
            NameValueCollection actual        = urlSerializer.QueryParams;

            Assert.Equal(3, urlSerializer.QueryParams.Count);
            var expected = new NameValueCollection
            {
                { RestServiceMetadata.ParamName.Type, "Request" },
                { "Id", "1" },
                { "Name", "Nelibur" }
            };

            Assert.Equal(ToKeyValue(expected), ToKeyValue(actual));
        }
Ejemplo n.º 2
0
        internal static string ToUrl(this object value, Uri serviceAddress, string operationType, bool responseRequired = true)
        {
            var builder = new UriBuilder(serviceAddress);

            switch (operationType)
            {
            case OperationType.Post:
                builder = (responseRequired
                        ? builder.AddPath(RestServiceMetadata.Path.Post)
                        : builder.AddPath(RestServiceMetadata.Path.PostOneWay))
                          .AddQuery(UrlSerializer.FromType(value.GetType()).QueryParams);
                break;

            case OperationType.Put:
                builder = (responseRequired
                        ? builder.AddPath(RestServiceMetadata.Path.Put)
                        : builder.AddPath(RestServiceMetadata.Path.PutOneWay))
                          .AddQuery(UrlSerializer.FromType(value.GetType()).QueryParams);
                break;

            case OperationType.Get:
                builder = (responseRequired
                        ? builder.AddPath(RestServiceMetadata.Path.Get)
                        : builder.AddPath(RestServiceMetadata.Path.GetOneWay))
                          .AddQuery(UrlSerializer.FromValue(value).QueryParams);
                break;

            case OperationType.Delete:
                builder = (responseRequired
                        ? builder.AddPath(RestServiceMetadata.Path.Delete)
                        : builder.AddPath(RestServiceMetadata.Path.DeleteOneWay))
                          .AddQuery(UrlSerializer.FromValue(value).QueryParams);
                break;

            default:
                string errorMessage = string.Format(
                    "OperationType {0} with void return is absent", operationType);
                throw Error.InvalidOperation(errorMessage);
            }
            return(builder.Uri.ToString());
        }