-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathintro.html
181 lines (178 loc) · 7.72 KB
/
intro.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE html>
<html lang="ch">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=0.9">
<title>ScpoAPI</title>
<link rel="stylesheet" type="text/css" href="//seventop.top/css/monokai.css" />
<link rel="stylesheet" type="text/css" href="/style.css" />
<script src="//js.seventop.top/scpo-ajax.min.js"></script>
<script src="/script.js"></script>
<script type="text/javascript">
"use strict";
function sepData(n) {
var r = Array.isArray(n) ? [[], []] : [{}, {}], o;
if (n['@'] === '@') r[0] = n[0], r[1] = n[1];
else for (var i in n) if (n[i] instanceof Object) o = sepData(n[i]), r[0][i] = o[0], r[1][i] = o[1];
return r;
}
function createTableIntro(n) {
var h = ["<tr><th"], s = ">字段</th><th>说明</th></tr><tr>", m = 0, v = [0], t = [false, -1], f;
(f = function (a, l) {
if (l > m) m = l;
var c = 0;
for (var i in a) {
if (!a[i]) continue;
h.push(s + "<td style='background: #272822;'"), v.push(l), s = "><pre class='scpos-monokai-code'>" + i + "</pre></td>";
if (a[i] instanceof Object) c += -(v[v.length - 1] = -f(a[i], l + 1));
else if (a[i] === t[0]) {
if (!++t[2] && String(Number(i)) === String(i)) h.push(s + "</tr><tr><td style='background: #272822;'"), v.push(l), s = "><pre class='scpos-monokai-code'>...</pre></td>", v[t[1]]--, c++;
v[t[1]]--, s += "</tr><tr>", c++;
} else h.push(s + "<td"), s = ">" + a[i] + "</td></tr><tr>", t[0] = a[i], t[1] = v.length, v.push(t[2] = -1), c++;
}
return c;
})(n, 0);
h.push(s.slice(0, -4));
s = h.shift();
while (h.length) {
t = (t = v.shift()) < 0 ? -t - 1 ? " rowspan=" + -t : "" : (t = m - t) ? " colspan=" + ++t : "";
s += t + h.shift();
}
return s;
}
function fmtedJSONify(n) {
var n = JSON.stringify(n), indent = ' ', r = '', space = '', i = 0, c, instr = false, innum = "";
if (!n) return "";
while (c = n[i++]) {
if (c.indexOf('"') !== -1 && (i < 2 || n[i - 2].indexOf('\\') === -1)) instr === false ? (r += c, instr = "") : (r += "<span class='scpos-monokai--" + (!n[i] || n[i].indexOf(':') === -1 ? "string" : "key") + "'>" + instr + "</span>\"", instr = false);
else if (instr !== false) instr += c;
else if (c.indexOf(',') !== -1) r += (innum ? "<span class='scpos-monokai--number'>" + innum + '</span>' : "") + c + '\n' + space, innum = "";
else if (c.indexOf(']') !== -1 || c.indexOf('}') !== -1) r += (innum ? "<span class='scpos-monokai--number'>" + innum + '</span>' : "") + '\n' + (space = space.slice(0, -indent.length)) + c, innum = "";
else if (c.indexOf('[') !== -1) r += n[i].indexOf(']') !== -1 ? (i++, '[]') : c + '\n' + (space += indent);
else if (c.indexOf('{') !== -1) r += n[i].indexOf('}') !== -1 ? (i++, '[]') : c + '\n' + (space += indent);
else if (c.indexOf(':') === -1) innum += c;
else r += ': ';
}
return r;
}
function createTableStatus(n) {
var x = -1, l;
while (l = n[++x]) for (var i = 0; i < 3; i++) l[i] = {
attr: i != 2 ? 'style="background: #272822;"' : '',
text: i != 2 ? '<pre class="scpos-monokai-code">' + (i ? '"' : '')
+ '<span class="scpos-monokai--' + (i ? 'string' : 'number')
+ '">' + l[i] + '</span>' + (i ? '"' : '') + '</pre>' : l[i]
};
n.unshift([{ text: '代码' }, { text: '信息' }, { text: '含义' }]);
return createTable(n);
}
function createTable(n) {
var s = "", x = -1, y = -1, l, b, t = "th";
while (l = n[++x]) {
s += "<tr>", y = -1;
while (b = l[++y]) s += "<" + t + (b.attr ? " " + b.attr : "") + ">" + (b.text ? b.text : "") + "</" + t + ">";
s += "</tr>", t = "td";
}
return s;
}
ScpoAJAX.post("./php/ajax.php", "operation=verify_aid&aid=" + location.search.slice(1), function (name) {
try {
name = JSON.parse(name);
} catch (err) {
return die(1);
}
if (!name) return die(2);
document.title += " - " + name;
var host = location.host.split('.');
host.shift();
var addr = decodeURIComponent(location.search.slice(1)).split('-'), head = addr.shift();
if (head == "api") addr = "php/ownapi.php?api=" + addr[0];
else addr = location.protocol + '//' + (head != '@' ? head + "." : "") + host.join('.') + "/" + addr.join('/');
var url = location.search.slice(1).split("-");
for (var i = url.length - 1; i >= 0; i--) url[i] = url[i].split('/').join(':');
url = location.protocol + "//" + location.host + "/" + url.join("/");
return ScpoAJAX.get(addr, "intro", function (data) {
try {
var intro = JSON.parse(data);
} catch (err) {
return die(1);
}
if (intro.code !== 0) return die(intro.code);
if (!intro.data) intro.data = {};
var ref, addr, t, eArr = sepData(intro.data.frmt ? intro.data.frmt : { empty: { "@": "@", 0: "暂无说明", 1: "no-demonstration" } });
return document.readyState == "complete" ? (ref = function () {
boxName.innerHTML = name;
boxDesc.innerHTML = intro.data.desc ? intro.data.desc : "";
boxAddr.innerHTML = fmtedJSONify(addr = typeof (t = intro.data.addr) == "undefined" ? url : Array.isArray(t) ? (t[0] ? t[0] = url : t.shift(), t[1] ? t : t[0]) : t === true ? url : t);
boxMtci.innerHTML = fmtedJSONify((t = function (v, n) { return !v ? n : Array.isArray(v) ? v[1] ? v : v[0] : v; })(intro.data.mtci, 'GET'));
boxType.innerHTML = fmtedJSONify(t = t(intro.data.type, 'application/json'));
t = Array.isArray(t) ? t[0] : t;
function show(n) { n.style.display = "inline"; }
switch (true) {
case t.indexOf("json") != -1:
show(shwJson);
boxFrmt.innerHTML = createTableIntro(eArr[0]);
boxDemo.innerHTML = fmtedJSONify(eArr[1]);
boxStat.innerHTML = createTableStatus(!intro.data.stat ? [[null, 'no-code', '此API无状态代码']] : (function (s) {
switch (s) {
case "normal":
return [
[-1, 'failed', 'API不可用'],
[0, 'success', '成功了'],
[1, 'under_repair', 'API在维护'],
[2, 'out_of_service', 'API已停用']
];
default:
return s;
}
}(intro.data.stat)));
break;
case t.indexOf("image") != -1:
show(shwImg);
boxPort.src = Array.isArray(addr) ? addr[0] : addr;
break;
deafult:
show(shwText);
for (var i in { desc: 0, addr: 0, mtci: 0, type: 0 }) delete intro.data[i];
for (var i in intro.data) boxText.innerHTML += i +":\n" + intro + "\n\n";
}
ready();
})() : window.onload = ref;
});
});
</script>
</head>
<body>
<h1 id="ldH" class="ncls">加载中<span id="ldP"> .</span></h1>
<div id="main" class="ncls">
<h1 id="boxName" style="display: inline-block;"></h1><br />
<span id="boxDesc"></span><br /><br />
<br />可用地址:<br />
<pre id="boxAddr" class="scpos-monokai-code scpos-monokai-div"></pre><br />
<br />请求方式:<br />
<pre id="boxMtci" class="scpos-monokai-code scpos-monokai-div"></pre><br />
<br />返回格式:<br />
<pre id="boxType" class="scpos-monokai-code scpos-monokai-div"></pre><br />
<div id="shwJson" class="ncls">
<br />数据说明:<br />
<table id="boxFrmt" border="1"></table>
<br />返回示例:<br />
<pre id="boxDemo" class="scpos-monokai-code scpos-monokai-div"></pre><br />
<br />状态说明:<br />
<table id="boxStat" border="1"></table>
</div>
<div id="shwImg" class="ncls">
<br />返回示例:<br />
<img id="boxPort" style="width: 100%;max-width: 40em;" alt="示例图片" /><br />
</div>
<div id="showText" class="ncls">
<br />返回示例:<br />
<pre id="boxText"></pre>
</div>
<br /><br /><br />联系我: <br />
QQ2507917746<br /><br /><br />
<a href='//seventop.top/support.html'>赞助本站</a>
<a href='./' style="margin-left: 1em;">回到主页</a>
</div>
</body>
</html>