Skip to content

Commit

Permalink
feat(api): update via SDK Studio (#24)
Browse files Browse the repository at this point in the history
  • Loading branch information
stainless-app[bot] authored and Stainless Bot committed Jul 15, 2024
1 parent 1e9c082 commit 04c9642
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
configured_endpoints: 12
configured_endpoints: 15
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/writerai%2Fwriter-2aa0ec0ea99873da5dac6ecf610efdd6ccfe5601d2400f8c475d994cd47c2c36.yml
4 changes: 4 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,12 @@ Methods:
Types:

- <code><a href="./src/resources/files.ts">File</a></code>
- <code><a href="./src/resources/files.ts">FileDeleteResponse</a></code>

Methods:

- <code title="get /v1/files/{file_id}">client.files.<a href="./src/resources/files.ts">retrieve</a>(fileId) -> File</code>
- <code title="get /v1/files">client.files.<a href="./src/resources/files.ts">list</a>({ ...params }) -> FilesCursorPage</code>
- <code title="delete /v1/files/{file_id}">client.files.<a href="./src/resources/files.ts">delete</a>(fileId) -> FileDeleteResponse</code>
- <code title="get /v1/files/{file_id}/download">client.files.<a href="./src/resources/files.ts">download</a>(fileId) -> Response</code>
- <code title="post /v1/files">client.files.<a href="./src/resources/files.ts">upload</a>({ ...params }) -> File</code>
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ export namespace Writer {

export import Files = API.Files;
export import File = API.File;
export import FileDeleteResponse = API.FileDeleteResponse;
export import FilesCursorPage = API.FilesCursorPage;
export import FileListParams = API.FileListParams;
export import FileUploadParams = API.FileUploadParams;
Expand Down
35 changes: 35 additions & 0 deletions src/resources/files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ import { isRequestOptions } from '../core';
import * as Core from '../core';
import * as FilesAPI from './files';
import { CursorPage, type CursorPageParams } from '../pagination';
import { type Response } from '../_shims/index';

export class Files extends APIResource {
/**
* Retrieve file
*/
retrieve(fileId: string, options?: Core.RequestOptions): Core.APIPromise<File> {
return this._client.get(`/v1/files/${fileId}`, options);
}

/**
* List files
*/
Expand All @@ -22,6 +30,20 @@ export class Files extends APIResource {
return this._client.getAPIList('/v1/files', FilesCursorPage, { query, ...options });
}

/**
* Delete file
*/
delete(fileId: string, options?: Core.RequestOptions): Core.APIPromise<FileDeleteResponse> {
return this._client.delete(`/v1/files/${fileId}`, options);
}

/**
* Download file
*/
download(fileId: string, options?: Core.RequestOptions): Core.APIPromise<Response> {
return this._client.get(`/v1/files/${fileId}/download`, { ...options, __binaryResponse: true });
}

/**
* Upload file
*/
Expand Down Expand Up @@ -70,6 +92,18 @@ export interface File {
name: string;
}

export interface FileDeleteResponse {
/**
* A unique identifier of the deleted graph.
*/
id: string;

/**
* Indicates whether the graph was successfully deleted.
*/
deleted: boolean;
}

export interface FileListParams extends CursorPageParams {
/**
* The unique identifier of the graph to which the files belong.
Expand Down Expand Up @@ -114,6 +148,7 @@ export interface FileUploadParams {

export namespace Files {
export import File = FilesAPI.File;
export import FileDeleteResponse = FilesAPI.FileDeleteResponse;
export import FilesCursorPage = FilesAPI.FilesCursorPage;
export import FileListParams = FilesAPI.FileListParams;
export import FileUploadParams = FilesAPI.FileUploadParams;
Expand Down
2 changes: 1 addition & 1 deletion src/resources/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export {
CompletionCreateParamsStreaming,
Completions,
} from './completions';
export { File, FileListParams, FileUploadParams, FilesCursorPage, Files } from './files';
export { File, FileDeleteResponse, FileListParams, FileUploadParams, FilesCursorPage, Files } from './files';
export {
Graph,
GraphCreateResponse,
Expand Down
44 changes: 44 additions & 0 deletions tests/api-resources/files.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,24 @@ const writer = new Writer({
});

describe('resource files', () => {
test('retrieve', async () => {
const responsePromise = writer.files.retrieve('file_id');
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
expect(response).not.toBeInstanceOf(Response);
const dataAndResponse = await responsePromise.withResponse();
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});

test('retrieve: request options instead of params are passed correctly', async () => {
// ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
await expect(writer.files.retrieve('file_id', { path: '/_stainless_unknown_path' })).rejects.toThrow(
Writer.NotFoundError,
);
});

test('list', async () => {
const responsePromise = writer.files.list();
const rawResponse = await responsePromise.asResponse();
Expand Down Expand Up @@ -43,6 +61,32 @@ describe('resource files', () => {
).rejects.toThrow(Writer.NotFoundError);
});

test('delete', async () => {
const responsePromise = writer.files.delete('file_id');
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
expect(response).not.toBeInstanceOf(Response);
const dataAndResponse = await responsePromise.withResponse();
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});

test('delete: request options instead of params are passed correctly', async () => {
// ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
await expect(writer.files.delete('file_id', { path: '/_stainless_unknown_path' })).rejects.toThrow(
Writer.NotFoundError,
);
});

// requests with binary data not yet supported in test environment
test.skip('download: request options instead of params are passed correctly', async () => {
// ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
await expect(writer.files.download('file_id', { path: '/_stainless_unknown_path' })).rejects.toThrow(
Writer.NotFoundError,
);
});

// requests with binary data not yet supported in test environment
test.skip('upload: only required params', async () => {
const responsePromise = writer.files.upload({
Expand Down

0 comments on commit 04c9642

Please sign in to comment.