public void ServiceCollectionWithHostEncoding() { ServiceCollection services = new ServiceCollection(); int count = services.Pipeline.Encodings.Count; services.WithHostEncoding(new GzipDeflateEncoding()); Assert.AreEqual(count + 1, services.Pipeline.Encodings.Count); }
public void ResolvedServiceGetRequestDecoder() { ServiceCollection services = new ServiceCollection(); services .WithService("Test", "/") .WithEndpoint("{action}") .Post<Payload>((Payload p) => { }); ResolvedService service = new ServiceResolver(services).Find(MethodType.Post, "foo"); EncodingLookupResult result = service.GetRequestDecoder("gzip"); Assert.IsNull(result); result = service.GetRequestDecoder(string.Empty); Assert.IsNotNull(result); Assert.AreEqual(EncodingType.Empty, result.EncodingType); Assert.AreEqual(new IdentityEncoding(), result.Encoding); services.WithHostEncoding(new GzipDeflateEncoding()); service = new ServiceResolver(services).Find(MethodType.Post, "foo"); result = service.GetRequestDecoder("gzip"); Assert.IsNotNull(result); Assert.AreEqual(EncodingType.Parse("gzip"), result.EncodingType); Assert.AreEqual(new GzipDeflateEncoding(), result.Encoding); }
public void ResolvedServiceReadRequestEncoded() { ServiceCollection services = new ServiceCollection(); services .WithHostEncoding(new GzipDeflateEncoding()) .WithHostFormat(new JsonFormat()) .WithService("Test", "/") .WithEndpoint("{action}") .Post<Payload>((Payload p) => { }); byte[] encodedPayload; using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("{\"date\":\"2012-09-22T18:46:00Z\",\"number\":42,\"text\":\"Hello, world!\"}"))) { using (MemoryStream outputStream = new MemoryStream()) { using (GZipStream compressionStream = new GZipStream(outputStream, CompressionMode.Compress)) { stream.CopyTo(compressionStream); } encodedPayload = outputStream.ToArray(); } } ResolvedService service = new ServiceResolver(services).Find(MethodType.Post, "foo"); using (RequestMessage request = new RequestMessage<Payload>(service.Name, service.RouteValues, new Uri("http://example.com/foo"))) { request.InputStream.Write(encodedPayload, 0, encodedPayload.Length); request.InputStream.Position = 0; request.SetEncodingFilter(EncodingType.Parse("gzip"), new GzipDeflateEncoding()); using (ResponseMessage response = new ResponseMessage()) { ReadRequestResult result = service.ReadRequest(request, encodedPayload.Length, "gzip", "application/json", request.InputStream); Assert.IsNotNull(result); Assert.IsTrue(result.Success); Assert.IsNull(result.Exception); Assert.AreEqual(StatusCode.None, result.StatusCode); Assert.IsNotNull(result.RequestObject); Payload payload = result.RequestObject as Payload; Assert.IsNotNull(payload); Assert.AreEqual(new DateTime(2012, 9, 22, 18, 46, 0, DateTimeKind.Utc), payload.Date); Assert.AreEqual(42L, payload.Number); Assert.AreEqual("Hello, world!", payload.Text); } } }