mirror of
https://github.com/remnawave/python-sdk.git
synced 2026-08-30 13:23:02 +00:00
- Implemented TemplateResponseDto and UpdateTemplateRequestDto for subscription templates. - Created models for system statistics including CPU, memory, and bandwidth. - Developed user models for user creation, updates, and responses. - Added bulk actions for user updates and statistics tracking. - Introduced tests for authentication, bandwidth statistics, hosts, inbounds, key generation, nodes, subscriptions, and user management. - Enhanced utility functions for generating random strings, emails, and date ranges for testing.
70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
import datetime
|
|
from typing import List
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class NodeStatistic(BaseModel):
|
|
node_name: str = Field(alias="nodeName")
|
|
date: datetime.date
|
|
total_bytes: int = Field(alias="totalBytes")
|
|
|
|
|
|
class NodesStatisticResponseDto(BaseModel):
|
|
last_seven_days: List[NodeStatistic] = Field(alias="lastSevenDays")
|
|
|
|
|
|
class BandwidthStatistic(BaseModel):
|
|
current: str
|
|
previous: str
|
|
difference: str
|
|
|
|
|
|
class BandwidthStatisticResponseDto(BaseModel):
|
|
last_two_days: BandwidthStatistic = Field(alias="bandwidthLastTwoDays")
|
|
last_seven_days: BandwidthStatistic = Field(alias="bandwidthLastSevenDays")
|
|
last_30_days: BandwidthStatistic = Field(alias="bandwidthLast30Days")
|
|
calendar_month: BandwidthStatistic = Field(alias="bandwidthCalendarMonth")
|
|
current_year: BandwidthStatistic = Field(alias="bandwidthCurrentYear")
|
|
|
|
|
|
class CPUStatistic(BaseModel):
|
|
cores: int
|
|
physical_cores: int = Field(alias="physicalCores")
|
|
|
|
|
|
class MemoryStatistic(BaseModel):
|
|
total: int
|
|
free: int
|
|
used: int
|
|
active: int
|
|
available: int
|
|
|
|
|
|
class StatusCounts(BaseModel):
|
|
active: int = Field(alias="ACTIVE")
|
|
disabled: int = Field(alias="DISABLED")
|
|
limited: int = Field(alias="LIMITED")
|
|
expired: int = Field(alias="EXPIRED")
|
|
|
|
|
|
class UsersStatistic(BaseModel):
|
|
status_counts: StatusCounts = Field(alias="statusCounts")
|
|
total_users: int = Field(alias="totalUsers")
|
|
total_traffic_bytes: int = Field(alias="totalTrafficBytes")
|
|
|
|
|
|
class OnlineStatistic(BaseModel):
|
|
last_day: int = Field(alias="lastDay")
|
|
last_week: int = Field(alias="lastWeek")
|
|
never_online: int = Field(alias="neverOnline")
|
|
online_now: int = Field(alias="onlineNow")
|
|
|
|
|
|
class StatisticResponseDto(BaseModel):
|
|
cpu: CPUStatistic
|
|
memory: MemoryStatistic
|
|
uptime: float
|
|
timestamp: int
|
|
users: UsersStatistic
|
|
online_stats: OnlineStatistic = Field(alias="onlineStats")
|