updates
This commit is contained in:
56
Backend/venv/lib/python3.12/site-packages/stripe/_encode.py
Normal file
56
Backend/venv/lib/python3.12/site-packages/stripe/_encode.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import calendar
|
||||
import datetime
|
||||
import time
|
||||
from collections import OrderedDict
|
||||
from typing import Generator, Optional, Tuple, Any
|
||||
|
||||
|
||||
def _encode_datetime(dttime: datetime.datetime):
|
||||
if dttime.tzinfo and dttime.tzinfo.utcoffset(dttime) is not None:
|
||||
utc_timestamp = calendar.timegm(dttime.utctimetuple())
|
||||
else:
|
||||
utc_timestamp = time.mktime(dttime.timetuple())
|
||||
|
||||
return int(utc_timestamp)
|
||||
|
||||
|
||||
def _encode_nested_dict(key, data, fmt="%s[%s]"):
|
||||
d = OrderedDict()
|
||||
for subkey, subvalue in data.items():
|
||||
d[fmt % (key, subkey)] = subvalue
|
||||
return d
|
||||
|
||||
|
||||
def _json_encode_date_callback(value):
|
||||
if isinstance(value, datetime.datetime):
|
||||
return _encode_datetime(value)
|
||||
return value
|
||||
|
||||
|
||||
def _api_encode(
|
||||
data, api_mode: Optional[str]
|
||||
) -> Generator[Tuple[str, Any], None, None]:
|
||||
for key, value in data.items():
|
||||
if value is None:
|
||||
continue
|
||||
elif hasattr(value, "stripe_id"):
|
||||
yield (key, value.stripe_id)
|
||||
elif isinstance(value, list) or isinstance(value, tuple):
|
||||
for i, sv in enumerate(value):
|
||||
encoded_key = key if api_mode == "V2" else "%s[%d]" % (key, i)
|
||||
if isinstance(sv, dict):
|
||||
subdict = _encode_nested_dict(encoded_key, sv)
|
||||
for k, v in _api_encode(subdict, api_mode):
|
||||
yield (k, v)
|
||||
else:
|
||||
yield (encoded_key, sv)
|
||||
elif isinstance(value, dict):
|
||||
subdict = _encode_nested_dict(key, value)
|
||||
for subkey, subvalue in _api_encode(subdict, api_mode):
|
||||
yield (subkey, subvalue)
|
||||
elif isinstance(value, datetime.datetime):
|
||||
yield (key, _encode_datetime(value))
|
||||
elif isinstance(value, bool):
|
||||
yield (key, str(value).lower())
|
||||
else:
|
||||
yield (key, value)
|
||||
Reference in New Issue
Block a user