Sharebar?

Learning Tools Interoperability: Sample Code

Learning Tools Interoperability®: Sample Code

The LTI® specifications use standard web technology and is not complex to implement.  But the speed of implementation can often be increased by perusing or re-using existing code.  This page provides links to known sources of sample code which may be useful.  Note that not all of the code has been through the IMS certification tests, so caveat emptor.  The code samples have been separated by programming language.

PHP

Tool Provider Class Library for PHP
IMS has released this open source class library which includes support for LTI 1.x, LTI 2.x, Content-Item messages and the Membership service. It is an update of the class library developed for the ceLTIc project which has already been used for building a number of open source and commercial LTI integrations. A sample Rating application is also available to illustrate its use. By Stephen Vickers.
TSUGI - A Framework for Building PHP-Based Learning Tools
The goal of the TSUGI project is to build a scalable multi-tenant "tool" hosting environment based on the emerging IMS standards. By Charles Severance.

Java

IMS Global - LTI Utilities
LTI Utilities are a set of utility classes to aid in the development of LTI v1.0 consumers and providers. They deal with much of the heavy lifting and make the process more opaque to the developer.
Tool Provider Class Library for Java
This is a complete class library developed for the ceLTIc project. A sample Rating application is also available to illustrate its use. It supports LTI 1.x and the unofficial extensions. By Stephen Vickers.
TSUGI - A Framework for Building Learning Tools (Java version)
The goal of the TSUGI project is to build a scalable multi-tenant "tool" hosting environment based on the emerging IMS standards. By Charles Severance.

Ruby on Rails

Reference implementation of both an LTI 2.0 Tool Consumer and a Tool Provider
A reference implementation of both an LTI 2.0 Tool Consumer and a Tool Provider. An implementation video is also available. By John Tibbetts, Vitalsource.
Ruby Gem
A Ruby library to help implement IMS LTI tool consumers and providers provided by Instructure.
lti-template-flask
LTI template written in Python using the Flask framework by UCF.

.Net

LTI Tool Consumer
A .NET library for LTI applications. By Andy Miller.
LTI Tool Provider
A .NET library for LTI applications. By Andy Miller.

Node.js

Implementation for HITS
HITS LTI implementation in NodeJS by NSIP.

Python

lti-template-rails
LTI template written in Ruby on Rails by UCF.

OAuth

LTI uses OAuth 1 to sign its messages and service requests.  OAuth libraries are available for most programming languages.  Check the above sample code for the ones they are using or visit the OAuth website for other references.