| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- from .apikey import apikey
- class apikey_validator:
- """
- That is API key validator. It check that API key have valid prefix,
- size and separator.
- """
- def __init__(
- self,
- size: int,
- prefix: str,
- prefix_separator: str
- ) -> None:
- """
- That is API key validator constructor, it would be used by API key
- validator factory, not direct.
- Parameters
- ----------
- size : int
- Size of the apikey validator.
-
- prefix : str
- Prefix of the API key.
- prefix_separator : str
- Separator between random part of the API key and prefix.
- """
- self.__size = size
- self.__prefix = prefix
- self.__prefix_separator = prefix_separator
- @property
- def size(self) -> int:
- """
- Full size of the API key.
- Returns
- -------
- int
- Full lenght of the API key.
- """
- return self.__size
- @property
- def prefix(self) -> str:
- """
- Prefix of the API key.
- Returns
- -------
- str
- Prefix of the API key.
- """
- return self.__prefix
- @property
- def prefix_separator(self) -> str:
- """
- Character between prefix and random part of the API key.
- Returns
- -------
- str
- Separator character.
- """
- return self.__prefix_separator
- def validate(self, content: str | apikey) -> bool:
- """
- That validate API key, check that it prefix, prefix separator and
- size if proof.
- Parameters
- ----------
- content : str | apikey
- Target to validate that is proof API key.
- Returns
- -------
- bool
- Result of the validation. True when valid, False when invalid.
- """
- if type(content) is not str:
- content = str(content)
- parts = content.split(self.prefix_separator)
- if len(parts) != 2:
- return False
- prefix = parts[0]
- token = parts[1]
- if prefix != self.prefix:
- return False
- if len(content) != self.size:
- return False
- if len(token) % 2 != 0:
- token = token + "0"
- try:
- bytes_token = bytes.fromhex(token)
- except:
- return False
- return True
|