public DecoderProviderTest() { _myDecoder = new MyDefaultDecoder(); _provider = new FormDecoderProvider(); _provider.Add(_myDecoder); _provider.Add(new XmlDecoder()); _stream = new MemoryStream(); StreamWriter writer = new StreamWriter(_stream); writer.WriteLine("<user><firstname>jonas</firstname></user>"); writer.Flush(); _stream.Seek(0, SeekOrigin.Begin); }
public void BlockingHandler(IHttpClientContext context0, IHttpRequest request, IHttpResponse response) { // UUID capsID; bool success; string path = request.Uri.PathAndQuery;//.TrimEnd('/'); if (path.Contains("5580")) { path = path.Replace("?:5580/", ""); } string pathd = HttpUtility.UrlDecode(path);//.TrimEnd('/'); LogInfo("_listener " + path + " from " + request.RemoteEndPoint); if (request.UriPath.EndsWith(".ico")) { response.Status = HttpStatusCode.NotFound; response.Send(); } var wrresp = new WriteLineToResponse(this, response); string botname = GetVariable(request, "bot", GetVariable(request, "botid", null)); ScriptExecutor _botClient = clientManager.GetScriptExecuter(botname); if (_botClient == null) { response.Status = HttpStatusCode.ServiceUnavailable; response.Send(); return; } // Micro-posterboard if (pathd.StartsWith("/posterboard")) { string slot = path; string value = ""; value = _botClient.getPosterBoard(slot) as string; if (value != null) if (value.Length > 0) { LogInfo(String.Format(" board response: {0} = {1}", slot, value)); } AddToBody(response, "<xml>"); AddToBody(response, "<slot>"); AddToBody(response, "<path>" + path + "</path>"); AddToBody(response, "<value>" + (value ?? "") + "</value>"); AddToBody(response, "</slot>"); AddToBody(response, "</xml>"); wrresp.response = null; response.Status = HttpStatusCode.OK; response.Send(); return; } bool useHtml = false; if (request.Method == "POST") { var fdp = new FormDecoderProvider(); fdp.Add(new MultipartDecoder()); fdp.Add(new UrlDecoder()); request.DecodeBody(fdp); } if (path.StartsWith("/?") || path.StartsWith("/test")) { useHtml = true; } if (DLRConsole.IsDougsMachine) { useHtml = true; } try { if (OverrideHandlers(request, response)) return; if (useHtml) { AddToBody(response, "<html>"); AddToBody(response, "<head>"); botname = GetVariable(request, "bot", _botClient.GetName()); AddToBody(response, "<title>" + botname + "</title>"); AddToBody(response, "</head>"); AddToBody(response, "<body>"); AddToBody(response, "<pre>"); foreach (var p in request.Param.AsEnumerable()) { foreach (var item in p.Values) { AddToBody(response, "" + p.Name + " = " + item); } } AddToBody(response, "</pre>"); AddToBody(response, "<a href='" + request.Uri.PathAndQuery + "'>" + request.Uri.PathAndQuery + "</a>"); AddToBody(response, "<pre>"); } string cmd = GetVariable(request, "cmd", "MeNe"); CmdResult res; // this is our default handler if (cmd != "MeNe") { res = _botClient.ExecuteXmlCommand(cmd + " " + GetVariable(request, "args", ""), request, wrresp.WriteLine); } else { try { InvokeAsMene(request, response, _botClient, pathd, wrresp); } catch (Exception exception) { LogInfo("InvokeAsMene exception: " + exception); } } if (useHtml) { AddToBody(response, "</pre>"); AddToBody(response, "</body>"); AddToBody(response, "</html>"); } } finally { wrresp.response = null; response.Status = HttpStatusCode.OK; try { response.Send(); } catch (Exception e) { LogInfo("Exception sening respose: " + e); } } }