Beispiel #1
0
        // 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;
        }
Beispiel #2
0
        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));
        }