feat(import): add Xibo CMS (REST) provider to the import framework - #3149
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new Xibo CMS (REST) implementation of the existing import-provider framework, enabling operators to browse and import Xibo library media (images/videos) via the same wizard/CLI surface as other providers in the import series.
Changes:
- Introduces
XiboProviderwith OAuth2 client-credentials auth, paginated/librarylisting, and same-host authenticated downloads. - Registers the new provider in the integrations registry so it appears in Settings/Wizard and is available via the provider lookup API.
- Adds unit tests covering token parsing, auth, listing classification, registry wiring, and import/download header attachment (no network).
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| src/anthias_server/lib/integrations/xibo.py | New Xibo REST import provider (auth, list, import/download). |
| src/anthias_server/lib/integrations/registry.py | Registers XiboProvider in the provider registry. |
| src/anthias_server/api/tests/test_xibo_import.py | Unit tests for Xibo provider behavior and registry integration. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
vpetersson
force-pushed
the
feat/import-content-xibo
branch
from
July 8, 2026 08:16
10f41f6 to
d32213e
Compare
vpetersson
force-pushed
the
feat/import-content-pisignage
branch
from
July 8, 2026 08:42
445a8dd to
656d7a5
Compare
- add a Xibo provider over the shared ImportProvider interface, reusing the ingest/http layer, wizard, and CLI - OAuth2 client-credentials against a per-CMS host; operator token is "cms-host:client_id:client_secret" - import image/video from GET /library (skip everything else); download from the same host with the Bearer token attached (scoped by ingest) - unit tests (no network) Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
- accept a whitespace-separated "<cms-url> <client_id> <client_secret>" token so a self-hosted CMS URL with a scheme/port/sub-path works, not just Xibo Cloud hostnames - scope the download auth to the CMS host:port - tests for cloud + self-hosted-with-port token parsing Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
- align the docstring with the actual /api/library/download path - build the download URL from the normalised media_type so API casing variance can't produce a wrong URL Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
- move the json/stream response fakes into the shared test-helper module (Yodeck / piSignage / Xibo were each copy-pasting them) — clears the SonarCloud new-code duplication gate - use the parsed client id/secret in the Xibo self-hosted token test (S1481) Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
vpetersson
force-pushed
the
feat/import-content-xibo
branch
from
July 8, 2026 08:48
b31e450 to
801335f
Compare
|
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Issues Fixed
Stacked on #3148 (piSignage). Fifth provider in the import series.
Description
ImportProviderinterface, wizard, and CLI.client_id/client_secretare exchanged for a Bearer token atPOST /api/authorize/access_token. Per-CMS host, so the operator token iscms-host:client_id:client_secret.GET /library, importsmediaTypeimage/video, skips everything else (audio, documents, module widgets)./library/download/{mediaId}/{type}on the CMS host — the Bearer token is attached (shared ingest auth-scoping).Follow-ups (flagged in
xibo.py): Xibo web pages are layout widgets, not library media, so aren't imported; confirm the download-path shape against a live CMS.Checklist
🤖 Generated with Claude Code