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

Readme

Keywords

none

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