mirror of
https://github.com/anatolykopyl/movieroom-core.git
synced 2026-03-26 12:54:51 +00:00
Direct file upload
This commit is contained in:
160
package-lock.json
generated
160
package-lock.json
generated
@@ -11,8 +11,10 @@
|
|||||||
"@koa/cors": "^3.1.0",
|
"@koa/cors": "^3.1.0",
|
||||||
"@types/mongoose": "^5.11.97",
|
"@types/mongoose": "^5.11.97",
|
||||||
"dotenv": "^10.0.0",
|
"dotenv": "^10.0.0",
|
||||||
|
"formidable": "^2.0.1",
|
||||||
"handbrake-js": "^6.0.0",
|
"handbrake-js": "^6.0.0",
|
||||||
"koa": "^2.13.4",
|
"koa": "^2.13.4",
|
||||||
|
"koa-body": "^4.2.0",
|
||||||
"koa-bodyparser": "^4.3.0",
|
"koa-bodyparser": "^4.3.0",
|
||||||
"koa-json": "^2.0.2",
|
"koa-json": "^2.0.2",
|
||||||
"koa-router": "^10.1.1",
|
"koa-router": "^10.1.1",
|
||||||
@@ -291,6 +293,14 @@
|
|||||||
"@types/range-parser": "*"
|
"@types/range-parser": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/formidable": {
|
||||||
|
"version": "1.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz",
|
||||||
|
"integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/handbrake-js": {
|
"node_modules/@types/handbrake-js": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/handbrake-js/-/handbrake-js-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/handbrake-js/-/handbrake-js-5.0.1.tgz",
|
||||||
@@ -896,6 +906,11 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/asap": {
|
||||||
|
"version": "2.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||||
|
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
|
||||||
|
},
|
||||||
"node_modules/balanced-match": {
|
"node_modules/balanced-match": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||||
@@ -2074,6 +2089,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
||||||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
||||||
},
|
},
|
||||||
|
"node_modules/dezalgo": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
|
||||||
|
"dependencies": {
|
||||||
|
"asap": "^2.0.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/diff": {
|
"node_modules/diff": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
||||||
@@ -2831,6 +2855,31 @@
|
|||||||
"node": ">=12.20.0"
|
"node": ">=12.20.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/formidable": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"dezalgo": "1.0.3",
|
||||||
|
"hexoid": "1.0.0",
|
||||||
|
"once": "1.4.0",
|
||||||
|
"qs": "6.9.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://ko-fi.com/tunnckoCore/commissions"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/formidable/node_modules/qs": {
|
||||||
|
"version": "6.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
|
||||||
|
"integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/freelist": {
|
"node_modules/freelist": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz",
|
||||||
@@ -3155,6 +3204,14 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/hexoid": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/http-assert": {
|
"node_modules/http-assert": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
|
||||||
@@ -3849,6 +3906,36 @@
|
|||||||
"node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4"
|
"node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/koa-body": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/formidable": "^1.0.31",
|
||||||
|
"co-body": "^5.1.1",
|
||||||
|
"formidable": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/koa-body/node_modules/co-body": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"inflation": "^2.0.0",
|
||||||
|
"qs": "^6.4.0",
|
||||||
|
"raw-body": "^2.2.0",
|
||||||
|
"type-is": "^1.6.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/koa-body/node_modules/formidable": {
|
||||||
|
"version": "1.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz",
|
||||||
|
"integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==",
|
||||||
|
"deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://ko-fi.com/tunnckoCore/commissions"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/koa-bodyparser": {
|
"node_modules/koa-bodyparser": {
|
||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz",
|
||||||
@@ -7018,6 +7105,14 @@
|
|||||||
"@types/range-parser": "*"
|
"@types/range-parser": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/formidable": {
|
||||||
|
"version": "1.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz",
|
||||||
|
"integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==",
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/handbrake-js": {
|
"@types/handbrake-js": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/handbrake-js/-/handbrake-js-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/handbrake-js/-/handbrake-js-5.0.1.tgz",
|
||||||
@@ -7486,6 +7581,11 @@
|
|||||||
"es-abstract": "^1.19.0"
|
"es-abstract": "^1.19.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"asap": {
|
||||||
|
"version": "2.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||||
|
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
|
||||||
|
},
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||||
@@ -8287,6 +8387,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
||||||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
||||||
},
|
},
|
||||||
|
"dezalgo": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
|
||||||
|
"requires": {
|
||||||
|
"asap": "^2.0.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"diff": {
|
"diff": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
||||||
@@ -8881,6 +8990,24 @@
|
|||||||
"fetch-blob": "^3.1.2"
|
"fetch-blob": "^3.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"formidable": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==",
|
||||||
|
"requires": {
|
||||||
|
"dezalgo": "1.0.3",
|
||||||
|
"hexoid": "1.0.0",
|
||||||
|
"once": "1.4.0",
|
||||||
|
"qs": "6.9.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"qs": {
|
||||||
|
"version": "6.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
|
||||||
|
"integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"freelist": {
|
"freelist": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz",
|
||||||
@@ -9102,6 +9229,11 @@
|
|||||||
"integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
|
"integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"hexoid": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g=="
|
||||||
|
},
|
||||||
"http-assert": {
|
"http-assert": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
|
||||||
@@ -9610,6 +9742,34 @@
|
|||||||
"vary": "^1.1.2"
|
"vary": "^1.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"koa-body": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==",
|
||||||
|
"requires": {
|
||||||
|
"@types/formidable": "^1.0.31",
|
||||||
|
"co-body": "^5.1.1",
|
||||||
|
"formidable": "^1.1.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"co-body": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==",
|
||||||
|
"requires": {
|
||||||
|
"inflation": "^2.0.0",
|
||||||
|
"qs": "^6.4.0",
|
||||||
|
"raw-body": "^2.2.0",
|
||||||
|
"type-is": "^1.6.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"formidable": {
|
||||||
|
"version": "1.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz",
|
||||||
|
"integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"koa-bodyparser": {
|
"koa-bodyparser": {
|
||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz",
|
||||||
|
|||||||
@@ -14,8 +14,10 @@
|
|||||||
"@koa/cors": "^3.1.0",
|
"@koa/cors": "^3.1.0",
|
||||||
"@types/mongoose": "^5.11.97",
|
"@types/mongoose": "^5.11.97",
|
||||||
"dotenv": "^10.0.0",
|
"dotenv": "^10.0.0",
|
||||||
|
"formidable": "^2.0.1",
|
||||||
"handbrake-js": "^6.0.0",
|
"handbrake-js": "^6.0.0",
|
||||||
"koa": "^2.13.4",
|
"koa": "^2.13.4",
|
||||||
|
"koa-body": "^4.2.0",
|
||||||
"koa-bodyparser": "^4.3.0",
|
"koa-bodyparser": "^4.3.0",
|
||||||
"koa-json": "^2.0.2",
|
"koa-json": "^2.0.2",
|
||||||
"koa-router": "^10.1.1",
|
"koa-router": "^10.1.1",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Schema } from 'mongoose';
|
|||||||
|
|
||||||
export interface Room {
|
export interface Room {
|
||||||
id: string;
|
id: string;
|
||||||
magnet: string;
|
magnet?: string;
|
||||||
createdAt: Date;
|
createdAt: Date;
|
||||||
movie?: string;
|
movie?: string;
|
||||||
filename?: string;
|
filename?: string;
|
||||||
@@ -16,7 +16,7 @@ export interface Room {
|
|||||||
|
|
||||||
export const roomSchema = new Schema<Room>({
|
export const roomSchema = new Schema<Room>({
|
||||||
id: { type: String, required: true },
|
id: { type: String, required: true },
|
||||||
magnet: { type: String, required: true },
|
magnet: { type: String, required: false },
|
||||||
createdAt: { type: Date, required: true },
|
createdAt: { type: Date, required: true },
|
||||||
movie: { type: String, required: false },
|
movie: { type: String, required: false },
|
||||||
filename: { type: String, required: false },
|
filename: { type: String, required: false },
|
||||||
|
|||||||
@@ -1,18 +1,22 @@
|
|||||||
import Router from 'koa-router';
|
import Router from 'koa-router';
|
||||||
|
import KoaBody from 'koa-body';
|
||||||
import short from 'short-uuid';
|
import short from 'short-uuid';
|
||||||
import WebTorrent from 'webtorrent';
|
import WebTorrent from 'webtorrent';
|
||||||
import { model } from 'mongoose';
|
import { model } from 'mongoose';
|
||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
import { errorResponse } from './utils';
|
import { errorResponse } from './utils';
|
||||||
import processDownloaded from './processDownloaded';
|
import processDownloaded from './processDownloaded';
|
||||||
import { Room, roomSchema } from './interfaces';
|
import { Room, roomSchema } from './interfaces';
|
||||||
|
import type formidable from 'formidable';
|
||||||
|
|
||||||
const RoomModel = model<Room>('Room', roomSchema);
|
const RoomModel = model<Room>('Room', roomSchema);
|
||||||
const tCli = new WebTorrent();
|
const tCli = new WebTorrent();
|
||||||
|
|
||||||
const router = new Router({ prefix: '/api' });
|
const router = new Router({ prefix: '/api' });
|
||||||
|
const koaBody = KoaBody({ multipart: true });
|
||||||
|
|
||||||
router.post('/room', async (ctx) => {
|
router.post('/roomMagnet', async (ctx) => {
|
||||||
if (ctx.request.body.magnet) {
|
if (ctx.request.body.magnet) {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve) {
|
||||||
tCli.add(ctx.request.body.magnet, { path: process.env.TEMP_FILES }, async function (torrent) {
|
tCli.add(ctx.request.body.magnet, { path: process.env.TEMP_FILES }, async function (torrent) {
|
||||||
@@ -47,8 +51,32 @@ router.post('/room', async (ctx) => {
|
|||||||
resolve(null);
|
resolve(null);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
({ status: ctx.status, body: ctx.body } = errorResponse('room-01', 'Invalid magnet link'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/roomFile', koaBody, async (ctx) => {
|
||||||
|
if (ctx.request.files.file) {
|
||||||
|
const file = ctx.request.files.file as formidable.File;
|
||||||
|
const id = (short()).new();
|
||||||
|
const room = {
|
||||||
|
id,
|
||||||
|
createdAt: new Date(),
|
||||||
|
movie: file.name,
|
||||||
|
position: 0,
|
||||||
|
syncedAt: new Date(),
|
||||||
|
downloaded: true,
|
||||||
|
filename: `${id}.mp4`,
|
||||||
|
};
|
||||||
|
const doc = new RoomModel(room);
|
||||||
|
await doc.save();
|
||||||
|
await fs.cpSync(file.path, `files/${id}.mp4`);
|
||||||
|
|
||||||
|
ctx.body = room;
|
||||||
|
} else {
|
||||||
|
({ status: ctx.status, body: ctx.body } = errorResponse('room-02', 'Invalid file'));
|
||||||
}
|
}
|
||||||
({ status: ctx.status, body: ctx.body } = errorResponse('room-01', 'Invalid magnet link'));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/room', async (ctx) => {
|
router.get('/room', async (ctx) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user