@codegrade/apiv2-client
TypeScript icon, indicating that this package has built-in type declarations

1.16.0 • Public • Published

@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.

/@codegrade/apiv2-client/

    Package Sidebar

    Install

    npm i @codegrade/apiv2-client

    Weekly Downloads

    13

    Version

    1.16.0

    License

    BSD-3-Clause-Clear

    Unpacked Size

    1.09 MB

    Total Files

    188

    Last publish

    Collaborators

    • thomasschaper
    • olmo-codegrade
    • codegrade-deployer