This commit is contained in:
2021-11-07 22:24:56 +08:00
parent c524d9754d
commit c2eb3704f1
4 changed files with 344 additions and 13 deletions

18
main.js
View File

@@ -1,14 +1,12 @@
// import BtDonwold from "./util/index.js";
import Koa from "koa"
import requter from "./util/Router.js"
const app = new Koa();
// const bt = new BtDonwold({
// ip:"127.0.0.1",
// port:17844
// })
// const str = bt.base64_encode("C:/Users/116296/Desktop/debian-edu-11.0.0-amd64-netinst.iso.torrent")
// bt.addTask("C:/Users/116296/Desktop/debian-edu-11.0.0-amd64-netinst.iso.torrent")
// bt.getList()
// bt.delete("899d629411da83faf1893f77266d8b40b3adecde")
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(4000)

View File

@@ -1,12 +1,17 @@
{
"name": "btcore",
"version": "1.0.0",
"main": "index.js",
"main": "main.js",
"license": "MIT",
"scripts": {
"serve": "node main.js"
},
"dependencies": {
"axios": "^0.22.0",
"cheerio": "^1.0.0-rc.10",
"form-data": "^4.0.0"
"form-data": "^4.0.0",
"koa": "^2.13.4",
"koa-router": "^10.1.1"
},
"type": "module"
}

47
util/Router.js Normal file
View File

@@ -0,0 +1,47 @@
import fs from "fs"
import os from "os"
function addMapping(router, mapping) {
for (var url in mapping) {
if (url.startsWith('GET ')) {
var path = url.substring(4);
router.get(path, mapping[url]);
// console.log(`register URL mapping: GET ${path}`);
} else if (url.startsWith('POST ')) {
var path = url.substring(5);
router.post(path, mapping[url]);
// console.log(`register URL mapping: POST ${path}`);
} else {
console.log(`invalid URL: ${url}`);
}
}
}
function addControllers(router, controllers_dir) {
let ostype = os.type() == "Windows_NT"
let dir;
if (ostype) {
dir = __dirname.replace("\\bin", "")
} else {
dir = __dirname.replace("/bin", "")
}
var files = fs.readdirSync(dir + "/" + controllers_dir);
var js_files = files.filter((f) => {
return f.endsWith('.js');
});
for (var f of js_files) {
// console.log(`process controller: ${f}...`);
let mapping = require(dir + `/${controllers_dir}/` + f);
addMapping(router, mapping);
}
}
export default function (dir) {
let
controllers_dir = dir || 'controllers', // 如果不传参数,扫描目录默认为'controllers'
router = require('koa-router')();
addControllers(router, controllers_dir);
return router.routes();
// return 1;
};

283
yarn.lock
View File

