box-typescript-sdk-gen
Version:
Official Box TypeScript Generated SDK
221 lines (220 loc) • 10.8 kB
text/typescript
import { serializeFileFull } from '../schemas/fileFull.generated.js';
import { deserializeFileFull } from '../schemas/fileFull.generated.js';
import { serializeFiles } from '../schemas/files.generated.js';
import { deserializeFiles } from '../schemas/files.generated.js';
import { serializeUploadFileRequestBodyAttributesField } from '../managers/uploads.generated.js';
import { deserializeUploadFileRequestBodyAttributesField } from '../managers/uploads.generated.js';
import { serializeUploadFileRequestBodyAttributesParentField } from '../managers/uploads.generated.js';
import { deserializeUploadFileRequestBodyAttributesParentField } from '../managers/uploads.generated.js';
import { serializeGetFileThumbnailUrlExtension } from '../managers/files.generated.js';
import { deserializeGetFileThumbnailUrlExtension } from '../managers/files.generated.js';
import { serializeGetFileThumbnailByIdExtension } from '../managers/files.generated.js';
import { deserializeGetFileThumbnailByIdExtension } from '../managers/files.generated.js';
import { serializeTrashFile } from '../schemas/trashFile.generated.js';
import { deserializeTrashFile } from '../schemas/trashFile.generated.js';
import { serializeUpdateFileByIdRequestBody } from '../managers/files.generated.js';
import { deserializeUpdateFileByIdRequestBody } from '../managers/files.generated.js';
import { serializeUpdateFileByIdRequestBodyLockField } from '../managers/files.generated.js';
import { deserializeUpdateFileByIdRequestBodyLockField } from '../managers/files.generated.js';
import { serializeUpdateFileByIdRequestBodyLockAccessField } from '../managers/files.generated.js';
import { deserializeUpdateFileByIdRequestBodyLockAccessField } from '../managers/files.generated.js';
import { serializeCopyFileRequestBody } from '../managers/files.generated.js';
import { deserializeCopyFileRequestBody } from '../managers/files.generated.js';
import { serializeCopyFileRequestBodyParentField } from '../managers/files.generated.js';
import { deserializeCopyFileRequestBodyParentField } from '../managers/files.generated.js';
import { GetFileByIdOptionalsInput } from '../managers/files.generated.js';
import { UpdateFileByIdOptionalsInput } from '../managers/files.generated.js';
import { GetFileByIdOptionals } from '../managers/files.generated.js';
import { UpdateFileByIdOptionals } from '../managers/files.generated.js';
import { BoxClient } from '../client.generated.js';
import { FileFull } from '../schemas/fileFull.generated.js';
import { Files } from '../schemas/files.generated.js';
import { UploadFileRequestBody } from '../managers/uploads.generated.js';
import { UploadFileRequestBodyAttributesField } from '../managers/uploads.generated.js';
import { UploadFileRequestBodyAttributesParentField } from '../managers/uploads.generated.js';
import { GetFileThumbnailUrlExtension } from '../managers/files.generated.js';
import { Buffer } from '../internal/utils.js';
import { GetFileThumbnailByIdExtension } from '../managers/files.generated.js';
import { GetFileByIdQueryParams } from '../managers/files.generated.js';
import { GetFileByIdHeaders } from '../managers/files.generated.js';
import { TrashFile } from '../schemas/trashFile.generated.js';
import { UpdateFileByIdRequestBody } from '../managers/files.generated.js';
import { UpdateFileByIdRequestBodyLockField } from '../managers/files.generated.js';
import { UpdateFileByIdRequestBodyLockAccessField } from '../managers/files.generated.js';
import { UpdateFileByIdQueryParams } from '../managers/files.generated.js';
import { CopyFileRequestBody } from '../managers/files.generated.js';
import { CopyFileRequestBodyParentField } from '../managers/files.generated.js';
import { getUuid } from '../internal/utils.js';
import { generateByteStream } from '../internal/utils.js';
import { readByteStream } from '../internal/utils.js';
import { generateByteStreamFromBuffer } from '../internal/utils.js';
import { generateByteBuffer } from '../internal/utils.js';
import { bufferEquals } from '../internal/utils.js';
import { ByteStream } from '../internal/utils.js';
import { createNull } from '../internal/utils.js';
import { uploadNewFile } from './commons.generated.js';
import { getDefaultClient } from './commons.generated.js';
import { SerializedData } from '../serialization/json.js';
import { sdIsEmpty } from '../serialization/json.js';
import { sdIsBoolean } from '../serialization/json.js';
import { sdIsNumber } from '../serialization/json.js';
import { sdIsString } from '../serialization/json.js';
import { sdIsList } from '../serialization/json.js';
import { sdIsMap } from '../serialization/json.js';
export const client: BoxClient = getDefaultClient();
export async function uploadFile(
fileName: string,
fileStream: ByteStream,
): Promise<FileFull> {
const uploadedFiles: Files = await client.uploads.uploadFile({
attributes: {
name: fileName,
parent: { id: '0' } satisfies UploadFileRequestBodyAttributesParentField,
} satisfies UploadFileRequestBodyAttributesField,
file: fileStream,
} satisfies UploadFileRequestBody);
return uploadedFiles.entries![0];
}
test('testGetFileThumbnailUrl', async function testGetFileThumbnailUrl(): Promise<any> {
const thumbnailFileName: string = getUuid();
const thumbnailContentStream: ByteStream = generateByteStream(1024 * 1024);
const thumbnailFile: FileFull = await uploadFile(
thumbnailFileName,
thumbnailContentStream,
);
const downloadUrl: string = await client.files.getFileThumbnailUrl(
thumbnailFile.id,
'png' as GetFileThumbnailUrlExtension,
);
if (!!(downloadUrl == void 0)) {
throw new Error('Assertion failed');
}
if (!(downloadUrl.includes('https://') as boolean)) {
throw new Error('Assertion failed');
}
await client.files.deleteFileById(thumbnailFile.id);
});
test('testGetFileThumbnail', async function testGetFileThumbnail(): Promise<any> {
const thumbnailFileName: string = getUuid();
const thumbnailBuffer: Buffer = generateByteBuffer(1024 * 1024);
const thumbnailContentStream: ByteStream =
generateByteStreamFromBuffer(thumbnailBuffer);
const thumbnailFile: FileFull = await uploadFile(
thumbnailFileName,
thumbnailContentStream,
);
const thumbnail: undefined | ByteStream =
await client.files.getFileThumbnailById(
thumbnailFile.id,
'png' as GetFileThumbnailByIdExtension,
);
if (
!!(bufferEquals(await readByteStream(thumbnail!), thumbnailBuffer) == true)
) {
throw new Error('Assertion failed');
}
await client.files.deleteFileById(thumbnailFile.id);
});
test('testGetFileFullExtraFields', async function testGetFileFullExtraFields(): Promise<any> {
const newFileName: string = getUuid();
const fileStream: ByteStream = generateByteStream(1024 * 1024);
const uploadedFile: FileFull = await uploadFile(newFileName, fileStream);
const file: FileFull = await client.files.getFileById(uploadedFile.id, {
queryParams: {
fields: ['is_externally_owned', 'has_collaborations'],
} satisfies GetFileByIdQueryParams,
} satisfies GetFileByIdOptionalsInput);
if (!(file.isExternallyOwned == false)) {
throw new Error('Assertion failed');
}
if (!(file.hasCollaborations == false)) {
throw new Error('Assertion failed');
}
await client.files.deleteFileById(file.id);
});
test('testCreateGetAndDeleteFile', async function testCreateGetAndDeleteFile(): Promise<any> {
const newFileName: string = getUuid();
const updatedContentStream: ByteStream = generateByteStream(1024 * 1024);
const uploadedFile: FileFull = await uploadFile(
newFileName,
updatedContentStream,
);
const file: FileFull = await client.files.getFileById(uploadedFile.id);
await expect(async () => {
await client.files.getFileById(uploadedFile.id, {
queryParams: { fields: ['name'] } satisfies GetFileByIdQueryParams,
headers: new GetFileByIdHeaders({
extraHeaders: { ['if-none-match']: file.etag! },
}),
} satisfies GetFileByIdOptionalsInput);
}).rejects.toThrow();
if (!(file.name == newFileName)) {
throw new Error('Assertion failed');
}
await client.files.deleteFileById(uploadedFile.id);
const trashedFile: TrashFile = await client.trashedFiles.getTrashedFileById(
uploadedFile.id,
);
if (!(file.id == trashedFile.id)) {
throw new Error('Assertion failed');
}
});
test('testUpdateFile', async function testUpdateFile(): Promise<any> {
const fileToUpdate: FileFull = await uploadNewFile();
const updatedName: string = getUuid();
const updatedFile: FileFull = await client.files.updateFileById(
fileToUpdate.id,
{
requestBody: {
name: updatedName,
description: 'Updated description',
} satisfies UpdateFileByIdRequestBody,
} satisfies UpdateFileByIdOptionalsInput,
);
if (!(updatedFile.name == updatedName)) {
throw new Error('Assertion failed');
}
if (!(updatedFile.description == 'Updated description')) {
throw new Error('Assertion failed');
}
await client.files.deleteFileById(updatedFile.id);
});
test('testFileLock', async function testFileLock(): Promise<any> {
const file: FileFull = await uploadNewFile();
const fileWithLock: FileFull = await client.files.updateFileById(file.id, {
requestBody: {
lock: {
access: 'lock' as UpdateFileByIdRequestBodyLockAccessField,
} satisfies UpdateFileByIdRequestBodyLockField,
} satisfies UpdateFileByIdRequestBody,
queryParams: { fields: ['lock'] } satisfies UpdateFileByIdQueryParams,
} satisfies UpdateFileByIdOptionalsInput);
if (!!(fileWithLock.lock == void 0)) {
throw new Error('Assertion failed');
}
const fileWithoutLock: FileFull = await client.files.updateFileById(file.id, {
requestBody: { lock: createNull() } satisfies UpdateFileByIdRequestBody,
queryParams: { fields: ['lock'] } satisfies UpdateFileByIdQueryParams,
} satisfies UpdateFileByIdOptionalsInput);
if (!(fileWithoutLock.lock == void 0)) {
throw new Error('Assertion failed');
}
await client.files.deleteFileById(file.id);
});
test('testCopyFile', async function testCopyFile(): Promise<any> {
const fileOrigin: FileFull = await uploadNewFile();
const copiedFileName: string = getUuid();
const copiedFile: FileFull = await client.files.copyFile(fileOrigin.id, {
parent: { id: '0' } satisfies CopyFileRequestBodyParentField,
name: copiedFileName,
} satisfies CopyFileRequestBody);
if (!(copiedFile.parent!.id == '0')) {
throw new Error('Assertion failed');
}
if (!(copiedFile.name == copiedFileName)) {
throw new Error('Assertion failed');
}
await client.files.deleteFileById(fileOrigin.id);
await client.files.deleteFileById(copiedFile.id);
});
export {};