Complete package renaming and platform migration: Package Name Changes: - Rename package from 'wikijs-python-sdk' to 'py-wikijs' - Update setup.py package name - Update pyproject.toml package name - Users can now install with: pip install py-wikijs URL Migration (Gitea → GitHub): - Replace all Gitea URLs with GitHub URLs - Update repository: github.com/l3ocho/py-wikijs - Update issue tracker: github.com/l3ocho/py-wikijs/issues - Update documentation links - Fix URL path format (/src/branch/main/ → /blob/main/) Documentation Updates: - Update README.md badges (PyPI, GitHub) - Update installation instructions (pip install py-wikijs) - Update all doc references to new package name - Update all examples with GitHub URLs - Update DEPLOYMENT_READY.md with new package name - Update deployment.md with new package name Testing: - Successfully built py_wikijs-0.1.0.tar.gz (138 KB) - Successfully built py_wikijs-0.1.0-py3-none-any.whl (66 KB) - Package installs correctly: pip install py-wikijs - Imports work: from wikijs import WikiJSClient - Package metadata correct (Home-page: github.com/l3ocho/py-wikijs) Breaking Changes: - Package name changed from wikijs-python-sdk to py-wikijs - Repository migrated from Gitea to GitHub - All URLs updated to GitHub Users should now: pip install py-wikijs # Instead of wikijs-python-sdk 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
95 lines
2.6 KiB
Python
95 lines
2.6 KiB
Python
"""Base authentication interface for py-wikijs.
|
|
|
|
This module defines the abstract base class for all authentication handlers,
|
|
providing a consistent interface for different authentication methods.
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import Dict
|
|
|
|
|
|
class AuthHandler(ABC):
|
|
"""Abstract base class for Wiki.js authentication handlers.
|
|
|
|
This class defines the interface that all authentication implementations
|
|
must follow, ensuring consistent behavior across different auth methods.
|
|
"""
|
|
|
|
@abstractmethod
|
|
def get_headers(self) -> Dict[str, str]:
|
|
"""Get authentication headers for HTTP requests.
|
|
|
|
Returns:
|
|
Dict[str, str]: Dictionary of headers to include in requests.
|
|
|
|
Raises:
|
|
AuthenticationError: If authentication is invalid or expired.
|
|
"""
|
|
|
|
@abstractmethod
|
|
def is_valid(self) -> bool:
|
|
"""Check if the current authentication is valid.
|
|
|
|
Returns:
|
|
bool: True if authentication is valid, False otherwise.
|
|
"""
|
|
|
|
@abstractmethod
|
|
def refresh(self) -> None:
|
|
"""Refresh the authentication if possible.
|
|
|
|
For token-based authentication, this should refresh the token.
|
|
For API key authentication, this is typically a no-op.
|
|
|
|
Raises:
|
|
AuthenticationError: If refresh fails.
|
|
"""
|
|
|
|
def validate_credentials(self) -> None:
|
|
"""Validate credentials and refresh if necessary.
|
|
|
|
This is a convenience method that checks validity and refreshes
|
|
if needed. Subclasses can override for custom behavior.
|
|
|
|
Raises:
|
|
AuthenticationError: If credentials are invalid or refresh fails.
|
|
"""
|
|
if not self.is_valid():
|
|
self.refresh()
|
|
|
|
if not self.is_valid():
|
|
from ..exceptions import AuthenticationError
|
|
|
|
raise AuthenticationError("Authentication credentials are invalid")
|
|
|
|
|
|
class NoAuth(AuthHandler):
|
|
"""No-authentication handler for testing or public instances.
|
|
|
|
This handler provides an empty authentication implementation,
|
|
useful for testing or when accessing public Wiki.js instances
|
|
that don't require authentication.
|
|
"""
|
|
|
|
def get_headers(self) -> Dict[str, str]:
|
|
"""Return empty headers dict.
|
|
|
|
Returns:
|
|
Dict[str, str]: Empty dictionary.
|
|
"""
|
|
return {}
|
|
|
|
def is_valid(self) -> bool:
|
|
"""Always return True for no-auth.
|
|
|
|
Returns:
|
|
bool: Always True.
|
|
"""
|
|
return True
|
|
|
|
def refresh(self) -> None:
|
|
"""No-op for no-auth.
|
|
|
|
This method does nothing since there's no authentication to refresh.
|
|
"""
|