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); }
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); }