Module mirai.api_provider

此模块提供 ApiProvider 的基础定义。

Expand source code
# -*- coding: utf-8 -*-
"""
此模块提供 ApiProvider 的基础定义。
"""
import abc
import functools
from enum import Enum
from typing import Any, Awaitable, Callable, Union


class Method(str, Enum):
    """API 接口的调用方法。"""
    GET = "GET"
    """使用 GET 方法调用。"""
    POST = "POST"
    """使用 POST 方法调用。"""
    # 区分下面两个,是为了兼容 websocket
    RESTGET = "RESTGET"
    """表明这是一个对 RESTful 接口的 GET。"""
    RESTPOST = "RESTPOST"
    """表明这是一个对 RESTful 接口的 POST。"""
    MULTIPART = "MULTIPART"
    """表明这是一个使用了 multipart/form-data 的 POST。"""


class ApiProvider(abc.ABC):
    """支持从属性调用 API 的类。

    使用了 `__getattr__`,可以直接通过属性调用 API。
    """
    @abc.abstractmethod
    async def call_api(self, api: str, method: Method = Method.GET, **params):
        """调用 API。此处为抽象方法,具体实现由子类决定。

        Args:
            api: API 名称。
            method: 调用方法。默认为 GET。
            **params: 参数。
        """

    def __getattr__(self,
                    api: str) -> Callable[..., Union[Awaitable[Any], Any]]:
        return functools.partial(self.call_api, api)

Classes

class ApiProvider

支持从属性调用 API 的类。

使用了 __getattr__,可以直接通过属性调用 API。

Expand source code
class ApiProvider(abc.ABC):
    """支持从属性调用 API 的类。

    使用了 `__getattr__`,可以直接通过属性调用 API。
    """
    @abc.abstractmethod
    async def call_api(self, api: str, method: Method = Method.GET, **params):
        """调用 API。此处为抽象方法,具体实现由子类决定。

        Args:
            api: API 名称。
            method: 调用方法。默认为 GET。
            **params: 参数。
        """

    def __getattr__(self,
                    api: str) -> Callable[..., Union[Awaitable[Any], Any]]:
        return functools.partial(self.call_api, api)

Ancestors

  • abc.ABC

Subclasses

Methods

async def call_api(self, api: str, method: Method = Method.GET, **params)

调用 API。此处为抽象方法,具体实现由子类决定。

Args

api
API 名称。
method
调用方法。默认为 GET。
**params
参数。
Expand source code
@abc.abstractmethod
async def call_api(self, api: str, method: Method = Method.GET, **params):
    """调用 API。此处为抽象方法,具体实现由子类决定。

    Args:
        api: API 名称。
        method: 调用方法。默认为 GET。
        **params: 参数。
    """
class Method (value, names=None, *, module=None, qualname=None, type=None, start=1)

API 接口的调用方法。

Expand source code
class Method(str, Enum):
    """API 接口的调用方法。"""
    GET = "GET"
    """使用 GET 方法调用。"""
    POST = "POST"
    """使用 POST 方法调用。"""
    # 区分下面两个,是为了兼容 websocket
    RESTGET = "RESTGET"
    """表明这是一个对 RESTful 接口的 GET。"""
    RESTPOST = "RESTPOST"
    """表明这是一个对 RESTful 接口的 POST。"""
    MULTIPART = "MULTIPART"
    """表明这是一个使用了 multipart/form-data 的 POST。"""

Ancestors

  • builtins.str
  • enum.Enum

Class variables

var GET

使用 GET 方法调用。

var MULTIPART

表明这是一个使用了 multipart/form-data 的 POST。

var POST

使用 POST 方法调用。

var RESTGET

表明这是一个对 RESTful 接口的 GET。

var RESTPOST

表明这是一个对 RESTful 接口的 POST。