How to use the BasicOutcomeServiceServerRequestHandler (with the core LtiServiceServer) to serve authenticated Basic Outcome service endpoints as a platform.
This library provides a BasicOutcomeServiceServerRequestHandler ready to be use with the core LtiServiceServer to handle basic outcome operations.
- it accepts a PSR7 ServerRequestInterface containing the basic outcome request,
- leverages the required IMS LTI 1.3 service authentication,
- and returns a PSR7 ResponseInterface containing the basic outcome response
First, you need to provide a BasicOutcomeServiceServerProcessorInterface implementation, in charge to process the basic outcome operations.
<?php
use OAT\Library\Lti1p3BasicOutcome\Service\Server\Processor\BasicOutcomeServiceServerProcessorInterface;
use OAT\Library\Lti1p3BasicOutcome\Service\Server\Processor\Result\BasicOutcomeServiceServerProcessorResult;
use OAT\Library\Lti1p3Core\Registration\RegistrationInterface;
/** @var BasicOutcomeServiceServerProcessorInterface $processor */
$processor = new class() implements BasicOutcomeServiceServerProcessorInterface
{
public function processReadResult(
RegistrationInterface $registration,
string $sourcedId
) : BasicOutcomeServiceServerProcessorResult {
// @todo: Logic for readResult basic outcome operations
}
public function processReplaceResult(
RegistrationInterface $registration,
string $sourcedId,
float $score,
string $language = 'en'
) : BasicOutcomeServiceServerProcessorResult {
// @todo: Logic for replaceResult basic outcome operations
}
public function processDeleteResult(
RegistrationInterface $registration,
string $sourcedId
) : BasicOutcomeServiceServerProcessorResult {
// @todo: Logic for deleteResult basic outcome operations
}
};
Then:
- you can construct the BasicOutcomeServiceServerRequestHandler (constructed with your BasicOutcomeServiceServerProcessorInterface implementation)
- to finally expose it to requests using the core LtiServiceServer (constructed with the RequestAccessTokenValidator, from core library)
<?php
use OAT\Library\Lti1p3BasicOutcome\Service\Server\Handler\BasicOutcomeServiceServerRequestHandler;
use OAT\Library\Lti1p3BasicOutcome\Service\Server\Processor\BasicOutcomeServiceServerProcessorInterface;
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 $repository */
$repository = ...
/** @var BasicOutcomeServiceServerProcessorInterface $processor */
$processor = ...
$validator = new RequestAccessTokenValidator($repository);
$handler = new BasicOutcomeServiceServerRequestHandler($processor);
$server = new LtiServiceServer($validator, $handler);
// Generates a response containing the basic outcome operation result
$response = $server->handle($request);