How to use the line item service server handlers (with the core LtiServiceServer) to provide authenticated AGS endpoints for line item management as a platform.
This library provides a set of line item service server handlers ready to be use with the core LtiServiceServer to handle line item management requests.
- they accept a PSR7 ServerRequestInterface,
- leverages the required IMS LTI 1.3 service authentication,
- and returns a PSR7 ResponseInterface containing the related line item service response
They allow you to provide line item management service endpoints as specified in AGS openapi documentation.
You can find below how to use each AGS service server request handlers to provide line item service endpoints.
First, you need to provide a LineItemRepositoryInterface implementation, in charge to handle line items, as explained in the interfaces library documentation.
Then:
- you can construct the GetLineItemServiceServerRequestHandler (constructed with your LineItemRepositoryInterface implementation)
- to finally expose it to requests using the core LtiServiceServer (constructed with the RequestAccessTokenValidator, from core library)
<?php
use OAT\Library\Lti1p3Ags\Repository\LineItemRepositoryInterface;
use OAT\Library\Lti1p3Ags\Service\LineItem\Server\Handler\GetLineItemServiceServerRequestHandler;
use OAT\Library\Lti1p3Core\Registration\RegistrationRepositoryInterface;
use OAT\Library\Lti1p3Core\Security\OAuth2\Validator\RequestAccessTokenValidator;
use OAT\Library\Lti1p3Core\Service\Server\LtiServiceServer;
use Psr\Http\Message\ServerRequestInterface;
/** @var ServerRequestInterface $request */
$request = ...
/** @var RegistrationRepositoryInterface $registrationRepository */
$registrationRepository = ...
/** @var LineItemRepositoryInterface $lineItemRepository */
$lineItemRepository = ...
$validator = new RequestAccessTokenValidator($registrationRepository);
$handler = new GetLineItemServiceServerRequestHandler($lineItemRepository);
$server = new LtiServiceServer($validator, $handler);
// Generates an authenticated response containing the requested line item representation
$response = $server->handle($request);
First, you need to provide a LineItemRepositoryInterface implementation, in charge to handle line items, as explained in the interfaces library documentation.
Then:
- you can construct the ListLineItemsServiceServerRequestHandler (constructed with your LineItemRepositoryInterface implementation)
- to finally expose it to requests using the core LtiServiceServer (constructed with the RequestAccessTokenValidator, from core library)
<?php
use OAT\Library\Lti1p3Ags\Repository\LineItemRepositoryInterface;
use OAT\Library\Lti1p3Ags\Service\LineItem\Server\Handler\ListLineItemsServiceServerRequestHandler;
use OAT\Library\Lti1p3Core\Registration\RegistrationRepositoryInterface;
use OAT\Library\Lti1p3Core\Security\OAuth2\Validator\RequestAccessTokenValidator;
use OAT\Library\Lti1p3Core\Service\Server\LtiServiceServer;
use Psr\Http\Message\ServerRequestInterface;
/** @var ServerRequestInterface $request */
$request = ...
/** @var RegistrationRepositoryInterface $registrationRepository */
$registrationRepository = ...
/** @var LineItemRepositoryInterface $lineItemRepository */
$lineItemRepository = ...
$validator = new RequestAccessTokenValidator($registrationRepository);
$handler = new ListLineItemsServiceServerRequestHandler($lineItemRepository);
$server = new LtiServiceServer($validator, $handler);
// Generates an authenticated response containing the requested line item list representation
$response = $server->handle($request);
First, you need to provide a LineItemRepositoryInterface implementation, in charge to handle line items, as explained in the interfaces library documentation.
Then:
- you can construct the CreateLineItemServiceServerRequestHandler (constructed with your LineItemRepositoryInterface implementation)
- to finally expose it to requests using the core LtiServiceServer (constructed with the RequestAccessTokenValidator, from core library)
<?php
use OAT\Library\Lti1p3Ags\Repository\LineItemRepositoryInterface;
use OAT\Library\Lti1p3Ags\Service\LineItem\Server\Handler\CreateLineItemServiceServerRequestHandler;
use OAT\Library\Lti1p3Core\Registration\RegistrationRepositoryInterface;
use OAT\Library\Lti1p3Core\Security\OAuth2\Validator\RequestAccessTokenValidator;
use OAT\Library\Lti1p3Core\Service\Server\LtiServiceServer;
use Psr\Http\Message\ServerRequestInterface;
/** @var ServerRequestInterface $request */
$request = ...
/** @var RegistrationRepositoryInterface $registrationRepository */
$registrationRepository = ...
/** @var LineItemRepositoryInterface $lineItemRepository */
$lineItemRepository = ...
$validator = new RequestAccessTokenValidator($registrationRepository);
$handler = new CreateLineItemServiceServerRequestHandler($lineItemRepository);
$server = new LtiServiceServer($validator, $handler);
// Generates an authenticated response containing the line item creation response
$response = $server->handle($request);
First, you need to provide a LineItemRepositoryInterface implementation, in charge to handle line items, as explained in the interfaces library documentation.
Then:
- you can construct the UpdateLineItemServiceServerRequestHandler (constructed with your LineItemRepositoryInterface implementation)
- to finally expose it to requests using the core LtiServiceServer (constructed with the RequestAccessTokenValidator, from core library)
<?php
use OAT\Library\Lti1p3Ags\Repository\LineItemRepositoryInterface;
use OAT\Library\Lti1p3Ags\Service\LineItem\Server\Handler\UpdateLineItemServiceServerRequestHandler;
use OAT\Library\Lti1p3Core\Registration\RegistrationRepositoryInterface;
use OAT\Library\Lti1p3Core\Security\OAuth2\Validator\RequestAccessTokenValidator;
use OAT\Library\Lti1p3Core\Service\Server\LtiServiceServer;
use Psr\Http\Message\ServerRequestInterface;
/** @var ServerRequestInterface $request */
$request = ...
/** @var RegistrationRepositoryInterface $registrationRepository */
$registrationRepository = ...
/** @var LineItemRepositoryInterface $lineItemRepository */
$lineItemRepository = ...
$validator = new RequestAccessTokenValidator($registrationRepository);
$handler = new UpdateLineItemServiceServerRequestHandler($lineItemRepository);
$server = new LtiServiceServer($validator, $handler);
// Generates an authenticated response containing the line item update response
$response = $server->handle($request);
First, you need to provide a LineItemRepositoryInterface implementation, in charge to handle line items, as explained in the interfaces library documentation.
Then:
- you can construct the DeleteLineItemServiceServerRequestHandler (constructed with your LineItemRepositoryInterface implementation)
- to finally expose it to requests using the core LtiServiceServer (constructed with the RequestAccessTokenValidator, from core library)
<?php
use OAT\Library\Lti1p3Ags\Repository\LineItemRepositoryInterface;
use OAT\Library\Lti1p3Ags\Service\LineItem\Server\Handler\DeleteLineItemServiceServerRequestHandler;
use OAT\Library\Lti1p3Core\Registration\RegistrationRepositoryInterface;
use OAT\Library\Lti1p3Core\Security\OAuth2\Validator\RequestAccessTokenValidator;
use OAT\Library\Lti1p3Core\Service\Server\LtiServiceServer;
use Psr\Http\Message\ServerRequestInterface;
/** @var ServerRequestInterface $request */
$request = ...
/** @var RegistrationRepositoryInterface $registrationRepository */
$registrationRepository = ...
/** @var LineItemRepositoryInterface $lineItemRepository */
$lineItemRepository = ...
$validator = new RequestAccessTokenValidator($registrationRepository);
$handler = new DeleteLineItemServiceServerRequestHandler($lineItemRepository);
$server = new LtiServiceServer($validator, $handler);
// Generates an authenticated response containing the line item deletion response
$response = $server->handle($request);