encode/python2/alibabacloud_darabonba_encode_util/encoder.py (35 lines of code) (raw):
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
try:
from urllib import urlencode, quote_plus, quote
except ImportError:
from urllib.parse import urlencode, quote_plus, quote
import binascii
import hashlib
import base64
from .sm3 import hash_sm3
class Encoder(object):
"""
Encode Util for Darabonba.
"""
def __init__(self):
pass
@staticmethod
def url_encode(url):
"""
Encode the URL
@type url: str
@param url: string
@rtype: str
@return: encoded string
"""
return urlencode(url)
@staticmethod
def percent_encode(raw):
"""
Special encoding for url params.
@param params: string
@rtype: str
@return: encoded string
"""
return quote(str(raw), safe='~')
@staticmethod
def path_encode(path):
"""
Encode the partial path of url.
@type path: str
@param path: string
@rtype: str
@return: encoded string
"""
return quote(str(path), safe='/~')
@staticmethod
def hex_encode(raw):
"""
Hex encode for byte array.
@param raw: byte array
@rtype: str
@return: encoded string
"""
return binascii.b2a_hex(raw).decode('utf-8')
@staticmethod
def hash(raw, signature_algorithm):
"""
Hash the raw data with signatureAlgorithm.
@param raw: hashing data
@type signature_algorithm: str
@param signature_algorithm: the autograph method
@return: hashed bytes
"""
if 'HMAC-SHA256' in signature_algorithm or 'RSA-SHA256' in signature_algorithm:
return hashlib.sha256(raw).digest()
elif 'HMAC-SM3' in signature_algorithm:
return hash_sm3(raw)
@staticmethod
def base_64encode_to_string(raw):
"""
Base64 encoder for byte array.
@param raw: byte array
@rtype: str
@return: encoded string
"""
return str(base64.b64encode(raw))
@staticmethod
def base_64decode(src):
"""
Base64 dncoder for string.
@type src: str
@param src: string
@return: dncoded byte array
"""
return base64.b64encode(src).decode('utf-8')