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 54 55 56 57 58 59 60 61 62 63 64 65 | 1x 1x 1x 1x | import type {
RequestHandlerFunction,
ResponseTransformFunction,
} from '@shared/types/ai-providers/config';
import type { FileRetrieveResponseBody } from '@shared/types/api/routes/files-api';
import { vertexAPIConfig } from './api';
import { getBucketAndFile } from './utils';
export const googleRetrieveFileRequestHandler: RequestHandlerFunction = async ({
c,
saTarget,
saRequestData,
}) => {
const fileId = saRequestData.url.split('/').pop();
const { bucket, file } = getBucketAndFile(fileId ?? '');
const googleHeaders = await vertexAPIConfig.headers({
c,
saTarget,
saRequestData,
});
const url = `https://storage.googleapis.com/${bucket}/${file}`;
const response = await fetch(url, {
headers: googleHeaders as Record<string, string>,
method: 'HEAD',
});
if (response.status !== 200) {
throw new Error('File not found');
}
const responseHeaders = response.headers;
const bytes = responseHeaders.get('Content-Length');
const updatedAt = responseHeaders.get('Last-Modified');
const createdAt = responseHeaders.get('Date');
const id = fileId;
const filename = file.split('/').pop();
const purpose = null;
const status = 'processed';
const fileObject = {
bytes: Number.parseInt(bytes ?? '0', 10),
updatedAt: new Date(updatedAt ?? '').getTime(),
createdAt: new Date(createdAt ?? '').getTime(),
id,
filename,
purpose,
status,
};
return new Response(JSON.stringify(fileObject), {
headers: { 'Content-Type': 'application/json' },
});
};
export const googleRetrieveFileResponseTransform: ResponseTransformFunction = (
response,
) => {
return response as unknown as FileRetrieveResponseBody;
};
|