Skip to content

Commit

Permalink
feat: add support for form url encoded
Browse files Browse the repository at this point in the history
  • Loading branch information
paulkr committed Mar 3, 2025
1 parent 55a1cd1 commit f5b7297
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 8 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@picahq/ai",
"version": "2.1.5",
"version": "2.1.6",
"description": "Pica AI SDK for Vercel AI SDK integration",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down
30 changes: 25 additions & 5 deletions src/pica.ts
Original file line number Diff line number Diff line change
Expand Up @@ -348,25 +348,28 @@ ${availablePlatformsInfo}
method?: string,
queryParams?: Record<string, string | number | boolean>,
headers?: Record<string, string | number | boolean>,
isFormData?: boolean
isFormData?: boolean,
isFormUrlEncoded?: boolean
): Promise<{
responseData: unknown;
requestConfig: RequestConfig;
}> {
try {
const headers = {
const newHeaders = {
...this.generateHeaders(),
'x-pica-connection-key': connectionKey,
'x-pica-action-id': actionId,
...(isFormData ? { 'Content-Type': 'multipart/form-data' } : {})
...(isFormData ? { 'Content-Type': 'multipart/form-data' } : {}),
...(isFormUrlEncoded ? { 'Content-Type': 'application/x-www-form-urlencoded' } : {}),
...headers
};

const url = `${this.baseUrl}/v1/passthrough${path.startsWith('/') ? path : '/' + path}`;

const requestConfig: RequestConfig = {
url,
method,
headers,
headers: newHeaders,
params: queryParams
};

Expand All @@ -387,6 +390,20 @@ ${availablePlatformsInfo}
requestConfig.data = formData;

Object.assign(requestConfig.headers, formData.getHeaders());
} else if (isFormUrlEncoded) {
const params = new URLSearchParams();

if (data && typeof data === 'object' && !Array.isArray(data)) {
Object.entries(data).forEach(([key, value]) => {
if (typeof value === 'object') {
params.append(key, JSON.stringify(value));
} else {
params.append(key, String(value));
}
});
}

requestConfig.data = params;
} else {
requestConfig.data = data;
}
Expand Down Expand Up @@ -495,6 +512,7 @@ ${availablePlatformsInfo}
queryParams: z.record(z.union([z.string(), z.number(), z.boolean()])).optional(),
headers: z.record(z.union([z.string(), z.number(), z.boolean()])).optional(),
isFormData: z.boolean().optional(),
isFormUrlEncoded: z.boolean().optional(),
}),
execute: async (params: {
platform: string;
Expand All @@ -509,6 +527,7 @@ ${availablePlatformsInfo}
queryParams?: Record<string, string | number | boolean>;
headers?: Record<string, string | number | boolean>;
isFormData?: boolean;
isFormUrlEncoded?: boolean;
}) => {
try {
if (!this.connections.some(conn => conn.key === params.connectionKey)) {
Expand Down Expand Up @@ -560,7 +579,8 @@ ${availablePlatformsInfo}
params.method,
params.queryParams,
params.headers,
params.isFormData
params.isFormData,
params.isFormUrlEncoded
);

return {
Expand Down

0 comments on commit f5b7297

Please sign in to comment.