63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
"""
|
|
Plugin Distribution System URL Routes
|
|
"""
|
|
from django.urls import path
|
|
from . import views
|
|
|
|
app_name = 'plugins'
|
|
|
|
urlpatterns = [
|
|
# ============================================================================
|
|
# Public Endpoints (No Auth Required)
|
|
# ============================================================================
|
|
|
|
# Download latest version of a plugin
|
|
path('<slug:slug>/download/', views.download_plugin, name='download'),
|
|
|
|
# Check for updates (called by installed plugins)
|
|
path('<slug:slug>/check-update/', views.check_update, name='check-update'),
|
|
|
|
# Get plugin information (WordPress compatible)
|
|
path('<slug:slug>/info/', views.plugin_info, name='info'),
|
|
|
|
# Get latest plugin for a platform
|
|
path('<str:platform>/latest/', views.get_latest_plugin, name='latest-by-platform'),
|
|
|
|
# ============================================================================
|
|
# Authenticated Endpoints
|
|
# ============================================================================
|
|
|
|
# Register plugin installation
|
|
path('<slug:slug>/register-installation/', views.register_installation, name='register-installation'),
|
|
|
|
# Report health status
|
|
path('<slug:slug>/health-check/', views.health_check, name='health-check'),
|
|
|
|
# Track download (for analytics)
|
|
path('<slug:slug>/track-download/', views.track_download, name='track-download'),
|
|
]
|
|
|
|
# Admin URL patterns (to be included under /api/admin/plugins/)
|
|
admin_urlpatterns = [
|
|
# List all plugins / Create new plugin
|
|
path('', views.AdminPluginListView.as_view(), name='admin-plugin-list'),
|
|
|
|
# Plugin versions management
|
|
path('<slug:slug>/versions/', views.AdminPluginVersionsView.as_view(), name='admin-versions'),
|
|
path('<slug:slug>/versions/<str:version>/', views.AdminPluginVersionDetailView.as_view(), name='admin-version-detail'),
|
|
|
|
# Release a version
|
|
path('<slug:slug>/versions/<str:version>/release/', views.admin_release_version, name='admin-release'),
|
|
|
|
# Push update to installations
|
|
path('<slug:slug>/versions/<str:version>/push-update/', views.admin_push_update, name='admin-push-update'),
|
|
|
|
# View installations
|
|
path('installations/', views.AdminPluginInstallationsView.as_view(), name='admin-all-installations'),
|
|
path('<slug:slug>/installations/', views.AdminPluginInstallationsView.as_view(), name='admin-installations'),
|
|
|
|
# Statistics
|
|
path('stats/', views.AdminPluginStatsView.as_view(), name='admin-all-stats'),
|
|
path('<slug:slug>/stats/', views.AdminPluginStatsView.as_view(), name='admin-stats'),
|
|
]
|