All files / sdk utils.ts

90.62% Statements 29/32
80% Branches 20/25
100% Functions 2/2
90% Lines 27/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 545x 5x   5x 2875x 2875x 11377x 11377x 11377x   11377x 2x 2x           2x         2875x     5x 2x 2x   9x 1x 1x 1x   1x   1x 1x 1x 1x               1x       2x  
import axios from "axios";
import fs from "fs";
 
export const convertReqParams = (properties: Record<string, any>) => {
    const clonedProperties = JSON.parse(JSON.stringify(properties));
    for (const propertyKey of Object.keys(clonedProperties)) {
        const object = clonedProperties[propertyKey];
        const isObject = typeof object === "object";
        const isFile = isObject && (object?.required?.includes("name") && object?.required?.includes("content"));
 
        if (isFile) {
            const newKey = `${propertyKey}_file_uri_path`;
            clonedProperties[newKey] = {
                type: "string",
                title: "Name",
                description: "Local absolute path to the file or http url to the file"
            }
 
            delete clonedProperties[propertyKey];
        }
    }
 
 
    return clonedProperties;
}
 
export const converReqParamForActionExecution = async (params: Record<string, any>) => {
    const clonedParams = JSON.parse(JSON.stringify(params));
    for (const key of Object.keys(clonedParams)) {
 
        if (key.includes("file_uri_path")) {
            const initKey = key.replace("_file_uri_path", "");
            clonedParams[initKey] = {};
            const newKey = clonedParams[initKey];
 
            const valuePassedByClient = clonedParams[key];
            // if not http url
            if (valuePassedByClient.startsWith("http") || valuePassedByClient.startsWith("https")) {
                newKey.name = valuePassedByClient.split("/").pop();
                const response = await axios.get(valuePassedByClient, { responseType: 'arraybuffer' });
                newKey.content = Buffer.from(response.data, 'binary').toString('base64');
            } else E{
                const file = await fs.promises.readFile(valuePassedByClient, {
                    encoding: null
                });
                newKey.content = file.toString('base64');
                newKey.name = valuePassedByClient.split("/").pop();
            }
            delete clonedParams[key];
        }
    }
 
    return clonedParams;
}