wyzeapy.crypto API documentation

# wyzeapy.crypto

View Source

     1#  Copyright (c) 2021. Mulliken, LLC - All Rights Reserved
     2#  You may use, distribute and modify this code under the terms
     3#  of the attached license. You should have received a copy of
     4#  the license with this file. If not, please write to:
     5#  katie@mulliken.net to receive a copy
     6import hashlib
     7import hmac
     8import urllib.parse
     9from typing import Dict, Union, Any
    10
    11from .const import FORD_APP_SECRET, OLIVE_SIGNING_SECRET
    12
    13
    14def olive_create_signature(payload: Union[Dict[Any, Any], str], access_token: str) -> str:
    15    if isinstance(payload, dict):
    16        body = ""
    17        for item in sorted(payload):
    18            body += item + "=" + str(payload[item]) + "&"
    19
    20        body = body[:-1]
    21
    22    else:
    23        body = payload
    24
    25    access_key = "{}{}".format(access_token, OLIVE_SIGNING_SECRET)
    26
    27    secret = hashlib.md5(access_key.encode()).hexdigest()
    28    return hmac.new(secret.encode(), body.encode(), hashlib.md5).hexdigest()
    29
    30
    31def ford_create_signature(url_path: str, request_method: str, payload: Dict[Any, Any]) -> str:
    32    string_buf = request_method + url_path
    33    for entry in sorted(payload.keys()):
    34        string_buf += entry + "=" + payload[entry] + "&"
    35
    36    string_buf = string_buf[:-1]
    37    string_buf += FORD_APP_SECRET
    38    urlencoded = urllib.parse.quote_plus(string_buf)
    39    return hashlib.md5(urlencoded.encode()).hexdigest()

def olive_create_signature(payload: Union[Dict[Any, Any], str], access_token: str) -> str: View Source

    15def olive_create_signature(payload: Union[Dict[Any, Any], str], access_token: str) -> str:
    16    if isinstance(payload, dict):
    17        body = ""
    18        for item in sorted(payload):
    19            body += item + "=" + str(payload[item]) + "&"
    20
    21        body = body[:-1]
    22
    23    else:
    24        body = payload
    25
    26    access_key = "{}{}".format(access_token, OLIVE_SIGNING_SECRET)
    27
    28    secret = hashlib.md5(access_key.encode()).hexdigest()
    29    return hmac.new(secret.encode(), body.encode(), hashlib.md5).hexdigest()

def ford_create_signature(url_path: str, request_method: str, payload: Dict[Any, Any]) -> str: View Source

    32def ford_create_signature(url_path: str, request_method: str, payload: Dict[Any, Any]) -> str:
    33    string_buf = request_method + url_path
    34    for entry in sorted(payload.keys()):
    35        string_buf += entry + "=" + payload[entry] + "&"
    36
    37    string_buf = string_buf[:-1]
    38    string_buf += FORD_APP_SECRET
    39    urlencoded = urllib.parse.quote_plus(string_buf)
    40    return hashlib.md5(urlencoded.encode()).hexdigest()