mirror of
https://github.com/remnawave/python-sdk.git
synced 2026-05-13 12:16:42 +00:00
feat: добавить эндпоинт для получения сырой подписки по короткому UUID и обновить модели подписки
This commit is contained in:
parent
94a13687a6
commit
8a84503191
5 changed files with 78 additions and 13 deletions
|
|
@ -3,7 +3,7 @@ from typing import Annotated
|
|||
from rapid_api_client import Path
|
||||
|
||||
from remnawave.enums import ClientType
|
||||
from remnawave.models import GetSubscriptionInfoResponseDto
|
||||
from remnawave.models import GetSubscriptionInfoResponseDto, GetRawSubscriptionByShortUuidResponseDto
|
||||
from remnawave.rapid import BaseController, get
|
||||
|
||||
|
||||
|
|
@ -52,3 +52,13 @@ class SubscriptionController(BaseController):
|
|||
) -> str:
|
||||
"""None"""
|
||||
...
|
||||
|
||||
# get raw sub by short uuid
|
||||
@get("/sub/{short_uuid}/raw", response_class=GetRawSubscriptionByShortUuidResponseDto)
|
||||
async def get_raw_subscription(
|
||||
self,
|
||||
short_uuid: Annotated[str, Path(description="Short UUID of the user")],
|
||||
withDisabledHosts: Annotated[Annotated[bool, Path(description="Include disabled hosts")], bool] = False,
|
||||
) -> GetRawSubscriptionByShortUuidResponseDto:
|
||||
"""None"""
|
||||
...
|
||||
|
|
@ -93,14 +93,6 @@ class UsersController(BaseController):
|
|||
) -> UserResponseDto:
|
||||
"""Reset User Traffic"""
|
||||
...
|
||||
|
||||
@post("/users/{uuid}/actions/activate-all-inbounds", response_class=UserResponseDto)
|
||||
async def activate_all_inbounds(
|
||||
self,
|
||||
uuid: Annotated[str, Path(description="UUID of the user")],
|
||||
) -> UserResponseDto:
|
||||
"""Activate All Inbounds"""
|
||||
...
|
||||
|
||||
@get("/users/by-short-uuid/{short_uuid}", response_class=UserResponseDto)
|
||||
async def get_user_by_short_uuid(
|
||||
|
|
|
|||
|
|
@ -16,6 +16,10 @@ class UserSubscription(BaseModel):
|
|||
days_left: int = Field(alias="daysLeft")
|
||||
traffic_used: str = Field(alias="trafficUsed")
|
||||
traffic_limit: str = Field(alias="trafficLimit")
|
||||
lifetime_traffic_used: str = Field(alias="lifetimeTrafficUsed")
|
||||
traffic_used_bytes: str = Field(alias="trafficUsedBytes")
|
||||
traffic_limit_bytes: str = Field(alias="trafficLimitBytes")
|
||||
lifetime_traffic_used_bytes: int = Field(alias="lifetimeTrafficUsedBytes")
|
||||
traffic_limit_strategy: TrafficLimitStrategy = Field(alias="trafficLimitStrategy")
|
||||
expires_at: datetime = Field(alias="expiresAt")
|
||||
user_status: UserStatus = Field(alias="userStatus")
|
||||
|
|
@ -40,6 +44,69 @@ class GetSubscriptionInfoResponseDto(BaseModel):
|
|||
happ: HappCrypto
|
||||
|
||||
|
||||
class RawHostAdditionalParams(BaseModel):
|
||||
mode: Optional[str] = None
|
||||
heartbeat_period: Optional[int] = Field(None, alias="heartbeatPeriod")
|
||||
|
||||
|
||||
class RawHostProtocolOptions(BaseModel):
|
||||
class SSOptions(BaseModel):
|
||||
method: Optional[str] = None
|
||||
|
||||
ss: Optional[SSOptions] = None
|
||||
|
||||
|
||||
class RawHostDbData(BaseModel):
|
||||
raw_inbound: Optional[Dict[str, Any]] = Field(alias="rawInbound")
|
||||
inbound_tag: str = Field(alias="inboundTag")
|
||||
uuid: str
|
||||
config_profile_uuid: Optional[str] = Field(alias="configProfileUuid")
|
||||
config_profile_inbound_uuid: Optional[str] = Field(alias="configProfileInboundUuid")
|
||||
is_disabled: bool = Field(alias="isDisabled")
|
||||
view_position: int = Field(alias="viewPosition")
|
||||
remark: str
|
||||
is_hidden: bool = Field(alias="isHidden")
|
||||
tag: Optional[str] = None
|
||||
|
||||
|
||||
class RawHost(BaseModel):
|
||||
address: Optional[str] = None
|
||||
alpn: Optional[str] = None
|
||||
fingerprint: Optional[str] = None
|
||||
host: Optional[str] = None
|
||||
network: Optional[str] = None
|
||||
password: Optional[str] = None
|
||||
path: Optional[str] = None
|
||||
public_key: Optional[str] = Field(None, alias="publicKey")
|
||||
port: Optional[int] = None
|
||||
protocol: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
short_id: Optional[str] = Field(None, alias="shortId")
|
||||
sni: Optional[str] = None
|
||||
spider_x: Optional[str] = Field(None, alias="spiderX")
|
||||
tls: Optional[str] = None
|
||||
header_type: Optional[str] = Field(None, alias="headerType")
|
||||
additional_params: Optional[RawHostAdditionalParams] = Field(None, alias="additionalParams")
|
||||
x_http_extra_params: Optional[Dict[str, Any]] = Field(None, alias="xHttpExtraParams")
|
||||
mux_params: Optional[Dict[str, Any]] = Field(None, alias="muxParams")
|
||||
sockopt_params: Optional[Dict[str, Any]] = Field(None, alias="sockoptParams")
|
||||
server_description: Optional[str] = Field(None, alias="serverDescription")
|
||||
flow: Optional[str] = None
|
||||
protocol_options: Optional[RawHostProtocolOptions] = Field(None, alias="protocolOptions")
|
||||
db_data: RawHostDbData = Field(alias="dbData")
|
||||
|
||||
|
||||
class RawSubscriptionResponse(BaseModel):
|
||||
user: UserSubscription
|
||||
subscription_url: str = Field(alias="subscriptionUrl")
|
||||
raw_hosts: List[RawHost] = Field(alias="rawHosts")
|
||||
headers: Dict[str, str]
|
||||
is_hwid_limited: bool = Field(alias="isHwidLimited")
|
||||
|
||||
|
||||
class GetRawSubscriptionByShortUuidResponseDto(RawSubscriptionResponse):
|
||||
pass
|
||||
|
||||
class SubscriptionWithoutHapp(BaseModel):
|
||||
is_found: bool = Field(alias="isFound")
|
||||
user: UserSubscription
|
||||
|
|
|
|||
|
|
@ -71,9 +71,6 @@ class CreateUserRequestDto(BaseModel):
|
|||
hwidDeviceLimit: Optional[int] = Field(
|
||||
None, serialization_alias="hwidDeviceLimit", strict=True, ge=0
|
||||
)
|
||||
activate_all_inbounds: Optional[bool] = Field(
|
||||
None, serialization_alias="activateAllInbounds"
|
||||
)
|
||||
active_internal_squads: Optional[List[str]] = Field(
|
||||
None, serialization_alias="activeInternalSquads"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ async def test_users(remnawave) -> None:
|
|||
email=email,
|
||||
telegram_id=telegram_id,
|
||||
expire_at=expire_at,
|
||||
activate_all_inbounds=True,
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue