public static async void SendResponse(ResponseEntity data, HttpListenerContext currentContext) { await Task.Run(async() => { try { data.ParseHeadersIntoContext(currentContext); var byteBuffer = data.GetDataAsBytes(); currentContext.Response.ContentLength64 = byteBuffer.Length; await currentContext.Response.OutputStream.WriteAsync(byteBuffer, 0, byteBuffer.Length); currentContext.Response.OutputStream.Close(); var eventData = new ServerEventData { status = currentContext.Response.StatusCode, exception = null, message = currentContext.Request.HttpMethod, path = currentContext.Request.Url.AbsolutePath }; onRequestFinishedProcessing?.Invoke(eventData); } catch (Exception e) { try { throw new InternalServerErrorException(e.Message, currentContext, e); } catch (InternalServerErrorException ex) { ExceptionHandler.HandleException(ex, currentContext); } } }); }
public void NoParameters() { var entity = new ResponseEntity(); Assert.True(Object.Equals(null, entity.Data)); Assert.AreEqual(4, entity.GetDataAsBytes().Length); }
public void ObjectAsParameter() { Dictionary <string, object> arguments = new Dictionary <string, object>(); arguments.Add("v", new int[] { 1, 2, 3, 4 }); var entity = new ResponseEntity(arguments); Assert.AreEqual(15, entity.GetDataAsBytes().Length); Assert.AreEqual(typeof(Dictionary <string, object>), entity.Data.GetType()); Assert.AreEqual("{\"v\":[1,2,3,4]}", entity.JSON); }