Libraryless. Click here for Pure Java version (1541L/11K/36K).
1 | !747 |
2 | |
3 | m {
|
4 | static new Map<S, S> cache; // "122" (or "t123") to md5 |
5 | static long lastUpdate; |
6 | |
7 | p {
|
8 | readLocally("cache lastUpdate");
|
9 | Android3 android = new Android3("Boss Bot.");
|
10 | android.startPort = 4990; |
11 | makeAndroid3(android); |
12 | } |
13 | |
14 | static synchronized S answer(S s) {
|
15 | new Matches m; |
16 | |
17 | if (match3("get cache size", s))
|
18 | return cache.size() + " entries"; |
19 | |
20 | if (match3("when was your last update", s))
|
21 | return "" + lastUpdate; |
22 | |
23 | if (match3("please update", s)) {
|
24 | update(); |
25 | return "OK, done."; |
26 | } |
27 | |
28 | if (match3("get md5 of *", s, m)) {
|
29 | S md5 = cache.get("" + parseSnippetID(unquote(m.m[0])));
|
30 | return md5 != null ? format3("MD5: *", md5) : "Snippet not found.";
|
31 | } |
32 | |
33 | if (match3("get text of *", s, m) || match3("get text for *", s, m)) {
|
34 | S snippetID = "" + parseSnippetID(unquote(m.m[0])); |
35 | S md5 = cache.get(snippetID); |
36 | if (md5 == null) ret "Snippet not found."; |
37 | S text = ""; |
38 | if (!md5.equals("-"))
|
39 | text = loadText(snippetID, md5); |
40 | ret format3("Text: *", text);
|
41 | } |
42 | |
43 | if (match3("get transpilation of *", s, m) || match3("get transpilation for *", s, m)) {
|
44 | S snippetID = "t" + parseSnippetID(unquote(m.m[0])); |
45 | S md5 = cache.get(snippetID); |
46 | if (md5 == null) ret "Transpilation not found."; |
47 | S text = ""; |
48 | if (!md5.equals("-"))
|
49 | text = loadText(snippetID, md5); |
50 | ret format3("Text: *", text);
|
51 | } |
52 | |
53 | ret null; |
54 | } |
55 | |
56 | static synchronized void update() {
|
57 | S s = loadPage("http://tinybrain.de:8080/tb-int/all-md5s.php?withtranspiled=1");
|
58 | cache.clear(); |
59 | for (S line : toLinesFullTrim(s)) {
|
60 | S[] tok = line.split(":");
|
61 | if (tok.length != 2) |
62 | fail("huch: " + structure(tok));
|
63 | S snippetID = tok[0]; |
64 | S md5 = tok[1]; |
65 | cache.put(snippetID, md5); |
66 | } |
67 | saveLocally("cache");
|
68 | lastUpdate = now(); |
69 | saveLocally("lastUpdate");
|
70 | } |
71 | |
72 | static File getTextFile(S snippetID, S md5) {
|
73 | return new File(programDir(), snippetID + "-" + md5 + ".txt"); |
74 | } |
75 | |
76 | static synchronized S loadText(S snippetID, S md5) {
|
77 | File f = getTextFile(snippetID, md5); |
78 | if (f.exists()) return loadTextFile(f); |
79 | S text = loadTextFromSite(snippetID, md5); |
80 | saveTextFile(f, text); |
81 | return text; |
82 | } |
83 | |
84 | static S loadTextFromSite(S snippetID, S md5) {
|
85 | S url; |
86 | if (snippetID.startsWith("t"))
|
87 | url = "http://tinybrain.de:8080/tb-int/get-transpiled.php?raw=1&withlibs=1&id=" + snippetID.substring(1); |
88 | else |
89 | url = "http://tinybrain.de:8080/tb/get-version-raw.php?id=" + parseSnippetID(snippetID) + "&md5=" + urlencode(md5); |
90 | |
91 | // TODO: try a few times :) |
92 | return loadPage(url); |
93 | } |
94 | } |
download show line numbers debug dex old transpilations
Travelled to 16 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, dhtvkmknsjym, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, teubizvjbppd, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1001369 |
| Snippet name: | Boss Bot (has up-to-date snippet contents) |
| Eternal ID of this version: | #1001369/1 |
| Text MD5: | c12c16ccc75cba3d6092d8c3c4267f29 |
| Transpilation MD5: | 67d4f314660dd5b0c76930c8d25cc26d |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX source code |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2015-10-12 00:59:04 |
| Source code size: | 2837 bytes / 94 lines |
| Pitched / IR pitched: | No / Yes |
| Views / Downloads: | 840 / 983 |
| Referenced in: | [show references] |