diff options
| author | 2018-10-08 12:47:48 +0100 | |
|---|---|---|
| committer | 2018-10-08 12:47:48 +0100 | |
| commit | b462ac265ec495347655ea4514e063f7e7436343 (patch) | |
| tree | e2cccf33e66f0116d2f8c92dbb570966b09f9477 /modules/eval_rust.py | |
| parent | Add !rust in modules/rust_eval.py (diff) | |
| signature | ||
eval.py -> eval_python.py, rust_eval.py -> eval_rust.py
Diffstat (limited to 'modules/eval_rust.py')
| -rw-r--r-- | modules/eval_rust.py | 40 |
1 files changed, 40 insertions, 0 deletions
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: <statement> + """ + 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"]) |
