1- from pydantic import BaseModel
2- from typing import Optional , List , Dict , Any , ClassVar
1+ from pydantic import BaseModel , field_validator , ValidationInfo , AfterValidator , ValidationError
2+ from typing import Optional , List , Dict , Any , ClassVar , Annotated
33
44class Token (BaseModel ):
55 access_token : str
@@ -23,19 +23,6 @@ class AdminModify(BaseModel):
2323class HTTPValidationError (BaseModel ):
2424 detail : Optional [List [Dict [str , Any ]]] = None
2525
26- class SystemStats (BaseModel ):
27- version : str
28- mem_total : int
29- mem_used : int
30- cpu_cores : int
31- cpu_usage : float
32- total_user : int
33- users_active : int
34- incoming_bandwidth : int
35- outgoing_bandwidth : int
36- incoming_bandwidth_speed : int
37- outgoing_bandwidth_speed : int
38-
3926class ProxySettings (BaseModel ):
4027 id : Optional [str ] = None
4128 flow : Optional [str ] = None
@@ -75,7 +62,13 @@ class UserResponse(BaseModel):
7562 created_at : Optional [str ] = None
7663 links : Optional [List [str ]] = []
7764 subscription_url : Optional [str ] = None
65+ subscription_token : Optional [str ] = None
7866 excluded_inbounds : Optional [Dict [str , List [str ]]] = None
67+
68+ def __init__ (self , ** data ):
69+ super ().__init__ (** data )
70+ if not self .subscription_token and self .subscription_url :
71+ self .subscription_token = self .subscription_url .split ('/' )[- 1 ]
7972
8073class NodeCreate (BaseModel ):
8174 name : str
@@ -197,3 +190,39 @@ class ValidationError(BaseModel):
197190 loc : List [Any ]
198191 msg : str
199192 type : str
193+
194+ class SubscriptionUserResponse (BaseModel ):
195+ proxies : Dict [str , Any ]
196+ expire : Optional [int ] = None
197+ data_limit : Optional [int ] = None
198+ data_limit_reset_strategy : str = "no_reset"
199+ inbounds : Dict [str , List [str ]] = {}
200+ note : Optional [str ] = None
201+ sub_updated_at : Optional [str ] = None
202+ sub_last_user_agent : Optional [str ] = None
203+ online_at : Optional [str ] = None
204+ on_hold_expire_duration : Optional [int ] = None
205+ on_hold_timeout : Optional [str ] = None
206+ auto_delete_in_days : Optional [int ] = None
207+ username : str
208+ status : str
209+ used_traffic : int
210+ lifetime_used_traffic : int = 0
211+ created_at : str
212+ links : List [str ] = []
213+ subscription_url : str = ""
214+ excluded_inbounds : Dict [str , List [str ]] = {}
215+ admin : Optional [Admin ] = None
216+
217+ class SystemStats (BaseModel ):
218+ version : Optional [str ] = None
219+ mem_total : Optional [int ] = None
220+ mem_used : Optional [int ] = None
221+ cpu_cores : Optional [int ] = None
222+ cpu_usage : Optional [float ] = None
223+ total_user : Optional [int ] = None
224+ users_active : Optional [int ] = None
225+ incoming_bandwidth : Optional [int ] = None
226+ outgoing_bandwidth : Optional [int ] = None
227+ incoming_bandwidth_speed : Optional [int ] = None
228+ outgoing_bandwidth_speed : Optional [int ] = None
0 commit comments