escolalms/pencil-spaces

Escola Headless LMS Pencil Spaces integration

Installs: 2 624

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:package

0.0.3 2024-02-14 13:33 UTC

This package is auto-updated.

Last update: 2024-12-14 15:19:34 UTC


README

swagger codecov phpunit downloads downloads downloads Maintainability phpstan

What does it do

This package is used for integration with Pencil Spaces.

Currently available features:

  • API user creation
  • Space creation
  • Generating a link for the logged-in user

Installing

  • composer require escolalms/pencil-spaces
  • php artisan migrate

Configuration

You can configure the package by adding values to your .env file

PENCIL_SPACES_API_KEY=api-key
PENCIL_SPACES_API_URL=https://api-url.com

or using Facade

use Illuminate\Support\Facades\Config;

Config::set('pencil_spaces.api_key', 'api_key');
Config::set('pencil_spaces.api_url', 'https://api-url.com');

or /api/admin/config endpoint

$this->actingAs($this->user, 'api')->json(
    'POST',
    '/api/admin/config',
    [
        'config' => [
            [
                'key' => 'pencil_spaces.api_key',
                'value' => 'api_key',
            ],
            [
                'key' => 'pencil_spaces.api_url',
                'value' => 'https://api-url.com',
            ],
        ]
    ]
);

Example

Use EscolaLms\PencilSpaces\Facades\PencilSpace Facade for integration.

  • Generate a direct login link for an API-managed user => PencilSpace::getDirectLoginUrl(int $userId, string $redirectUrl = null)
  • Create Space => PencilSpace::createSpace(CreatePencilSpaceResource $createSpaceResource)

An account in Pencil Space will be created for users who don't have one. The table pencil_space_accounts will store the userId and email returned from Pencil Space.

Endpoints

The endpoints are defined in swagger

Tests

Run ./vendor/bin/phpunit to run tests. Test details codecov

You can use PencilSpace::fake() in your tests. Requests to the API will be mocked, and you will be able to test your feature.

Listeners

This package doesn't listen for any events.