improve cb32 handling
This commit is contained in:
parent
f0a109983b
commit
c7a41a70df
5 changed files with 18 additions and 5 deletions
|
|
@ -1,5 +1,13 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.4.0
|
||||||
|
|
||||||
|
👀
|
||||||
|
|
||||||
|
## 0.3.5
|
||||||
|
|
||||||
|
- Fixed cb32 handling. Now leading zeros in SIQ's are stripped, and `.from_cb32()` was implemented.
|
||||||
|
|
||||||
## 0.3.4
|
## 0.3.4
|
||||||
|
|
||||||
- Bug fixes in `.flask_restx` regarding error handling
|
- Bug fixes in `.flask_restx` regarding error handling
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ from .itertools import makelist, kwargs_prefix, ltuple, rtuple, additem
|
||||||
from .i18n import I18n, JsonI18n, TomlI18n
|
from .i18n import I18n, JsonI18n, TomlI18n
|
||||||
from .snowflake import Snowflake, SnowflakeGen
|
from .snowflake import Snowflake, SnowflakeGen
|
||||||
|
|
||||||
__version__ = "0.3.4"
|
__version__ = "0.3.5"
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'Siq', 'SiqCache', 'SiqType', 'SiqGen', 'StringCase',
|
'Siq', 'SiqCache', 'SiqType', 'SiqGen', 'StringCase',
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ class FlaskAuthSrc(AuthSrc):
|
||||||
def get_signature(self) -> bytes:
|
def get_signature(self) -> bytes:
|
||||||
sig = request.headers.get('authorization-signature', None)
|
sig = request.headers.get('authorization-signature', None)
|
||||||
return want_bytes(sig) if sig else None
|
return want_bytes(sig) if sig else None
|
||||||
def invalid_exc(self, msg: str = 'validation failed') -> Never:
|
def invalid_exc(self, msg: str = 'Validation failed') -> Never:
|
||||||
abort(400, msg)
|
abort(400, msg)
|
||||||
def required_exc(self):
|
def required_exc(self):
|
||||||
abort(401, 'Login required')
|
abort(401, 'Login required')
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ from typing import Iterable, override
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from .functools import deprecated
|
from .functools import deprecated
|
||||||
from .codecs import b32lencode, b64encode, cb32encode
|
from .codecs import b32lencode, b64encode, cb32decode, cb32encode, want_str
|
||||||
|
|
||||||
|
|
||||||
class SiqType(enum.Enum):
|
class SiqType(enum.Enum):
|
||||||
|
|
@ -235,9 +235,14 @@ class Siq(int):
|
||||||
|
|
||||||
def to_base64(self, length: int = 15, *, strip: bool = True) -> str:
|
def to_base64(self, length: int = 15, *, strip: bool = True) -> str:
|
||||||
return b64encode(self.to_bytes(length), strip=strip)
|
return b64encode(self.to_bytes(length), strip=strip)
|
||||||
|
|
||||||
def to_cb32(self) -> str:
|
def to_cb32(self) -> str:
|
||||||
return cb32encode(self.to_bytes(15, 'big'))
|
return cb32encode(self.to_bytes(15, 'big')).lstrip('0')
|
||||||
to_crockford = to_cb32
|
to_crockford = to_cb32
|
||||||
|
@classmethod
|
||||||
|
def from_cb32(cls, val: str | bytes):
|
||||||
|
return cls.from_bytes(cb32decode(want_str(val).zfill(24)))
|
||||||
|
|
||||||
def to_hex(self) -> str:
|
def to_hex(self) -> str:
|
||||||
return f'{self:x}'
|
return f'{self:x}'
|
||||||
def to_oct(self) -> str:
|
def to_oct(self) -> str:
|
||||||
|
|
|
||||||
|
|
@ -278,7 +278,7 @@ def require_auth_base(cls: type[DeclarativeBase], *, src: AuthSrc, column: str |
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
|
|
||||||
invalid_exc = src.invalid_exc or _default_invalid
|
invalid_exc = src.invalid_exc or _default_invalid
|
||||||
required_exc = src.required_exc or (lambda: _default_invalid())
|
required_exc = src.required_exc or (lambda: _default_invalid('Login required'))
|
||||||
|
|
||||||
def decorator(func: Callable):
|
def decorator(func: Callable):
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue