Skip to content

Basic Outcome Platform - Basic Outcome Service Server

How to use the BasicOutcomeServiceServerRequestHandler (with the core LtiServiceServer) to serve authenticated Basic Outcome service endpoints as a platform.

Features

This library provides a BasicOutcomeServiceServerRequestHandler ready to be use with the core LtiServiceServer to handle basic outcome operations.

Usage

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:

<?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);