apicrud.utils¶
utils.py
- Utilities
Miscellaneous utility functions that don’t fit elsewhere
created 11-apr-2020 by richb@instantlinux.net
Functions
|
Record IDs are random 48-bit RFC-4648 radix-64 with a fixed prefix to make them (somewhat) more human-recognizable |
|
Normalize an email address for use as an identity: downcase and in certain cases remove characters. |
Report request duration as milliseconds |
|
|
Convert html to plain-text by stripping tags |
|
For mocking: unittest.mock can’t patch out datetime.utcnow directly |
Classes
-
class
apicrud.utils.
HtmlStripper
¶ -
get_data
()¶ return the stripped html
Returns: str
-
handle_data
(d)¶ add a string to the html object
- Parameters
d (str) – chunk of html
-
-
apicrud.utils.
gen_id
(length=8, prefix='x-', chars='-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz')¶ Record IDs are random 48-bit RFC-4648 radix-64 with a fixed prefix to make them (somewhat) more human-recognizable
First 15 bits are generated from Unix epoch to make them sortable by date (granularity 24 hours); rolls over after year 2107
- Parameters
length (int) – length of generated portion after prefix
prefix (str) – prefix to distinguish ID type
chars (str) – set of characters to choose from for random portion
-
apicrud.utils.
identity_normalize
(identity)¶ Normalize an email address for use as an identity: downcase and in certain cases remove characters. This is required to secure against a type of attack involving password-resets: an example of the vulnerability is described here:
https://jameshfisher.com/2018/04/07/the-dots-do-matter-how-to-scam-a-gmail-user/
- Parameters
identity (str) – a raw email address
Returns: str
-
apicrud.utils.
req_duration
()¶ Report request duration as milliseconds
Convert html to plain-text by stripping tags
- Parameters
html (str) – an html document
-
apicrud.utils.
utcnow
()¶ For mocking: unittest.mock can’t patch out datetime.utcnow directly