PyZipline/pyzipline/models.py

235 lines
7.4 KiB
Python
Raw Normal View History

2023-12-19 05:36:18 -05:00
from typing import List, Dict, Union
from datetime import datetime
class Embed:
def __init__(
self,
color: str,
title: str,
siteName: str,
description: str,
**kwargs
):
"""Embed object used for checking embeds
:param color: String of the embed's color
:param title: String of the embed's title
:param siteName: String of the embed's site name
:param description: String of the embed's description
"""
self.color = color
self.title = title
self.siteName = siteName
self.description = description
self.__dict__.update(kwargs)
class File:
def __init__(
self,
createdAt: datetime,
id: int,
mimetype: str,
views: int,
name: str,
size: int,
favorite: bool,
originalName: str = None,
url: str = None,
maxViews: int = None,
expiredAt: Union[datetime, None] = None,
thumbnail: str = None,
folderId: int = None,
**kwargs
):
"""File object used for uploading files to Zipline
:param createdAt: Datetime object of when the file was created
:param id: Integer ID of the file
:param mimetype: String of the file's mimetype
:param views: Integer of the number of views the file has
:param name: String of the file's name
:param size: Integer of the file's size in bytes
:param favorite: Boolean of whether the file is favorited
:param originalName: (optional) String of the file's original name
:param url: (optional) String of the file's URL
:param maxViews: (optional) Integer of the file's maximum number of views
:param expiredAt: (optional) Datetime object of when the file will expire
:param thumbnail: (optional) String of the file's thumbnail URL
:param folderId: (optional) Integer of the file's folder ID
"""
self.createdAt = createdAt
self.id = id
self.mimetype = mimetype
self.views = views
self.name = name
self.size = size
self.favorite = favorite
self.originalName = originalName
self.url = url
self.maxViews = maxViews
self.expiredAt = expiredAt
self.thumbnail = thumbnail
self.folderId = folderId
self.__dict__.update(kwargs)
class Result:
def __init__(self, status_code: int, message: str = '', data: List[Dict] = None):
"""Result returned from low-level RestAdapter
:param status_code: Standard HTTP Status code
:type status_code: int
2023-12-19 05:36:18 -05:00
:param message: Human readable result
:type message: str
2023-12-19 05:36:18 -05:00
:param data: Python List of Dictionaries (or maybe just a single Dictionary on error)
:type data: Union[List[Dict], Dict]
2023-12-19 05:36:18 -05:00
"""
self.status_code = int(status_code)
self.message = str(message)
self.data = data if data else []
class Invite:
def __init__(
self,
id: int,
code: str,
createdAt: datetime,
expiredAt: datetime,
used: bool,
createdById: int,
**kwargs
):
"""Invite object used for managing invites
:param id: Integer ID of the invite
:type id: int
2023-12-19 05:36:18 -05:00
:param code: String of the invite's code
:type code: str
2023-12-19 05:36:18 -05:00
:param createdAt: Datetime object of when the invite was created
:type createdAt: datetime
2023-12-19 05:36:18 -05:00
:param expiredAt: Datetime object of when the invite will expire
:type expiredAt: datetime
2023-12-19 05:36:18 -05:00
:param used: Boolean of whether the invite has been used
:type used: bool
2023-12-19 05:36:18 -05:00
:param createdById: Integer ID of the user who created the invite
:type createdById: int
2023-12-19 05:36:18 -05:00
"""
self.id = id
self.code = code
self.createdAt = createdAt
self.expiredAt = expiredAt
self.used = used
self.createdById = createdById
self.__dict__.update(kwargs)
class OAuth:
def __init__(
self,
id: int,
provider: str,
userId: int,
providerId: str,
username: str,
token: str,
refresh: str,
**kwargs
):
"""OAuth object used for managing OAuth
:param id: Integer ID of the OAuth
:type id: int
2023-12-19 05:36:18 -05:00
:param provider: String of the OAuth's provider, one of 'DISCORD', 'GITHUB', 'GOOGLE'
:type provider: str
2023-12-19 05:36:18 -05:00
:param userId: Integer ID of the user who owns the OAuth
:type userId: int
2023-12-19 05:36:18 -05:00
:param providerId: String of the OAuth's provider ID
:type providerId: str
2023-12-19 05:36:18 -05:00
:param username: String of the OAuth's connected account's username
:type username: str
2023-12-19 05:36:18 -05:00
:param token: String of the OAuth's access token
:type token: str
2023-12-19 05:36:18 -05:00
:param refresh: String of the OAuth's refresh token
:type refresh: str
2023-12-19 05:36:18 -05:00
"""
self.id = id
self.provider = provider
self.userId = userId
self.providerId = providerId
self.username = username
self.token = token
self.refresh = refresh
self.__dict__.update(kwargs)
class User:
def __init__(
self,
id: int,
uuid: str,
username: str,
avatar: str,
token: str,
administrator: bool,
superAdmin: bool,
systemTheme: str,
embed: Embed,
totpSecret: str,
domains: List[str],
oauth: Union[List['OAuth'], None] = None,
ratelimit: [datetime, None] = None,
**kwargs
):
"""User object used for managing users
:param id: Integer ID of the user
:type id: int
2023-12-19 05:36:18 -05:00
:param uuid: String of the user's UUID
:type uuid: str
2023-12-19 05:36:18 -05:00
:param username: String of the user's username
:type username: str
2023-12-19 05:36:18 -05:00
:param avatar: String of the user's avatar, base64 encoded
:type avatar: str
2023-12-19 05:36:18 -05:00
:param token: String of the user's token
:type token: str
2023-12-19 05:36:18 -05:00
:param administrator: Boolean of whether the user is an administrator
:type administrator: bool
2023-12-19 05:36:18 -05:00
:param superAdmin: Boolean of whether the user is a super administrator
:type superAdmin: bool
2023-12-19 05:36:18 -05:00
:param systemTheme: String of the user's system theme
:type systemTheme: str
2023-12-19 05:36:18 -05:00
:param embed: Embed object of the user's embed
:type embed: Embed
2023-12-19 05:36:18 -05:00
:param totpSecret: String of the user's TOTP secret
:type totpSecret: str
2023-12-19 05:36:18 -05:00
:param domains: List of Strings of the user's domains
:type domains: List[str]
2023-12-19 05:36:18 -05:00
:param oauth: (optional) List of OAuth objects
:type oauth: Union[List[OAuth], None]
2023-12-19 05:36:18 -05:00
:param ratelimit: (optional) Datetime object of when the user's ratelimit expires
:type ratelimit: Union[datetime, None]
2023-12-19 05:36:18 -05:00
"""
self.id = id
self.uuid = uuid
self.username = username
self.avatar = avatar
self.token = token
self.administrator = administrator
self.superAdmin = superAdmin
self.systemTheme = systemTheme
self.embed = embed
self.totpSecret = totpSecret
self.domains = domains
self.oauth = oauth
self.ratelimit = ratelimit
self.__dict__.update(kwargs)