dev: add file output mode for convert

This commit is contained in:
KernelDeimos
2025-02-06 13:43:09 -05:00
parent 5e30958a14
commit ce0ab02f39
2 changed files with 34 additions and 1 deletions
@@ -1,3 +1,4 @@
const { HLWrite } = require("../../filesystem/hl_operations/hl_write");
const { LLRead } = require("../../filesystem/ll_operations/ll_read");
const BaseService = require("../../services/BaseService");
const { TypedValue } = require("../../services/drivers/meta/Runtime");
@@ -27,7 +28,15 @@ class ConvertAPIService extends BaseService {
},
source: {
type: 'file',
required: true,
},
// File output mode
dest: {
type: 'file',
},
overwrite: { type: 'flag' },
dedupe_name: { type: 'flag' },
},
result_choices: [
{
@@ -52,7 +61,13 @@ class ConvertAPIService extends BaseService {
static IMPLEMENTS = {
['convert-files']: {
async convert ({ from, to, source }) {
async convert ({
// Require parameters
from, to, source,
// File Output Mode
dest, overwrite, dedupe_name,
}) {
const convertapi = this.convertapi;
const axios = this.require('axios');
@@ -78,6 +93,22 @@ class ConvertAPIService extends BaseService {
responseType: 'stream',
});
if ( dest !== undefined ) {
const hl_write = new HLWrite();
return await hl_write.run({
destination_or_parent: await dest.get('fs-node'),
fallback_name: fileInfo.FileName,
overwrite,
dedupe_name,
file: {
originalname: fileInfo.FileName,
stream: downloadResponse.data,
size: fileInfo.FileSize,
},
actor: Context.get('actor'),
});
}
return new TypedValue({
$: 'stream',
content_type: mime.contentType(fileInfo.FileName),
@@ -226,6 +226,8 @@ class File extends BaseType {
* @throws {APIError} If input format is invalid
*/
async consolidate (ctx, input, { arg_name }) {
if ( input === undefined ) return undefined;
if ( input instanceof FileFacade ) {
return input;
}