Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/instructure/ims-lti
A Ruby library to help implement IMS LTI tool consumers and providers
https://github.com/instructure/ims-lti
Last synced: 39 minutes ago
JSON representation
A Ruby library to help implement IMS LTI tool consumers and providers
- Host: GitHub
- URL: https://github.com/instructure/ims-lti
- Owner: instructure
- License: mit
- Created: 2012-03-06T18:58:45.000Z (over 12 years ago)
- Default Branch: main
- Last Pushed: 2024-04-22T15:22:59.000Z (7 months ago)
- Last Synced: 2024-10-31T14:47:15.827Z (13 days ago)
- Language: Ruby
- Homepage:
- Size: 463 KB
- Stars: 200
- Watchers: 27
- Forks: 122
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.txt
- License: LICENSE.txt
Awesome Lists containing this project
README
# IMS LTI
[![Build Status](https://travis-ci.org/instructure/ims-lti.svg?branch=2.1.x)](https://travis-ci.org/instructure/ims-lti)
LTI ruby implementation
## Installation
Add these lines to your application's Gemfile:
gem 'ims-lti'
# only necessary if using ToolProxyRegistrationService:
gem 'faraday-oauth' # or faraday_middleware if using Faraday < 2.0And then execute:
$ bundle
Or install it yourself as:
$ gem install lti
## Usage
### LTI 1.x
#### Validating Launches
You can use the classes in the IMS::LTI::Models::Messages module to valdiate Launches
For example in a rails app you would do the following
```ruby
authenticator = IMS::LTI::Services::MessageAuthenticator.new(request.url, request.request_parameters, shared_secret)#Check if the signature is valid
return false unless authenticator.valid_signature?# check if `params['oauth_nonce']` has already been used
#check if the message is too old
return false if DateTime.strptime(request.request_parameters['oauth_timestamp'],'%s') < 5.minutes.ago```
```ruby
params = { user_id: '123', lti_message_type: IMS::LTI::Models::Messages::BasicLTILaunchRequest::MESSAGE_TYPE }
header = SimpleOAuth::Header.new(:post, 'https://yoursite.com', params, consumer_key: oauth_consumer_key, consumer_secret: secret)
signed_params = header.signed_attributes.merge(params)
IMS::LTI::Services::MessageAuthenticator.new(launch_url, signed_params, secret)
```
## Contributing
1. Fork it ( http://github.com/instructure/ims-lti/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request