示例#1
0
        public void Process(WebApplication app)
        {
            HttpContext     context = WebApplication.CurrentContext;
            DodoApplication dodoApp = (DodoApplication)app;

            string method = Path.GetFileNameWithoutExtension(context.Request.Url);
            object answer = null;

            StringBuilder sb     = new StringBuilder();
            StringWriter  writer = new StringWriter(sb);

            string idCallback = "";

            idCallback = context.Request.UriArgs["callback"];
            DodoSession s = null;

            if (context.Request.UriArgs["auth"] != null)
            {
                s = app.Sessions[(WebAuth)context.Request.UriArgs["auth"]] as DodoSession;
            }

            switch (method)
            {
            case "checkFile":

                EnumStatusPoweq2 status = EnumStatusPoweq2.NOT_EXISTS;

                try
                {
                    var item = dodoApp.CurrentDb.GetItem(dodoApp.CalcUniqueId(context.Request.UriArgs["code"]));

                    string newContentType;

                    if (dodoApp.Rules.AnyContentTypeMandatory(item, out newContentType))
                    {
                        dodoApp.CurrentDb.GetItem2(item, newContentType).SetDodoItem(item);
                        status = dodoApp.CurrentDb.GetItem2Status(item, item.fileContentType);
                    }
                    else
                    {
                        status = EnumStatusPoweq2.AVAILABLE;
                    }
                }
                catch (ItemNotFoundException) { }
                catch (ItemNotAvailableException) { }

                var resp = new JSONP(idCallback);
                resp.PayLoad = JavaScriptConvert.SerializeObject(new string[] { status.ToString() });
                writer.Write(resp.GetMessage());
                break;
            }

            // mandamos la respuesta
            context.Reply.LoadText(sb.ToString());

            context.Reply.LastModified = DateTime.Now;
            context.Reply.Code         = Codes.OK;
        }
示例#2
0
        public JSONP AnalyzeByJSON(string data)
        {
            data = "\"\":" + data;
            string rem_data;
            var    jsonp = new JSONP(data, out rem_data);


            return(jsonp);
        }
示例#3
0
        public JSONP Analyze(string data)
        {
            // 関数名と、外側の()を削除
            {
                var i = data.IndexOf("(");
                function_name = data.Substring(0, i);
                data          = data.Substring(i + 1);
                data          = data.Substring(0, data.LastIndexOf(")"));
            }

            data = "\"\":" + data; // 無名変数として作成させるために{}の手前に "": を加える(処理を共通化できるので)

            string rem_data;
            var    jsonp = new JSONP(data, out rem_data);


            return(jsonp);
        }
示例#4
0
            private dynamic GetValue(string data, out string rem_data)
            {
                rem_data = "";
                const string nums  = "0123456789";
                const string nums2 = "0123456789.";

                var i = 0;

                foreach (var s in data)
                {
                    if (s == ' ')
                    {
                    }
                    else if (s == '{')
                    {
                        type = Type.Dict;
                        var dict = new Dictionary <string, JSONP>();
                        rem_data = data.Substring(i + 1);
                        while (true)
                        {
                            var jsonp = new JSONP(rem_data, out rem_data);
                            dict.Add(jsonp.name, jsonp);

                            var i1 = rem_data.IndexOf('}');
                            var i2 = rem_data.IndexOf(',');
                            if ((i2 >= 0) && (i1 >= 0) && (i2 < i1))
                            {
                                // ,が先にある
                                rem_data = rem_data.Substring(i2 + 1);
                            }
                            else
                            {
                                if (i1 >= 0)
                                {
                                    rem_data = rem_data.Substring(i1 + 1);
                                }
                                return(dict);
                            }
                        }
                    }
                    else if (s == '[')
                    {
                        type = Type.List;
                        var list = new List <JSONP>();
                        rem_data = data.Substring(i + 1);
                        while (true)
                        {
                            var jsonp = new JSONP();
                            jsonp.value = GetValue(rem_data, out rem_data);
                            list.Add(jsonp);

                            var i1 = rem_data.IndexOf(']');
                            var i2 = rem_data.IndexOf(',');
                            if ((i2 >= 0) && (i1 >= 0) && (i2 < i1))
                            {
                                // ,が先にある
                                rem_data = rem_data.Substring(i2 + 1);
                            }
                            else
                            {
                                if (i1 >= 0)
                                {
                                    rem_data = rem_data.Substring(i1 + 1);
                                }
                                return(list);
                            }
                        }
                    }
                    else if (s == '\"')
                    {
                        type = Type.String;
                        var i1  = data.IndexOf('\"', i + 1); // todo: 文字列中の"はどうなる?
                        var str = data.Substring(i + 1, i1 - 1);
                        str      = EndcodeString(str);
                        rem_data = data.Substring(i1 + 1);
                        return(str);
                    }
                    else
                    {
                        var is_num = false;
                        foreach (var n in nums)
                        {
                            if (s == n)
                            {
                                is_num = true;
                                break;
                            }
                        }
                        if (is_num)
                        {
                            type = Type.Num;
                            // 数字が続くまで
                            for (var j = i + 1; j < data.Count(); j++)
                            {
                                var is_num2 = false;
                                foreach (var n in nums2)
                                {
                                    if (data[j] == n)
                                    {
                                        is_num2 = true;
                                        break;
                                    }
                                }
                                if (!is_num2)
                                {
                                    var str = data.Substring(i, j);
                                    rem_data = data.Substring(j);
                                    return(int.Parse(str));
                                }
                            }
                            break;
                        }
                    }
                    i++;
                }

                // {}
                // []
                // "" 文字列
                // 数値

                return(null);
            }