コード例 #1
0
        private HARCache GenerateHAR(ProcessedDataPackage package)
        {
            HARImportExportsManager i  = new HARImportExportsManager();
            MemoryStream            ms = new MemoryStream();

            try
            {
                if (i.SaveProcessedDataPackage(ms, package))
                {
                    HARCache c = new HARCache();
                    c.HARJSONObject = String.Format(HAR_VAR, Encoding.UTF8.GetString(ms.ToArray()));
                    return(c);
                }
            }
            catch {
            }
            finally{
                ms.Close();
                ms.Dispose();
            }

            return(null);
        }
コード例 #2
0
        public IValidationResults Validate(ProcessedDataPackage package)
        {
            String jsshellExecutable = GetJSShellExecutable();

            if (String.IsNullOrEmpty(jsshellExecutable) || File.Exists(jsshellExecutable) == false)
            {
                return(null);
            }

            if (package == null)
            {
                return(null);
            }

            if (package.ContainsKey(typeof(HARCache)) == false)
            {
                HARCache c = GenerateHAR(package);
                if (c == null || String.IsNullOrEmpty(c.HARJSONObject))
                {
                    return(null);
                }
                package.Add(typeof(HARCache), c);
            }

            HARCache har = package[typeof(HARCache)] as HARCache;

            if (har == null)
            {
                return(null);
            }

            String tmpFilename = GenerateTmpFilename();

            if (String.IsNullOrEmpty(tmpFilename))
            {
                return(null);
            }

            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(File.Open(tmpFilename, FileMode.Create));

                sw.Write(har.HARJSONObject);
                sw.Write(script);
                sw.Write(String.Format("var EXTDATA = {{{0}}};\r\n", data));
                sw.Write(String.Format("var BASE_FOLDER = \"{0}\";\r\n", GetBaseFolder()));
                sw.Write("load(BASE_FOLDER + \"/JSTemplate/JavascriptValidator.js\");\r\n");

                sw.Flush();
                sw.Close();

                this.JavascriptOutputReader = new JavascriptOutputReader(package);

                ProcessStartInfo psi = new ProcessStartInfo(jsshellExecutable);
                psi.CreateNoWindow         = true;
                psi.WindowStyle            = System.Diagnostics.ProcessWindowStyle.Hidden;
                psi.UseShellExecute        = false;
                psi.Arguments              = String.Format("\"{0}\"", tmpFilename);
                psi.RedirectStandardOutput = true;
                psi.RedirectStandardError  = true;
                Process p = new Process();
                p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
                p.ErrorDataReceived  += new DataReceivedEventHandler(p_ErrorDataReceived);
                p.StartInfo           = (psi);
                p.Start();
                p.BeginErrorReadLine();
                p.BeginOutputReadLine();
                p.WaitForExit();

                return(this.JavascriptOutputReader.GetResults());
            }
            catch (Exception e)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("Javascript Validator Error", e);
                }
            }
            finally
            {
                if (sw != null)
                {
                    sw.Close();
                }

                this.JavascriptOutputReader = null;

                if (File.Exists(tmpFilename))
                {
                    try
                    {
                        File.Delete(tmpFilename);
                    }
                    catch
                    {
                    }
                }
            }

            return(null);
        }