public static string createRequestData(this DWR_Request dwr_Request, string separator)
        {
            var data = ("callCount={0}" + separator +
                        "windowName={1}" + separator +
                        "c0-scriptName={2}" + separator +
                        "c0-methodName={3}" + separator +
                        "c0-id={4}" + separator +
                        "batchId={5}" + separator +
                        "page={6}" + separator +
                        "httpSessionId={7}" + separator +
                        "scriptSessionId={8}" + separator
                        ).format(dwr_Request.CallCount,
                                 dwr_Request.WindowName,
                                 dwr_Request.ScriptName,
                                 dwr_Request.MethodName,
                                 dwr_Request.Id,
                                 dwr_Request.BatchId,
                                 dwr_Request.Page.valid()
                                                                                        ? dwr_Request.Page
                                                                                        : dwr_Request.Dwr_Session.Page_DefaultValue,
                                 dwr_Request.Dwr_Session.HttpSessionId,
                                 dwr_Request.Dwr_Session.ScriptSessionId);

            for (int i = 0; i < dwr_Request.Parameters.size(); i++)
            {
                data += "c0-param{0}={1}{2}".format(i, dwr_Request.Parameters[i], separator);
            }
            return(data);
        }
        public static DWR_Request makeCall_Plain(this DWR_Request dwr_Request)
        {
            //dwr_Request.createGetRequestData().info();
            var responseData = dwr_Request.Dwr_Session.makeCall_Plain(dwr_Request.Dwr_Session.Cookie,
                                                                      dwr_Request.createPostRequestData(),
                                                                      dwr_Request.ScriptName,
                                                                      dwr_Request.MethodName);

            dwr_Request.ResponseData = responseData;
            return(dwr_Request);
        }
 public static string saveRequestToFolder(this DWR_Request dwr_Request, DWR_Function function, string folder)
 {
     try
     {
         var fileName = dwr_Request.postRequest_safeFileName(function, folder);
         dwr_Request.serialize(fileName);
         return(fileName);
     }
     catch
     {
         return(Files.Copy(dwr_Request.serialize(), folder));
     }
 }
 public static DWR_Request handleNewScriptSession(this DWR_Request dwr_Request)
 {
     foreach (var line in dwr_Request.ResponseData.split_onLines())
     {
         if (dwr_Request.Dwr_Session.AutoSetCookiesAndSessionIDs && line.contains("handleNewScriptSession"))
         {
             var newScriptSessionId = line.split("\"")[1];
             dwr_Request.Dwr_Session.ScriptSessionId = newScriptSessionId;
             "found and mapped new ScriptSessionId: {0}".info(newScriptSessionId);
         }
     }
     return(dwr_Request);
 }
        public static DWR_Request processRequestData(this DWR_Request dwr_Request)
        {
            if (dwr_Request.ResponseData.valid())
            {
                dwr_Request.handleNewScriptSession();
                var processedData = dwr_Request.ResponseData;
                if (dwr_Request.RemoveAllowScriptTagRemoting)
                {
                    processedData = processedData.remove("throw 'allowScriptTagRemoting is false.';".line());
                }

                dwr_Request.ResponseData = processedData;
            }
            else
            {
                "in processRequestData, there was no data in dwr_Request.RequestData".error();
            }
            return(dwr_Request);
        }
        public DWR_Request dwrRequest(string className, string methodName, params string[] parameters)
        {
            var dwr_Request = new DWR_Request(Dwr_Session, className, methodName, parameters);

            dwr_Request.RequestStartDate = DateTime.Now;
            if (Dwr_Session.SkipFunctionsCalled.contains(methodName))
            {
                "Skipping function {0}.{1} because {1} it was on the Dwr_Request.SkipFunctionsCalled list".error(className, methodName);
                dwr_Request.ResponseData = "SKIPPED";
            }
            else
            {
                dwr_Request.makeRequest();
                dwr_Request.RequestEndDate      = DateTime.Now;
                dwr_Request.RequestTotalSeconds = (dwr_Request.RequestEndDate - dwr_Request.RequestStartDate).TotalSeconds;
                if (dwr_Request.processRequestData)
                {
                    dwr_Request.processRequestData();
                }
            }
            return(dwr_Request);
        }
        //I was trying to do the above search for handleNewScriptSession using jint but it wasn't working (part of the problem was going upwards once found the PropertyExpression with handleNewScriptSession

        /*
         * treeView.jint_configureTreeViewFor_JintView();
         *
         *
         * var jintCompiled = responseData.jint_Compile();
         * var handleNewScriptSession = (from memberExpression in jintCompiled.statements<MemberExpression>(true)
         *                                                        where memberExpression.Member is PropertyExpression  &&
         *                                                              (memberExpression.Member as PropertyExpression).Text == "handleNewScriptSession"
         *                                                        select memberExpression
         *                                                        ).first(); */


        public static string postRequest_safeFileName(this DWR_Request dwr_Request, DWR_Function function, string folder)
        {
            return(folder.pathCombine("{0}.{1} - {2}.xml".format(function.ClassName, function, dwr_Request.RequestEndDate).safeFileName(240 - folder.size())));
        }
 public static DWR_Request makeRequest(this DWR_Request dwr_Request)
 {
     return(dwr_Request.makeCall_Plain());
 }
 public static string createGetRequestData(this DWR_Request dwr_Request)
 {
     return(dwr_Request.createRequestData("&"));
 }
 public static string createPostRequestData(this DWR_Request dwr_Request)
 {
     return(dwr_Request.createRequestData("".line()));
 }