73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
import { uploadFromUrl } from "../../../../../services/drive/upload-from-url.js";
|
|
import define from "../../../define.js";
|
|
import { DriveFiles } from "../../../../../models/index.js";
|
|
import { publishMainStream } from "../../../../../services/stream.js";
|
|
import { HOUR } from "../../../../../const.js";
|
|
export const meta = {
|
|
tags: [
|
|
"drive"
|
|
],
|
|
limit: {
|
|
duration: HOUR,
|
|
max: 60
|
|
},
|
|
description: "Request the server to download a new drive file from the specified URL.",
|
|
requireCredential: true,
|
|
kind: "write:drive"
|
|
};
|
|
export const paramDef = {
|
|
type: "object",
|
|
properties: {
|
|
url: {
|
|
type: "string"
|
|
},
|
|
folderId: {
|
|
type: "string",
|
|
format: "misskey:id",
|
|
nullable: true,
|
|
default: null
|
|
},
|
|
isSensitive: {
|
|
type: "boolean",
|
|
default: false
|
|
},
|
|
comment: {
|
|
type: "string",
|
|
nullable: true,
|
|
maxLength: 512,
|
|
default: null
|
|
},
|
|
marker: {
|
|
type: "string",
|
|
nullable: true,
|
|
default: null
|
|
},
|
|
force: {
|
|
type: "boolean",
|
|
default: false
|
|
}
|
|
},
|
|
required: [
|
|
"url"
|
|
]
|
|
};
|
|
export default define(meta, paramDef, async (ps, user)=>{
|
|
uploadFromUrl({
|
|
url: ps.url,
|
|
user,
|
|
folderId: ps.folderId,
|
|
sensitive: ps.isSensitive,
|
|
force: ps.force,
|
|
comment: ps.comment
|
|
}).then((file)=>{
|
|
DriveFiles.pack(file, {
|
|
self: true
|
|
}).then((packedFile)=>{
|
|
publishMainStream(user.id, "urlUploadFinished", {
|
|
marker: ps.marker,
|
|
file: packedFile
|
|
});
|
|
});
|
|
});
|
|
});
|