public void TestHttpRequestSerializationBytesRoundTrip() { AvroHttpRequest r = CreateAvroHttpRequest(); var b = AvroHttpSerializer.ToBytes(r); var r1 = AvroHttpSerializer.FromBytes(b); var ri = ByteUtilities.ByteArraysToString(r.InputStream); var ri1 = ByteUtilities.ByteArraysToString(r1.InputStream); Assert.Equal(ri, ri1); Assert.Equal(r.QueryString, r1.QueryString); }
/// <summary> /// Called when receving an http request from Java side /// </summary> /// <param name="httpMessage">The HTTP message.</param> public void OnNext(IHttpMessage httpMessage) { LOGGER.Log(Level.Info, "HttpHandler OnNext is called"); string requestString = httpMessage.GetRequestString(); if (requestString != null && requestString.Equals(SPEC)) { LOGGER.Log(Level.Info, "HttpHandler OnNext, requestString:" + requestString); LOGGER.Log(Level.Info, "HttpHandler OnNext, port number:" + httpServerPort.PortNumber); httpMessage.SetUriSpecification(GetAllSpecifications()); } else { LOGGER.Log(Level.Info, "HttpHandler OnNext, handling http request."); byte[] byteData = httpMessage.GetQueryReuestData(); AvroHttpRequest avroHttpRequest = AvroHttpSerializer.FromBytes(byteData); LOGGER.Log(Level.Info, "HttpHandler OnNext, requestData:" + avroHttpRequest); string spec = GetSpecification(avroHttpRequest.PathInfo); if (spec != null) { LOGGER.Log(Level.Info, "HttpHandler OnNext, target:" + spec); ReefHttpRequest request = ToHttpRequest(avroHttpRequest); ReefHttpResponse response = new ReefHttpResponse(); IHttpHandler handler; eventHandlers.TryGetValue(spec.ToLower(CultureInfo.CurrentCulture), out handler); byte[] responseData; if (handler != null) { LOGGER.Log(Level.Info, "HttpHandler OnNext, get eventHandler:" + handler.GetSpecification()); handler.OnHttpRequest(request, response); responseData = response.OutputStream; } else { responseData = ByteUtilities.StringToByteArrays(string.Format(CultureInfo.CurrentCulture, "No event handler found at CLR side for {0}.", spec)); } httpMessage.SetQueryResponseData(responseData); } } }