Skip to content

php-etl/sulu-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sulu Plugin

Plugin Gyroscops Compiler pour l'integration de l'API Sulu CMS dans des pipelines de donnees.

Ce plugin permet d'extraire et de charger des donnees depuis et vers une instance Sulu CMS via son API REST. Il genere du code PHP optimise a la compilation pour une execution performante.

Ressources supportees

Ressource Extraction Creation Mise a jour Upsert Suppression
Articles oui oui oui oui oui
Pages oui oui oui oui oui
Categories oui oui oui oui oui
Media oui oui oui oui oui
Tags oui oui oui oui oui
Redirections oui oui oui oui oui

Installation

composer require kiboko/sulu-plugin

Configuration

sulu:
  expression_language: []  # Optionnel : fournisseurs d'expression language
  client:      { ... }     # Obligatoire : configuration du client API
  extractor:   { ... }     # Configuration de l'extraction (OU loader)
  loader:      { ... }     # Configuration du chargement (OU extractor)

Client

La section client est obligatoire. Elle configure la connexion HTTP vers l'API Sulu.

client:
  base_url: 'https://mon-sulu.example.com'  # Obligatoire
  timeout: 30                                # Optionnel, defaut : 30 (min : 1)
  max_retries: 3                             # Optionnel, defaut : 3 (min : 0)
  headers:                                   # Optionnel : en-tetes HTTP supplementaires
    X-Custom-Header: 'valeur'
  authentication:                            # Obligatoire
    type: 'jwt'                              # 'jwt' (defaut) ou 'bearer'
    # ... voir ci-dessous
Option Type Defaut Description
base_url string - Obligatoire. URL de base de l'API Sulu
timeout integer 30 Timeout des requetes en secondes (min : 1)
max_retries integer 3 Nombre de tentatives en cas d'echec (min : 0)
headers object {} En-tetes HTTP personnalises

Authentification JWT

Permet l'authentification par login/mot de passe avec obtention et renouvellement automatique du token JWT.

authentication:
  type: 'jwt'
  username: 'admin'
  password: 'secret'
  login_endpoint: '/api/login'  # Optionnel, defaut : '/api/login'
Option Type Defaut Description
username string - Nom d'utilisateur Sulu
password string - Mot de passe
token string - Token JWT pre-genere
login_endpoint string /api/login Endpoint de connexion

Regles de validation :

  • Au moins username + password ou token doit etre fourni
  • Si token et username/password sont fournis : le token est renouvele automatiquement a expiration
  • Si seul token est fourni : utilisation en Bearer statique
  • Si seuls username/password sont fournis : obtention du token via le login endpoint

Authentification Bearer

Utilise un token statique passe directement dans l'en-tete Authorization.

authentication:
  type: 'bearer'
  token: 'mon-token-api'  # Obligatoire
Option Type Defaut Description
token string - Obligatoire. Token d'authentification

Extractor

L'extractor permet d'extraire des donnees depuis l'API Sulu. Deux methodes sont disponibles : all (liste) et get (ressource unique).

Extraire toutes les ressources

extractor:
  type: 'articles'         # Obligatoire
  method: 'all'            # Defaut : 'all'
  locale: 'fr'             # Optionnel : code locale (articles, pages)
  website: 'default'       # Optionnel : identifiant du site (articles, pages)
  template: 'blog'         # Optionnel : filtre par template (pages uniquement)
  page: 1                  # Optionnel, defaut : 1 (min : 1)
  items_per_page: 30       # Optionnel, defaut : 30 (min : 1, max : 100)
  pagination_enabled: true # Optionnel, defaut : true
  filters:                 # Optionnel : filtres supplementaires
    category: '3'
    tag: 'featured'
Option Type Defaut Description
type enum - Obligatoire. Type de ressource (voir tableau)
method enum all Methode d'extraction : all ou get
locale string - Code locale (ex : fr, en) - articles et pages
website string - Identifiant du site web - articles et pages
template string - Filtre par template - pages uniquement
page integer 1 Page de demarrage (min : 1)
items_per_page integer 30 Nombre d'elements par page (min : 1, max : 100)
pagination_enabled boolean true Active la pagination automatique
filters object {} Parametres de filtre supplementaires pour l'API

Extraire une ressource unique

extractor:
  type: 'articles'
  method: 'get'
  id: '123e4567-e89b-12d3-a456-426614174000'  # Obligatoire quand method = 'get'
Option Type Defaut Description
id string - Obligatoire quand method = get. Identifiant de la ressource

Loader

Le loader permet de charger des donnees vers l'API Sulu. Quatre methodes sont disponibles : create, update, upsert et delete.

loader:
  type: 'articles'    # Obligatoire
  method: 'create'    # Defaut : 'create'
  id_field: 'id'      # Defaut : 'id'
Option Type Defaut Description
type enum - Obligatoire. Type de ressource (voir tableau)
method enum create Methode : create, update, upsert ou delete
id_field string id Champ contenant l'identifiant de la ressource

Valeurs possibles pour type : articles, pages, categories, media, tags, redirects

Methodes du loader

Methode Description id_field requis
create Cree une nouvelle ressource non
update Met a jour une ressource existante oui
upsert Cree la ressource si elle n'existe pas, la met a jour sinon oui
delete Supprime une ressource existante oui

Expression Language

Toutes les options de la configuration supportent l'Expression Language de Symfony. Cela permet d'utiliser des valeurs dynamiques a l'execution.

client:
  base_url: '@=env("SULU_API_URL")'
  authentication:
    type: 'jwt'
    username: '@=env("SULU_USERNAME")'
    password: '@=env("SULU_PASSWORD")'

Exemples complets

Extraire tous les articles en francais

sulu:
  client:
    base_url: 'https://mon-sulu.example.com'
    authentication:
      type: 'jwt'
      username: 'admin'
      password: 'mot-de-passe'
  extractor:
    type: 'articles'
    method: 'all'
    locale: 'fr'
    items_per_page: 50

Creer des categories

sulu:
  client:
    base_url: 'https://mon-sulu.example.com'
    authentication:
      type: 'bearer'
      token: 'mon-token-api'
  loader:
    type: 'categories'
    method: 'create'

Upsert de pages avec configuration dynamique

sulu:
  client:
    base_url: '@=env("SULU_API_URL")'
    timeout: 60
    max_retries: 5
    authentication:
      type: 'jwt'
      username: '@=env("SULU_USERNAME")'
      password: '@=env("SULU_PASSWORD")'
  loader:
    type: 'pages'
    method: 'upsert'
    id_field: 'uuid'

Supprimer des redirections

sulu:
  client:
    base_url: 'https://mon-sulu.example.com'
    authentication:
      type: 'jwt'
      username: 'admin'
      password: 'secret'
  loader:
    type: 'redirects'
    method: 'delete'
    id_field: 'id'A

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages