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)); }
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()); }