from ri import (
RiAppBuilder, RiAppRuntime, RiError,
RiLogConfig, RiLogLevel,
RiAuthModule, RiAuthConfig,
RiCacheModule, RiCacheConfig, RiCachePolicy, RiCacheBackendType,
RiQueueModule, RiQueueConfig, RiQueueManager, RiQueueMessage,
RiServiceMesh, RiServiceMeshConfig,
RiObservabilityModule, RiObservabilityConfig, RiMetricsRegistry,
RiGateway, RiGatewayConfig, RiRouter, RiRoute,
)
import asyncio
from datetime import datetime, timedelta
from typing import Optional
async def demonstrate_application_initialization():
print("=== Application Initialization ===\n")
print("1. Creating application builder with method chaining...")
builder = RiAppBuilder()
print(" Builder created successfully\n")
print("2. Configuring logging and observability with chaining...")
log_config = RiLogConfig.default()
obs_config = RiObservabilityConfig.default()
builder = (builder
.with_logging(log_config)
.with_observability(obs_config))
print(" Logging and observability configured\n")
print("3. Building application runtime...")
try:
runtime = builder.build()
print(" Runtime built successfully!")
print(f" Runtime info: {runtime}\n")
except Exception as e:
print(f" Note: Runtime build may require additional configuration: {e}\n")
print("4. Application initialization complete!\n")
async def demonstrate_authentication():
print("=== Authentication Module ===\n")
print("1. Creating authentication configuration...")
auth_config = RiAuthConfig.default()
print(" Auth config created with defaults\n")
print("2. Creating authentication module...")
try:
auth_module = RiAuthModule(auth_config)
print(" Auth module created\n")
print("3. Generating test JWT token...")
token = auth_module.generate_test_token(
"user-123",
["user", "admin"],
["read:data", "write:data"]
)
print(f" Generated token: {token[:50]}...\n")
print("4. Validating JWT token...")
is_valid = auth_module.validate_jwt_token(token)
print(f" Token is valid: {is_valid}\n")
print("5. Checking auth module properties...")
print(f" Enabled: {auth_module.is_enabled}")
print(f" JWT expiry: {auth_module.jwt_expiry_secs} seconds")
print(f" Session timeout: {auth_module.session_timeout_secs} seconds\n")
except Exception as e:
print(f" Note: Auth module initialization: {e}\n")
print("6. Authentication demonstration complete!\n")
async def demonstrate_caching():
print("=== Cache Module ===\n")
print("1. Creating cache configuration...")
cache_config = RiCacheConfig()
cache_config.enabled = True
cache_config.default_ttl_secs = 300
cache_config.max_memory_mb = 1000
cache_config.backend_type = RiCacheBackendType.Memory
print(" Cache config created (memory backend)\n")
print("2. Creating cache module...")
try:
cache_module = RiCacheModule(cache_config)
print(" Cache module created\n")
print("3. Cache module properties...")
print(f" Config enabled: {cache_module.config.enabled}")
print(f" Default TTL: {cache_module.config.default_ttl_secs} seconds")
print(f" Max memory: {cache_module.config.max_memory_mb} MB\n")
except Exception as e:
print(f" Note: Cache module initialization: {e}\n")
print("4. Creating cache policy...")
policy = RiCachePolicy()
policy.max_size = 100
print(" Cache policy created\n")
print("5. Cache demonstration complete!\n")
async def demonstrate_message_queue():
print("=== Message Queue Module ===\n")
print("1. Creating queue configuration...")
queue_config = RiQueueConfig.default()
print(" Queue config created with defaults\n")
print("2. Creating queue module...")
try:
queue_module = RiQueueModule(queue_config)
print(" Queue module created\n")
print("3. Getting queue manager...")
manager = queue_module.get_manager()
print(" Queue manager obtained\n")
except Exception as e:
print(f" Note: Queue module initialization: {e}\n")
print("4. Message queue demonstration complete!\n")
async def demonstrate_service_mesh():
print("=== Service Mesh Module ===\n")
print("1. Creating service mesh configuration...")
mesh_config = RiServiceMeshConfig()
print(" Mesh config created\n")
print("2. Creating service mesh...")
try:
service_mesh = RiServiceMesh(mesh_config)
print(" Service mesh created\n")
except Exception as e:
print(f" Note: Service mesh initialization: {e}\n")
print("3. Service mesh demonstration complete!\n")
async def demonstrate_observability():
print("=== Observability Module ===\n")
print("1. Creating observability configuration...")
obs_config = RiObservabilityConfig()
print(" Observability config created\n")
print("2. Creating observability module...")
try:
obs_module = RiObservabilityModule(obs_config)
print(" Observability module created\n")
except Exception as e:
print(f" Note: Observability module initialization: {e}\n")
print("3. Observability demonstration complete!\n")
async def demonstrate_gateway():
print("=== Gateway Module ===\n")
print("1. Creating gateway configuration...")
gateway_config = RiGatewayConfig.default()
print(" Gateway config created\n")
print("2. Creating router...")
router = RiRouter()
print(" Router created\n")
print("3. Gateway demonstration complete!\n")
async def main():
print("=" * 60)
print("Ri Comprehensive API Example")
print("=" * 60)
print()
try:
await demonstrate_application_initialization()
await demonstrate_authentication()
await demonstrate_caching()
await demonstrate_message_queue()
await demonstrate_service_mesh()
await demonstrate_observability()
await demonstrate_gateway()
print("=" * 60)
print("All demonstrations completed successfully!")
print("=" * 60)
print()
print("For more examples, see:")
print(" - examples/Python/*.py")
print(" - doc/zh/05-usage-examples/")
except Exception as e:
print(f"Error during demonstration: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(main())