caccl-grade-passback
Version:
Sends LTI 1.1 grade passback to Canvas. Support text and url submissions and overall score.
135 lines (107 loc) • 3 kB
Markdown
caccl-grade-passback
Sends LTI 1.1 grade passback to Canvas. Support text and url submissions and overall score.
# Part of the CACCL library
**C**anvas
**A**pp
**C**omplete
**C**onnection
**L**ibrary
# Usage
To send pass grades back to Canvas, import this module and call it with three objects: `request`, `info`, and `credentials` (see below for descriptions of each).
```ts
import sendPassback from 'caccl-grade-passback';
await sendPassback({
request,
info,
credentials,
});
```
# Arguments
## request
The request object contains all of the grade information to send to Canvas.
_Including a Grade:_
Either add the total score by including `request.score`:
> ```ts
// Give the student 15 out of 20 points (that's 75%)
const request = {
score: 15,
...
};
```
> ...or add the percentage of the possible points by including `request.percent`:
> ```ts
// Give the student 15 out of 20 points (that's 75%)
const request = {
percent: 75,
...
};
```
_Including a Submission:_
Only two types of submissions are supported: text submissions and url submissions.
> To add a text submission, include `request.text`:
> ```ts
const request = {
...
text: 'Body of the student submission',
...
};
```
> To add a url submission, include `request.url`:
> ```ts
const request = {
...
url: 'https://url.of/student/submission',
...
};
```
_Including a "Submitted At" Timestamp:_
To add a submission timestamp, include `request.submittedAt`:
> ```ts
const request = {
...
submittedAt: /* ISO 8601 String OR Date object */,
...
};
```
## info
The info object contains all of the relevant LTI parameters that were passed through in the original LTI launch request:
```ts
const info = {
sourcedId: /* The LTI sourcedid, usually "lis_result_sourcedid" in the original LTI launch request */,
url: /* The LTI outcome url, usually "lis_outcome_service_url" in the original LTI launch request */,
};
```
## credentials
The credentials object contains the app's consumer credentials:
```ts
const credentials = {
consumerKey: /* The app's consumer key */,
consumerSecret: /* The app's shared secret */,
};
```
# Full Example
Sending a passback of 78 points with a "Hello World" text submission. In this example, we have invented a `launchBody` object that contains the body of the original LTI launch request and we created a `secureFile` object that has `getKey` and `getSecret` functions that return the app's consumer key and consumer secret, respectively.
```ts
import sendPassback from 'caccl-grade-passback';
const request = {
score: 78,
text: 'Hello World',
};
const info = {
sourcedId: launchBody.lis_result_sourcedid,
url: launchBody.lis_outcome_service_url,
};
const credentials = {
consumerKey: secureFile.getKey(),
consumerSecret: secureFile.getSecret(),
};
await sendPassback(request, info, credentials);
```