instructure-canvas-api

API module to interact with canvas

Usage no npm install needed!

<script type="module">
  import instructureCanvasApi from 'https://cdn.skypack.dev/instructure-canvas-api';
</script>

README

instructure-canvas-api

This module contains methods to make authenticated api calls to Canvas. All api calls return a promise that resolves to an AxiosResponse.

To use instructure-canvas-api you must have a session that you inform instructure-canvas-api about. Which is then used to make authenticated api calls.

import { setSession } from 'instructure-canvas-api'

setSession({
  authToken: string,
  baseURL: string,
  user: {
    primary_email: string,
    id: string,
    avatar_url: string,
    name: string,
  }
})

Later if you ever wanted to get the session you can do so using the getSession method.

import { getSession } from 'instructure-canvas-api'

let session = getSession()

The default export of instructure-canvas-api contains all of the api calls that instructure-canvas-api contains

import canvasApi from 'instructure-canvas-api'

canvasApi.refreshCourses()

Each of these api calls are also exported as named exports

import { refreshCourses } from 'instructure-canvas-api'

refreshCourses()

If you need a little more flexibility you can also import the underlying httpClient that is used to make authenticated api calls to canvas.

import { httpClient } from 'instructure-canvas-api'

let client = httpClient()

The client in this case is an axios istance that has been set up to use the auth token set in the session.

There are some utility functions that are exposed for use if needed.

import { parseNext, paginate, exhaust } from 'instructure-canvas-api/utils/pagination'
import { parseLinkHeader } from 'instructure-canvas-api/utils/parse-link-header'
import { apiResponse, apiError } from 'instructure-anvas-api/utils/testHelpers'

instructure-canvas-api comes with a default mock for jest so it's simple to mock.

jest.mock('instructure-canvas-api')

Development

If you want to work on instructure-canvas-api while seeing those changes in another app.

  • Make sure that you have the latest watchman. Can be updated through brew
  • Run yarn link in the instructure-canvas-api directory
  • run yarn link instructure-canvas-api in the project root of the app you are working on
  • run yarn start

At this point you should see the packager start and under the list of watched directorys it should show both your project root as well as the modules/instructure-canvas-api directory.

instructure-canvas-api has flow and jest tests setup

yarn flow
yarn test

Publishing

Publish to npm with gulp publish after updating the version in package.json