SDK for CodeGrade Apiv2 Client for Node.js and Browser.
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
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.
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',
}),
);
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.
You can find the documentation of this package on https://typescript.apiv2.codegrade.com/
This package is licensed under the BSD-3-Clause-Clear license.