From b462ac265ec495347655ea4514e063f7e7436343 Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 8 Oct 2018 12:47:48 +0100 Subject: eval.py -> eval_python.py, rust_eval.py -> eval_rust.py --- modules/eval_rust.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 modules/eval_rust.py (limited to 'modules/eval_rust.py') diff --git a/modules/eval_rust.py b/modules/eval_rust.py new file mode 100644 index 00000000..a1615c66 --- /dev/null +++ b/modules/eval_rust.py @@ -0,0 +1,40 @@ +import json, socket +from src import ModuleManager, utils + +EVAL_URL = "https://play.rust-lang.org/execute" +FN_TEMPLATE = """ +fn main() { + println!(\"{:?}\", { + %s + }); +} +""" + +class Module(ModuleManager.BaseModule): + _name = "Rust" + @utils.hook("received.command.rust", min_args=1) + def eval(self, event): + """ + :help: Evaluate a rust statement + :usage: + """ + try: + page = utils.http.get_url(EVAL_URL, post_data=json.dumps({ + "code": FN_TEMPLATE % event["args"], + "channel": "nightly", + "crateType": "bin", + "mode": "debug", + "tests": False, + "execute": True, + "target": "ast", + "backtrace": False + }), method="POST", json=True) + except socket.timeout: + event["stderr"].write("%s: eval timed out" % + event["user"].nickname) + return + + if page["success"]: + event["stdout"].write(page["stdout"]) + else: + event["stderr"].write(page["stderr"]) -- cgit v1.3.1-10-gc9f91