NP.Lti13Platform.DeepLinking
1.0.0-preview003
dotnet add package NP.Lti13Platform.DeepLinking --version 1.0.0-preview003
NuGet\Install-Package NP.Lti13Platform.DeepLinking -Version 1.0.0-preview003
<PackageReference Include="NP.Lti13Platform.DeepLinking" Version="1.0.0-preview003" />
paket add NP.Lti13Platform.DeepLinking --version 1.0.0-preview003
#r "nuget: NP.Lti13Platform.DeepLinking, 1.0.0-preview003"
// Install NP.Lti13Platform.DeepLinking as a Cake Addin #addin nuget:?package=NP.Lti13Platform.DeepLinking&version=1.0.0-preview003&prerelease // Install NP.Lti13Platform.DeepLinking as a Cake Tool #tool nuget:?package=NP.Lti13Platform.DeepLinking&version=1.0.0-preview003&prerelease
NP.Lti13Platform.DeepLinking
The IMS Deep Linking spec defines a way that platforms can get content from tools. This project provides an implementation of the spec.
Features
- Launch the deep linking flow
- Receive the deep linking responses
Getting Started
Add the nuget package to your project:
Add an implementation of the
ILti13DeepLinkingDataService
interface:
public class DataService: ILti13DeepLinkingDataService
{
...
}
- Add the required services.
builder.Services
.AddLti13PlatformCore()
.AddLti13PlatformDeepLinking()
.WithLti13DeepLinkingDataService<DataService>();
- Setup the routing for the LTI 1.3 platform endpoints:
app.UseLti13PlatformDeepLinking();
ILti13DeepLinkingDataService
There is no default ILti13DeepLinkingDataService
implementation to allow each project to store the data how they see fit.
The ILti13DeepLinkingDataService
interface is used to manage the persistance of resource links and other content items.
All of the internal services are transient and therefore the data service may be added at any scope (Transient, Scoped, Singleton).
Defaults
Routing
Default routes are provided for all endpoints. Routes can be configured when calling UseLti13PlatformDeepLinking()
.
app.UseLti13PlatformDeepLinking(config => {
config.DeepLinkingResponseUrl = "/lti13/deeplinking/{contextId?}"; // {contextId?} is required
return config;
});
ILti13DeepLinkingHandler
The ILti13DeepLinkingHandler
interface is used to handle the response from the tool.
Recommended: The default handling of the response is to return a placeholder page. It is strongly recommended to use the Default for development only.
builder.Services
.AddLti13PlatformCore()
.AddLti13PlatformDeepLinking()
.WithLti13DeepLinkingHandler<Handler>();
ILti13DeepLinkingConfigService
The ILti13DeepLinkingConfigService
interface is used to get the config for the deep linking service. The config is used to control how deep link requests are made and how the response will be handled.
There is a default implementation of the ILti13DeepLinkingConfigService
interface that uses a configuration set up on app start.
It will be configured using the IOptions
pattern and configuration.
The configuration path for the service is Lti13Platform:DeepLinking
.
A fallback to the current request scheme and host will be used if no ServiceAddress is configured.
Examples
{
"Lti13Platform": {
"DeepLinking": {
"ServiceAddress": "https://<mysite>",
...
}
}
}
builder.Services.Configure<ServicesConfig>(x => { });
The Default implementation can be overridden by adding a new implementation of the ILti13DeepLinkingConfigService
interface.
builder.Services
.AddLti13PlatformCore()
.AddLti13PlatformDeepLinking()
.WithLti13DeepLinkingDataService<DataService>();
Configuration
The configuration for the Deep Linking service tells the tools what kinds of things the platform is looking for and how it will handle the items when they are returned.
AcceptPresentationDocumentTargets
Default: ["embed", "iframe", "window"]
{:csharp}
Defines how the content items will be shown to users (Embedded, Iframe, Window).
AcceptTypes
Default: ["file", "html", "image", "link", "ltiResourceLink"]
{:csharp}
Defines which types of content items the platform is looking for (File, Html, Image, Link, ResourceLink).
AcceptMediaTypes
Default: ["image/*", "text/html"]
{:csharp}
Defines which media types the platform is looking for (image/*, text/html).
AcceptLineItem
Default: true
{:csharp}
Whether the platform in the context of that deep linking request supports or ignores line items included in LTI Resource Link items. False indicates line items will be ignored. True indicates the platform will create a line item when creating the resource link. If the field is not present, no assumption that can be made about the support of line items.
AcceptMultiple
Default: true
{:csharp}
Whether the platform allows multiple content items to be submitted in a single response.
AutoCreate
Default: true
{:csharp}
Whether any content items returned by the tool would be automatically persisted without any option for the user to cancel the operation.
ServiceAddress
Default: null
{:csharp}
The web address where the deep linking responses will be handled. If not set, the current request scheme and host will be used.
ContentItemTypes
Default: []
{:csharp}
A dictionary of type configurations to be used when deserialzing the content items. If not set, the content items will be deserialized as Dictionary<string, JsonElement>
{:csharp} objects. A convenience method to add the known content items to this dictionary is provided.
builder.Services.Configure<DeepLinkingConfig>(x =>
{
x.AddDefaultContentItemMapping();
});
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- NP.Lti13Platform.Core (>= 1.0.0-preview003)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on NP.Lti13Platform.DeepLinking:
Package | Downloads |
---|---|
NP.Lti13Platform
A platform implementation of the LTI 1.3 spec. Includes the Core, DeepLinking, Assignment and Grade Services, and Name and Role Provisioning Services specs. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0-preview003 | 45 | 11/2/2024 |
1.0.0-preview002 | 47 | 10/26/2024 |
1.0.0-preview001 | 38 | 10/26/2024 |
0.1.0-preview002 | 40 | 10/23/2024 |
0.1.0-preview001 | 39 | 10/23/2024 |
0.1.0-beta | 36 | 10/23/2024 |