diff --git a/js/src/sdk/index2.spec.ts b/js/src/sdk/index2.spec.ts deleted file mode 100644 index 6dc3a26c587..00000000000 --- a/js/src/sdk/index2.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { getTestConfig } from "../../config/getTestConfig"; -import { Composio } from "./index"; - -const { COMPOSIO_API_KEY, BACKEND_HERMES_URL } = getTestConfig(); - -describe("Entity spec suite", () => { - it("should get an entity and then fetch a connection for a normal app", async () => { - const app = "github"; - const composio = new Composio({ - apiKey: COMPOSIO_API_KEY, - baseUrl: BACKEND_HERMES_URL, - }); - const entity = composio.getEntity("default"); - - expect(entity.id).toBe("default"); - - const connection = await entity.getConnection({ app: app! }); - expect(connection?.appUniqueId).toBe(app); - }); -}); diff --git a/js/src/sdk/models/Entity.spec.ts b/js/src/sdk/models/Entity.spec.ts index 0ee309730f2..c93cc6825f3 100644 --- a/js/src/sdk/models/Entity.spec.ts +++ b/js/src/sdk/models/Entity.spec.ts @@ -43,6 +43,18 @@ describe("Entity class tests", () => { expect(connection?.appUniqueId).toBe(app); }); + it("get connection for rand", async () => { + const entity2 = new Entity(backendClient, "ckemvy" + Date.now()); + let hasError = false; + try { + const connection = await entity2.getConnection({ app: "gmail" }); + expect(connection?.appUniqueId).toBe("gmail"); + } catch (error) { + hasError = true; + } + expect(hasError).toBe(true); + }); + it("execute action", async () => { const connectedAccount = await entity.getConnection({ app: "github" }); diff --git a/js/src/sdk/models/Entity.ts b/js/src/sdk/models/Entity.ts index 5f0e429e4a8..cccb8e0d564 100644 --- a/js/src/sdk/models/Entity.ts +++ b/js/src/sdk/models/Entity.ts @@ -179,10 +179,6 @@ export class Entity { user_uuid: this.id!, }); - if (!connectedAccounts.items || connectedAccounts.items.length === 0) { - return null; - } - for (const account of connectedAccounts.items!) { if (account?.labels && account?.labels.includes(LABELS.PRIMARY)) { latestAccount = account; diff --git a/js/src/sdk/utils/processor/fileUtils.ts b/js/src/sdk/utils/processor/fileUtils.ts index 8ac43693b8d..e87c1713133 100644 --- a/js/src/sdk/utils/processor/fileUtils.ts +++ b/js/src/sdk/utils/processor/fileUtils.ts @@ -7,8 +7,11 @@ const readFileContent = async ( path: string ): Promise<{ content: string; mimeType: string }> => { try { - const content = require("fs").readFileSync(path, "utf-8"); - return { content, mimeType: "text/plain" }; + const content = require("fs").readFileSync(path); + return { + content: content.toString("base64"), + mimeType: "application/octet-stream", + }; } catch (error) { throw new Error(`Error reading file at ${path}: ${error}`); } @@ -17,10 +20,16 @@ const readFileContent = async ( const readFileContentFromURL = async ( path: string ): Promise<{ content: string; mimeType: string }> => { - const response = await fetch(path); - const content = await response.text(); - const mimeType = response.headers.get("content-type") || "text/plain"; - return { content, mimeType }; + const response = await axios.get(path, { + responseType: "arraybuffer", + }); + const content = Buffer.from(response.data); + const mimeType = + response.headers["content-type"] || "application/octet-stream"; + return { + content: content.toString("base64"), + mimeType, + }; }; const uploadFileToS3 = async ( @@ -29,13 +38,17 @@ const uploadFileToS3 = async ( appName: string, mimeType: string ): Promise => { + const extension = mimeType.split("/")[1] || "bin"; const response = await apiClient.actionsV2.createFileUploadUrl({ body: { action: actionName, app: appName, - filename: `${actionName}_${Date.now()}`, + filename: `${actionName}_${Date.now()}.${extension}`, mimetype: mimeType, - md5: crypto.createHash("md5").update(content).digest("hex"), + md5: crypto + .createHash("md5") + .update(Buffer.from(content, "base64")) + .digest("hex"), }, path: { fileType: "request", @@ -47,11 +60,15 @@ const uploadFileToS3 = async ( const s3key = data!.key; try { - // Upload the file to the S3 bucket - await axios.put(signedURL, content); + const buffer = Buffer.from(content, "base64"); + await axios.put(signedURL, buffer, { + headers: { + "Content-Type": mimeType, + "Content-Length": buffer.length, + }, + }); } catch (e) { const error = e as AxiosError; - // if error is 403, then continue if (error instanceof AxiosError && error.response?.status === 403) { return signedURL; }