// Http Wrapper void ReturnWithStatus(CoreTools.EResponseType responseType, CoreTools.EResultCode status, string method, string body, HttpProcessor p) { String statusText = status.ToString(); if (body.Length == 0) { body = "{}"; } CoreTools.JsonHttpResponse response = new CoreTools.JsonHttpResponse(); response.status = statusText; response.method = method; response.body = body; string responseStr = ""; string FullResponse = "HTTP/1.1 200 OK\nContent-type:"; switch (responseType) { case CoreTools.EResponseType.ERT_Json: responseStr = response.Serialize(); responseStr = responseStr.Replace("body\":\"", "body\":").Replace("}\"", "}"); // Anal fix FullResponse += " application/json\\nContent-Length:" + responseStr.Length + "\n\n"; break; case CoreTools.EResponseType.ERT_HTML: responseStr = body; FullResponse += " text/html; charset=utf-8\n\n"; if (status != CoreTools.EResultCode.OK) { responseStr = statusText; } break; default: break; } FullResponse += responseStr; //Console.WriteLine("Sending response: {0}", FullResponse); p.outputStream.Write(FullResponse); return; }
CoreTools.ResponseData InvokeServiceMethod(string Method, CoreTools.EResponseType ResponseType) { if (Method.Length == 0) { return(new CoreTools.ResponseData(ResponseType, CoreTools.EResultCode.INVALID_SERVICE)); } if (Method.IndexOf('/') == 0) { Method = Method.Remove(0, 1); } char[] DelimiterChars = { '/' }; string[] Tokens = Method.Split(DelimiterChars); string ServiceName = ""; string MethodName = ""; if (Tokens.Length > 0) { ServiceName = Tokens[0]; } if (Tokens.Length > 1) { MethodName = Tokens[1]; } ServiceBase Service = Services.ContainsKey(ServiceName) ? Services[ServiceName] : null; if (Service == null) { return(new CoreTools.ResponseData(ResponseType, CoreTools.EResultCode.INVALID_SERVICE)); } Type TypeOfService = Service.GetType(); MethodInfo ServiceMethod = TypeOfService.GetMethod(MethodName); if (ServiceMethod == null) { return(new CoreTools.ResponseData(ResponseType, CoreTools.EResultCode.INVALID_METHOD)); } return((CoreTools.ResponseData)ServiceMethod.Invoke(Service, null)); }