What is this about?
If you are a .NET developer and are interested in leveraging the Canvas API to automate tasks at your institution, you might be interested in ths demo project. I will provide a Visual Studio project that you can download and use as starting point to develop your own tools.
I can try to guide you to some reference material for those getting started that will hopefully help.
There are a few basics that would help to understand when working with the associated project:
- Working knowledge of C#:
- What is await? Faimiliarity with asynchronous programming (not required, but loosely referenced in the associated project code):
Asynchronous Programming with Async and Await (C# and Visual Basic)
- Understanding of HTTP verbs, you might start here if you need some info:
HTTP Methods GET vs POST vs. PUT
- Working knowledge of Json, understanding the structure of a Json object is very important:
- The base classes used to make the API calls:
- Logging - the sample project uses NLog to create debug and error logs:
NLog - can be referenced in Visual Studio using Nuget
The project includes a sample logging config file
- Newtonsoft Json.NET library - to serialize/deserialize objects
Json.NET - Newtonsoft - can be referenced in Visual Studio using Nuget
How does it work?
The associated source code will create a command line tool that accepts a config file. The config file contains the following information:
- "accessToken" - your access token
- "apiUrl" - the url to your Canvas site, I would you Beta or Test
- "apiCalls" - array of API calls that you would like to run, including parameters
For simplicity and purposes of demo, the access token and API url are in this config file.
The format of the API call list is an array of pipe delimited strings in the following format:
- [method name] | [param1],[value1] | [param2],[value2] | .... | [param(n)],[value(n)]
These strings will be parsed and passed to the API library where they will be converted into actual calls to the Canvas API, at the site defined by the "apiUrl" variable.
This sample config includes GET, POST, and PUT calls, to demonstrate each type of verb.
Each verb is implemented in the base class: clsHttpMethods.cs
Full response details are logged by NLog. Grab these responses and inspect them for full details. If your test produces an error or throws an exception, full details can also be found in the log file. If you use my default nlog.config, log files will be found in this location: c:\\logs\canvasApiTest\*.log
The purpose of this project is not to replace tools like Postman, the purpose is to help other developers using .NET to get started with the API. I tried to keep things as clear as possible.
With myapi.config, I have been able to test any API call I have needed to date. If you follow my code, you will need to add a C# method to handle each additional API call you want to make. My "long hand" approach to creating matching C# methods could be modified, but hopefully helps to illustrate the concepts. Share your approaches.
There is plenty of room for optimization, optimize to meet your needs and share any enhancements you feel people could benefit from.
Project Source Code
Source code can be found on BitBucket here: Canvas API Implementation
The source published on BitBucket compiles and runs with Visual Studio 2015 and .NET Framework 4.5.2
IMPORTANT: Make sure you edit the myapi.config file with your settings, and modify API variable values to match your environment.
All code is provided as-is for demonstration purposes only.
2016.12.03 - UPDATE - File Upload via POST
- I have added a class that walks through the steps of uploading a file. This code was pulled from another project and put together quickly as a response to a community question, make sure you test failure scenarios in your environment.