private MsieJsEngine SetupJsEngine() { var jsEngine = new MsieJsEngine(); try { using (var sr = new StreamReader( typeof(TypeScriptParserTests).Assembly.GetManifestResourceStream( "Serenity.Test.CodeGeneration.TypeScriptParserTests.typescriptServices.js"))) { jsEngine.Evaluate(sr.ReadToEnd()); } using (var sr = new StreamReader( typeof(DtoGenerator).Assembly.GetManifestResourceStream( "Serenity.Web.Scripts.tsservices.Serenity.CodeGeneration.js"))) { jsEngine.Evaluate(sr.ReadToEnd()); } return jsEngine; } catch { jsEngine.Dispose(); throw; } }
private MsieJsEngine SetupJsEngine() { var jsEngine = new MsieJsEngine(); try { using (var sr = new StreamReader( typeof(TypeScriptParserTests).Assembly.GetManifestResourceStream( "Serenity.Test.CodeGeneration.TypeScriptParserTests.json2.min.js"))) { jsEngine.Evaluate(sr.ReadToEnd()); } using (var sr = new StreamReader( typeof(TypeScriptParserTests).Assembly.GetManifestResourceStream( "Serenity.Test.CodeGeneration.TypeScriptParserTests.typescriptServices.js"))) { jsEngine.Evaluate(sr.ReadToEnd()); } using (var sr = new StreamReader( typeof(DtoGenerator).Assembly.GetManifestResourceStream( "Serenity.Web.Scripts.tsservices.Serenity.CodeGeneration.js"))) { jsEngine.Evaluate(sr.ReadToEnd()); } return(jsEngine); } catch { jsEngine.Dispose(); throw; } }
private string ExecuteJs(string exeFilePath, string corlibPath, string entryPoint, out int exitCode, List <string> errors) { string jsOutput = null; exitCode = -1; using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false)) { object exitCodeObj = null; try { jsEngine.Execute(@"var braille_testlib_output = """";"); jsEngine.Execute(@"function braille_test_log(message) { braille_testlib_output += asm0.ToJavaScriptString(message) + ""\r\n""; }"); if (corlibPath != null) { jsEngine.ExecuteFile(corlibPath); } jsEngine.ExecuteFile(exeFilePath + ".js"); exitCodeObj = jsEngine.Evaluate(entryPoint + ".entryPoint()"); } catch (JsEngineLoadException e) { errors.Add("During loading of JavaScript engine an error occurred.\n" + JsErrorHelpers.Format(e)); } catch (JsRuntimeException e) { errors.Add("During execution of JavaScript code an error occurred.\n" + JsErrorHelpers.Format(e)); } if (exitCodeObj == null || exitCodeObj == MsieJavaScriptEngine.Undefined.Value) { exitCode = 0; } else { exitCode = (int)(double)exitCodeObj; } try { jsOutput = (string)jsEngine.Evaluate("braille_testlib_output"); } catch { errors.Add("Exception while evaluating script output"); } } return(jsOutput); }
private static MsieJsEngine SetupJsEngine() { MsieJsEngine jsEngine; try { jsEngine = new MsieJsEngine(new JsEngineSettings { EngineMode = JsEngineMode.ChakraIeJsRt }); } catch { jsEngine = new MsieJsEngine(); } try { using (var sr = new StreamReader( typeof(ScriptBundleManager).Assembly.GetManifestResourceStream( "Serenity.Web.Scripts.optimization.uglifyjs.min.js"))) { jsEngine.Evaluate(sr.ReadToEnd()); } return(jsEngine); } catch { jsEngine.Dispose(); throw; } }
public void EvaluationOfExpressionIsCorrect() { // Arrange // Act var result = _msieJsEngine.Evaluate <int>("7 * 8 - 20"); // Assert Assert.AreEqual(36, result); }
public static string UnmaskFrom(string maskedUrl, string userId) { try { using (var jsEngine = new MsieJsEngine()) { jsEngine.ExecuteResource("VkAudioSync.Vk.audioUnmask.js", Assembly.GetExecutingAssembly()); return(jsEngine.Evaluate <string>($"unmaskUrl(\"{maskedUrl}\", {userId});")); } } catch (JsEngineLoadException e) { throw new Exception($"JS Compile error: {JsErrorHelpers.Format(e)}"); } catch (JsRuntimeException e) { throw new Exception($"JS Runtime error: {JsErrorHelpers.Format(e)}"); } }
private static string MinimizeWithUglifyJS(ref MsieJsEngine jsEngine, string code) { jsEngine = jsEngine ?? SetupJsEngine(); jsEngine.SetVariableValue("CodeToCompress", code); jsEngine.Evaluate( @"(function() { var ast = UglifyJS.parse(CodeToCompress); ast.figure_out_scope(); var compressor = UglifyJS.Compressor(); ast = ast.transform(compressor); ast.figure_out_scope(); ast.compute_char_frequency(); ast.mangle_names(); CodeToCompress = ast.print_to_string(); })();"); return(jsEngine.GetVariableValue <string>("CodeToCompress")); }
public virtual void EvaluationOfExpressionWithUndefinedResultIsCorrect() { // Arrange const string input = "undefined"; var targetOutput = Undefined.Value; // Act var output = _jsEngine.Evaluate(input); // Assert Assert.AreEqual(targetOutput, output); }
private LoginBaseInfo GetLoginBaseInfo(AccountInfo accountInfo) { var httphelper = new HttpHelper(true, accountInfo.virtualAccount); var data = new Dictionary <string, string>(); var item = GetHttpItem(); item.URL = "https://passport.jd.com/new/login.aspx"; var rs = httphelper.GetHtml(item); //返回的Html内容 var html = rs.Html; if (!html.Contains("欢迎登录")) { Thread.Sleep(4000); rs = httphelper.GetHtml(item); html = rs.Html; } //var htmlDoc = new HtmlAgilityPack.HtmlDocument(); //htmlDoc.Load(html); //htmlDoc.SelectNodes CQ dom = html; var bold = dom["form#formlogin input[type=hidden]"]; var yzmUrl = "https://" + dom["img#JD_Verification1"][0].Attributes["src2"].Replace("//", "") + "&yys=1495705227054"; //var yzmUrl = dom["img#JD_Verification1"][0].Attributes["src"].Replace("//", ""); var hiddenInputList = bold.Select(a => new { name = a.Attributes["name"], value = a.Attributes["value"] }) .ToList(); hiddenInputList.ForEach(a => { data.Add(a.name, a.value); }); if (!hiddenInputList.Exists(a => a.name == "pubKey")) { var publicKey = dom["input[name='pubKey']"]; var publicKeyItem = publicKey .Select(a => new { name = a.Attributes["name"], value = a.Attributes["value"] }).First(); hiddenInputList.Add(publicKeyItem); } var jdLoginJs = File.ReadAllText("./jd_login.js"); var pubKey = hiddenInputList.Find(a => a.name == "pubKey").value; data["pubKey"] = pubKey; string nloginpwd; jdLoginJs += ";get('" + pubKey + "','" + accountInfo.password + "');"; using (var jsEngine = new MsieJsEngine()) { nloginpwd = jsEngine.Evaluate <string>(jdLoginJs); } data["loginname"] = accountInfo.realAccount; data["nloginpwd"] = nloginpwd; //var ss = ; var eid = "GEOVEU4EP2CNEUQ3JFZENF2YARUJWXZZSBEGHDDWMYPXDIROG73DGBOELY3GMEAGGB427RQ5T5O2G3ODOSUODUMEUQ"; var fp = "c675b7cca9e276a3bca88c407cb14dbb"; item.Postdata = "uuid=" + Encode(data["uuid"]) + "&" + "eid=" + Encode(eid) + "&" + "fp=" + fp + "&" + "_t=" + Encode(data["_t"]) + "&" + "loginType=f" + "&" + "loginname=" + accountInfo.realAccount + "&" + "nloginpwd=" + accountInfo.password + "&" + "chkRememberMe=" + "&" + "authcode="; var loginUrl = "https://passport.jd.com/uc/loginService?" + "uuid=" + Encode(data["uuid"]) + "&" + "r=" + new Random().NextDouble() + "&" + "version=2015"; return(new LoginBaseInfo { PostInfo = item.Postdata, YzmUrl = yzmUrl, LoginUrl = loginUrl }); }
private static MsieJsEngine SetupJsEngine() { var jsEngine = new MsieJsEngine(); try { using (var sr = new StreamReader( typeof(ScriptBundleManager).Assembly.GetManifestResourceStream( "Serenity.Web.Scripts.optimization.uglifyjs.min.js"))) { jsEngine.Evaluate(sr.ReadToEnd()); } return jsEngine; } catch { jsEngine.Dispose(); throw; } }
private static string MinimizeWithUglifyJS(ref MsieJsEngine jsEngine, string code) { jsEngine = jsEngine ?? SetupJsEngine(); jsEngine.SetVariableValue("CodeToCompress", code); jsEngine.Evaluate( @"(function() { var ast = UglifyJS.parse(CodeToCompress); ast.figure_out_scope(); var compressor = UglifyJS.Compressor(); ast = ast.transform(compressor); ast.figure_out_scope(); ast.compute_char_frequency(); ast.mangle_names(); CodeToCompress = ast.print_to_string(); })();"); return jsEngine.GetVariableValue<string>("CodeToCompress"); }
public virtual void ArrayEveryMethodIsSupported() { // Arrange const string initCode = "var engines = ['Chakra', 'V8', 'SpiderMonkey', 'Jurassic'];"; const string input1 = "engines.every(function (value, index, array) { return value.length > 1; });"; const bool targetOutput1 = true; const string input2 = "engines.every(function (value, index, array) { return value.length < 10; });"; const bool targetOutput2 = false; // Act _jsEngine.Execute(initCode); var output1 = _jsEngine.Evaluate <bool>(input1); var output2 = _jsEngine.Evaluate <bool>(input2); // Assert Assert.AreEqual(targetOutput1, output1); Assert.AreEqual(targetOutput2, output2); }
static void Main() { api.Authorize(new ApiAuthParams() { // Your Token. AccessToken = "" }); while (true) { // Your LongPoll. var lpsr = api.Groups.GetLongPollServer(123123); var blphr = api.Groups.GetBotsLongPollHistory( new BotsLongPollHistoryParams() { Wait = 25, Server = lpsr.Server, Ts = lpsr.Ts, Key = lpsr.Key }); if (blphr?.Updates == null) { continue; } else { foreach (var events in blphr.Updates) { if (events.Type == GroupUpdateType.MessageNew) { string userMessage = events.Message.Body.ToLower(); long? userId = events.Message.UserId; long? chatId = events.Message.ChatId; if (chatId == null) { if (userMessage.Contains("[JS code]".ToLower())) { string newText = userMessage.Replace("[JS code]".ToLower(), ""); newText = newText.Replace("?", " "); try { var engine = new MsieJsEngine(); var result = engine.Evaluate(newText); engine.Execute(newText); SendMessage($"Output: {result}.", userId); Console.WriteLine($"[Log, user({userId})]: UserMessageText - {newText}, VariableResult - {result}."); } catch (Exception e) { SendMessage($"Ошибка. Название исключения: {e.Message}.", userId); Console.WriteLine($"[Error Log, user({userId})]: Error - {e.Message}, UserMessageText - {newText}."); } } } else { if (userMessage.Contains("[JS code]".ToLower())) { string newText = userMessage.Replace("[JS code]".ToLower(), ""); newText = newText.Replace("?", " "); try { var engine = new MsieJsEngine(); var result = engine.Evaluate(newText); engine.Execute(newText); SendChatMessage($"Output: {result}.", chatId); Console.WriteLine($"[Log, user({userId})]: UserMessageText - {newText}, VariableResult - {result}."); } catch (Exception e) { SendChatMessage($"Ошибка. Название исключения: {e.Message}.", userId); Console.WriteLine($"[Error Log, user({userId})]: Error - {e.Message}, UserMessageText - {newText}."); } } } } } } } }
public object Evaluate(string code) { return(_engine.Evaluate(code)); }