Source code for flask_discord.utils

"""Few utility functions and decorators."""

import functools

from . import exceptions
from flask import current_app


class JSONBool(object):

    def __init__(self, value):
        self.value = bool(value)

    def __bool__(self):
        return self.value

    def __str__(self):
        return "true" if self else "false"

    @classmethod
    def from_string(cls, value):
        if value.lower() == "true":
            return cls(True)
        if value.lower() == "false":
            return cls(False)
        raise ValueError


def json_bool(value):
    if isinstance(value, str):
        return str(JSONBool.from_string(value))
    return str(JSONBool(value))


# Decorators.

[docs]def requires_authorization(view): """A decorator for flask views which raises exception :py:class:`flask_discord.Unauthorized` if the user is not authorized from Discord OAuth2. """ # TODO: Add support to validate scopes. @functools.wraps(view) def wrapper(*args, **kwargs): if not current_app.discord.authorized: raise exceptions.Unauthorized return view(*args, **kwargs) return wrapper