HTTP¶
Internal API
These classes are for internal use only.
Users should interact with Client and other public API classes instead.
http
¶
logger = logging.getLogger('scurrypy.http')
module-attribute
¶
RequestItem
dataclass
¶
method: str
instance-attribute
¶
endpoint: str
instance-attribute
¶
data: Serialized | list[Serialized]
instance-attribute
¶
params: JSON | None
instance-attribute
¶
files: list[str] | None
instance-attribute
¶
assets: Serialized | None
instance-attribute
¶
future: asyncio.Future[HTTPResponse]
instance-attribute
¶
Bucket
dataclass
¶
HttpClient
¶
BASE = 'https://discord.com/api/v10'
class-attribute
instance-attribute
¶
session: aiohttp.ClientSession | None = None
instance-attribute
¶
queues: dict[str, asyncio.Queue[RequestItem]] = {}
instance-attribute
¶
queues_lock = asyncio.Lock()
instance-attribute
¶
workers: dict[str, asyncio.Task[None]] = {}
instance-attribute
¶
buckets: dict[str, Bucket] = {}
instance-attribute
¶
bucket_lock: dict[str, asyncio.Lock] = {}
instance-attribute
¶
buckets_lock = asyncio.Lock()
instance-attribute
¶
global_lock: asyncio.Lock = asyncio.Lock()
instance-attribute
¶
global_reset: float = 0.0
instance-attribute
¶
start
async
¶
Start the HTTP session.
close
async
¶
Gracefully stop all workers and close the HTTP session.
request
async
¶
Queue a request for the given endpoint.
Parameters:
-
method(str) –HTTP method (e.g., POST, GET, DELETE, PATCH, etc.)
-
endpoint(str) –Discord endpoint (e.g., /channels/123/messages -- leading forward slash not required)
-
data(Serialized | list[Serialized], default:None) –relevant data
-
params(JSON | None, default:None) –relevant query params
-
files(list[str] | None, default:None) –relevant files
-
assets(Serialized, default:None) –relevant assets
Raises:
-
DiscordError–something went wrong
Returns:
-
HTTPResponse–result or promise of request or None if failed
request_json
async
¶
Queue a request for the given endpoint.
Parameters:
-
method(str) –HTTP method (e.g., POST, GET, DELETE, PATCH, etc.)
-
endpoint(str) –Discord endpoint (e.g., /channels/123/messages -- leading forward slash not required)
-
data(Serialized | list[Serialized], default:None) –relevant data
-
params(JSON | None, default:None) –relevant query params
-
files(list[str] | None, default:None) –relevant files
-
assets(Serialized, default:None) –relevant assets
Returns:
-
JSON–result or promise of request promising JSON
request_list
async
¶
Queue a request for the given endpoint.
Parameters:
-
method(str) –HTTP method (e.g., POST, GET, DELETE, PATCH, etc.)
-
endpoint(str) –Discord endpoint (e.g., /channels/123/messages -- leading forward slash not required)
-
data(Serialized | list[Serialized], default:None) –relevant data
-
params(JSON | None, default:None) –relevant query params
-
files(list[str] | None, default:None) –relevant files
-
assets(Serialized, default:None) –relevant assets
Returns:
-
list[JSON]–list result or promise of request promising list of JSON