canvas-request
v0.0.1canvas-request
This is a simple npm module for making API calls to Instructure's canvas.
Usage
The following parameters are required either as environment variables or as parameters in the Parameter Store:
- CANVAS_CLIENT_ID
- CANVAS_CLIENT_SECRET
- CANVAS_REFRESH_TOKEN
If they are included in the parameter store, include the parameter_header in the config (see below) and set the credential_method to aws_ssm. For example, if I have a parameter named "lms-event-integration.dev.CANVAS_CLIENT_ID" and another named "lms-event-integration.dev.CANVAS_CLIENT_SECRET" then my parameter_header would be "lms-event-integration.dev".
If you are not using the parameter store, you must have those values set as environment variables.
var canvas = require('./index.js')
// var canvas_token = '<place your canvas token here>'
var canvas_config = {
// 'token': canvas_token, // If you include the token in the config, you don't need the CANVAS_CLIENT_ID, CANVAS_CLIENT_SECRET or the CANVAS_REFRESH_TOKEN. Omit to use aws_ssm or env_vars
'credential_method': 'aws_ssm', // Either aws_ssm or env_vars
'aws': { // include if using aws_ssm
'parameter_header': 'lms-event-integration.dev',
'region': 'us-west-2',
'aws_params_location': 'file' // Either file (~/.aws/credentials) or env_vars
}
}
var requestOptions = {
'url': 'https://byu.test.instructure.com/api/v1/accounts/1/users',
'method': 'GET',
'headers': {
'Accept': 'application/json'
}
}
canvas(requestOptions, canvas_config, function(err, res, body) {
if(err) {
console.log(err)
} else {
console.log(body)
}
})
NOTE: "aws-ssm" is used to fetch parameters stored in the Amazon Parameter Store. For more information, see http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html and http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SSM.html.
For more information on Canvas APIs see https://canvas.instructure.com/doc/api/index.html
Issues
- One of the config items needs to be the canvas url. Right now the byu one is hard coded.
- I need to add to the config a boolean to set whether the token is being passed in or whether to use the refresh token.
- If a token is being passed in, there is no need for the refresh token to be passed in.
Future Work
- There probably isn't a need to get the aws parameters every time. Can you set them as enviroment variables?
Metadata
- Apache-2.0
- Whatever
- Spencer Holman
- released 7/13/2017