@@ -2,6 +2,14 @@
# yarn lockfile v1
accepts@^1.3.5:
version "1.3.7"
resolved "https://registry.nlark.com/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80=
dependencies:
mime-types "~2.1.24"
negotiator "0.6.2"
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.nlark.com/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -19,6 +27,14 @@ boolbase@^1.0.0:
resolved "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
cache-content-type@^1.0.0:
version "1.0.1"
resolved "https://registry.nlark.com/cache-content-type/download/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c"
integrity sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=
dependencies:
mime-types "^2.1.18"
ylru "^1.2.0"
cheerio-select@^1.5.0:
version "1.5.0"
resolved "https://registry.nlark.com/cheerio-select/download/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823"
@@ -43,6 +59,11 @@ cheerio@^1.0.0-rc.10:
parse5-htmlparser2-tree-adapter "^6.0.1"
tslib "^2.2.0"
co@^4.6.0:
version "4.6.0"
resolved "https://registry.nlark.com/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -50,6 +71,26 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
content-disposition@~0.5.2:
version "0.5.3"
resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=
dependencies:
safe-buffer "5.1.2"
content-type@^1.0.4:
version "1.0.4"
resolved "https://registry.nlark.com/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js=
cookies@~0.8.0:
version "0.8.0"
resolved "https://registry.npm.taobao.org/cookies/download/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90"
integrity sha1-EpPOSzkXQKhAbjyYcOgoxLVPP5A=
dependencies:
depd "~2.0.0"
keygrip "~1.1.0"
css-select@^4.1.3:
version "4.1.3"
resolved "https://registry.nlark.com/css-select/download/css-select-4.1.3.tgz?cache=0&sync_timestamp=1622994263502&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-select%2Fdownload%2Fcss-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067"
@@ -66,11 +107,43 @@ css-what@^5.0.0, css-what@^5.0.1:
resolved "https://registry.npmmirror.com/css-what/download/css-what-5.1.0.tgz?cache=0&sync_timestamp=1633863955744&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcss-what%2Fdownload%2Fcss-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
integrity sha1-P3tweq32M7r2LCzrhXm1RbtA9/4=
debug@^4.1.1, debug@^4.3.2:
version "4.3.2"
resolved "https://registry.nlark.com/debug/download/debug-4.3.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
integrity sha1-8KScGKyHeeMdSgxgKd+3aHPHQos=
dependencies:
ms "2.1.2"
deep-equal@~1.0.1:
version "1.0.1"
resolved "https://registry.nlark.com/deep-equal/download/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
delegates@^1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/delegates/download/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
depd@^2.0.0, depd@~2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/depd/download/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
destroy@^1.0.4:
version "1.0.4"
resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
dom-serializer@^1.0.1, dom-serializer@^1.3.2:
version "1.3.2"
resolved "https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
@@ -101,11 +174,26 @@ domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0:
domelementtype "^2.2.0"
domhandler "^4.2.0"
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
encodeurl@^1.0.2:
version "1.0.2"
resolved "https://registry.nlark.com/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.nlark.com/entities/download/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=
escape-html@^1.0.3:
version "1.0.3"
resolved "https://registry.nlark.com/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
follow-redirects@^1.14.4:
version "1.14.4"
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
@@ -120,6 +208,23 @@ form-data@^4.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
fresh@~0.5.2:
version "0.5.2"
resolved "https://registry.nlark.com/fresh/download/fresh-0.5.2.tgz?cache=0&sync_timestamp=1618846949012&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffresh%2Fdownload%2Ffresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
has-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.nlark.com/has-symbols/download/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=
has-tostringtag@^1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/has-tostringtag/download/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
integrity sha1-fhM4GKfTlHNPlB5zw9P5KR5liyU=
dependencies:
has-symbols "^1.0.2"
htmlparser2@^6.1.0:
version "6.1.0"
resolved "https://registry.nlark.com/htmlparser2/download/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
@@ -130,18 +235,129 @@ htmlparser2@^6.1.0:
domutils "^2.5.2"
entities "^2.0.0"
http-assert@^1.3.0:
version "1.5.0"
resolved "https://registry.nlark.com/http-assert/download/http-assert-1.5.0.tgz?cache=0&sync_timestamp=1629872663110&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhttp-assert%2Fdownload%2Fhttp-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f"
integrity sha1-w4nM2HrBbtLfpiRv1zuSaqAOa48=
dependencies:
deep-equal "~1.0.1"
http-errors "~1.8.0"
http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0:
version "1.8.0"
resolved "https://registry.nlark.com/http-errors/download/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507"
integrity sha1-ddG75JfhBE9R5O6ecEpi8o0zZQc=
dependencies:
depd "~1.1.2"
inherits "2.0.4"
setprototypeof "1.2.0"
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
inherits@2.0.4:
version "2.0.4"
resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
is-generator-function@^1.0.7:
version "1.0.10"
resolved "https://registry.nlark.com/is-generator-function/download/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
integrity sha1-8VWLrxrBfg3up8BBXEODUf8rPHI=
dependencies:
has-tostringtag "^1.0.0"
keygrip@~1.1.0:
version "1.1.0"
resolved "https://registry.nlark.com/keygrip/download/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226"
integrity sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY=
dependencies:
tsscmp "1.0.6"
koa-compose@^4.1.0:
version "4.1.0"
resolved "https://registry.nlark.com/koa-compose/download/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877"
integrity sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc=
koa-convert@^2.0.0:
version "2.0.0"
resolved "https://registry.nlark.com/koa-convert/download/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5"
integrity sha1-hqDETYHUBVG64i/uZwmQRXPupPU=
dependencies:
co "^4.6.0"
koa-compose "^4.1.0"
koa-router@^10.1.1:
version "10.1.1"
resolved "https://registry.nlark.com/koa-router/download/koa-router-10.1.1.tgz?cache=0&sync_timestamp=1629648499991&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fkoa-router%2Fdownload%2Fkoa-router-10.1.1.tgz#20809f82648518b84726cd445037813cd99f17ff"
integrity sha1-IICfgmSFGLhHJs1EUDeBPNmfF/8=
dependencies:
debug "^4.1.1"
http-errors "^1.7.3"
koa-compose "^4.1.0"
methods "^1.1.2"
path-to-regexp "^6.1.0"
koa@^2.13.4:
version "2.13.4"
resolved "https://registry.npmmirror.com/koa/download/koa-2.13.4.tgz?cache=0&sync_timestamp=1634623957508&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fkoa%2Fdownload%2Fkoa-2.13.4.tgz#ee5b0cb39e0b8069c38d115139c774833d32462e"
integrity sha1-7lsMs54LgGnDjRFROcd0gz0yRi4=
dependencies:
accepts "^1.3.5"
cache-content-type "^1.0.0"
content-disposition "~0.5.2"
content-type "^1.0.4"
cookies "~0.8.0"
debug "^4.3.2"
delegates "^1.0.0"
depd "^2.0.0"
destroy "^1.0.4"
encodeurl "^1.0.2"
escape-html "^1.0.3"
fresh "~0.5.2"
http-assert "^1.3.0"
http-errors "^1.6.3"
is-generator-function "^1.0.7"
koa-compose "^4.1.0"
koa-convert "^2.0.0"
on-finished "^2.3.0"
only "~0.0.2"
parseurl "^1.3.2"
statuses "^1.5.0"
type-is "^1.6.16"
vary "^1.1.2"
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
methods@^1.1.2:
version "1.1.2"
resolved "https://registry.nlark.com/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
mime-db@1.50.0:
version "1.50.0"
resolved "https://registry.nlark.com/mime-db/download/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f"
integrity sha1-q9SslOmNPA4YUBbGerRdX95AwR8=
mime-types@^2.1.12:
mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.24:
version "2.1.33"
resolved "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb"
integrity sha1-H6EqkERy+v0GjkjZ6EAfdNP3Dts=
dependencies:
mime-db "1.50.0"
ms@2.1.2:
version "2.1.2"
resolved "https://registry.npmmirror.com/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=
nth-check@^2.0.0:
version "2.0.1"
resolved "https://registry.nlark.com/nth-check/download/nth-check-2.0.1.tgz?cache=0&sync_timestamp=1631793658026&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnth-check%2Fdownload%2Fnth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
@@ -149,6 +365,18 @@ nth-check@^2.0.0:
dependencies:
boolbase "^1.0.0"
on-finished@^2.3.0:
version "2.3.0"
resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
dependencies:
ee-first "1.1.1"
only@~0.0.2:
version "0.0.2"
resolved "https://registry.nlark.com/only/download/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=
parse5-htmlparser2-tree-adapter@^6.0.1:
version "6.0.1"
resolved "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
@@ -161,7 +389,60 @@ parse5@^6.0.1:
resolved "https://registry.nlark.com/parse5/download/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
integrity sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=
parseurl@^1.3.2:
version "1.3.3"
resolved "https://registry.nlark.com/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=
path-to-regexp@^6.1.0:
version "6.2.0"
resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38"
integrity sha1-97OAMzYQTDRoia3s5hRmkjBkXzg=
safe-buffer@5.1.2:
version "5.1.2"
resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1618847044058&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
setprototypeof@1.2.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=
"statuses@>= 1.5.0 < 2", statuses@^1.5.0:
version "1.5.0"
resolved "https://registry.nlark.com/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
toidentifier@1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=
tslib@^2.2.0:
version "2.3.1"
resolved "https://registry.nlark.com/tslib/download/tslib-2.3.1.tgz?cache=0&sync_timestamp=1628722833529&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha1-6KM1rdXOrlGqJh0ypJAVjvBC7wE=
tsscmp@1.0.6:
version "1.0.6"
resolved "https://registry.nlark.com/tsscmp/download/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
integrity sha1-hbmVg6w1iexL/vgltQAKqRHWBes=
type-is@^1.6.16:
version "1.6.18"
resolved "https://registry.nlark.com/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=
dependencies:
media-typer "0.3.0"
mime-types "~2.1.24"
vary@^1.1.2:
version "1.1.2"
resolved "https://registry.nlark.com/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
ylru@^1.2.0:
version "1.2.1"
resolved "https://registry.nlark.com/ylru/download/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f"
integrity sha1-9Xa2M0FUeYnB3nuiiHYJI7J/6E8=