@codegrade/apiv2-client v1.2.0
@codegrade/apiv2-client
Description
SDK for CodeGrade Apiv2 Client for Node.js and Browser.
Installing
You can install this package with your favorite package manager:
npm install @codegrade/apiv2-client
yarn add @codegrade/apiv2-client
pnpm add @codegrade/apiv2-client
Usage
To send requests, you first need to create a client:
import * as codegrade from '@codegrade/apiv2-client';
// This will ask you to enter the information required to log in
// on the console.
const client = await codegrade.loginFromCli();
Now you can call the endpoints with the methods exposed on the client object. The example below publishes a snapshot of the current AutoTest configuration:
const assignmentId = '10';
const { snapshot } = client.createAutoTestSnapshot({ assignmentId });
await codegrade.waitUntilSnapshotPublishable(
{
client,
// Wait for at most 5 minutes (300 seconds).
maxWaitTime: 300,
},
{ assignmentId },
);
await client.updateAutoTestConfiguration({
assignmentId,
publishedSnapshot: {
published: snapshot.snapshotId,
},
});
You can find a list of all supported endpoints here.
Code splitting
When you need to limit the footprint of this package, for example when you use it in a web application, you can create a more basic variant of the client. This client does not have a method for each endpoint of the API, but instead you import commands for only the endpoints that you are using:
import { getApiv2Client, GetAutoTestCommandCommand, login } from '@codegrade/apiv2-client';
const client = getApiv2Client({
hostname: 'app.codegra.de',
token: await login({
hostname: 'app.codegra.de',
tenantId: 'tenant_id',
username: 'me',
// Never store your password in code!
password: os.env['CG_PASSWORD'],
}),
});
const { configuration } = await client.send(
new GetAutoTestCommandCommand({
assignmentId: '10',
}),
);
Troubleshooting
When the service returns an exception, the error will include the exception information, as well as response metadata (e.g. request id).
try {
const data = await client.getAutoTestConfiguration({ assignmentId });
// process data.
} catch (error) {
const { requestId, httpStatusCode } = error.$metadata;
console.log({ requestId, httpStatusCode });
// Depending on the type of error extra information may be available.
if (error.name === 'NotFoundError') {
console.log(error.resource);
}
}
All errors extend the Apiv2ServiceException
class. See the
linked page for further links to all errors that might be returned.
Getting Help
You can find the documentation of this package on https://typescript.apiv2.codegrade.com/
License
This package is licensed under the BSD-3-Clause-Clear license.