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; }
public JSONP AnalyzeByJSON(string data) { data = "\"\":" + data; string rem_data; var jsonp = new JSONP(data, out rem_data); return(jsonp); }
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); }
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); }