# Path: qiniu/utils.py
# def urlsafe_base64_encode(data):
#     """urlsafe的base64编码:
# 
#     对提供的数据进行urlsafe的base64编码。规格参考：
#     https://developer.qiniu.com/kodo/manual/1231/appendix#1
# 
#     Args:
#         data: 待编码的数据，一般为字符串
# 
#     Returns:
#         编码后的字符串
#     """
#     ret = urlsafe_b64encode(b(data))
#     return s(ret)


import base64
import hmac
import time
from hashlib import sha1
from requests.auth import AuthBase
from .compat import urlparse, json, b
from .utils import urlsafe_base64_encode
    'persistentNotifyUrl',  # 持久化处理结果通知URL
    'persistentPipeline',  # 持久化处理独享队列
    'deleteAfterDays',  # 文件多少天后自动删除
    'fileType',  # 文件的存储类型，0为普通存储，1为低频存储
    'isPrefixalScope'  # 指定上传文件必须使用的前缀
])


class Auth(object):
    """七牛安全机制类

    该类主要内容是七牛上传凭证、下载凭证、管理凭证三种凭证的签名接口的实现，以及回调验证。

    Attributes:
        __access_key: 账号密钥对中的accessKey，详见 https://portal.qiniu.com/user/key
        __secret_key: 账号密钥对重的secretKey，详见 https://portal.qiniu.com/user/key
    """

    def __init__(self, access_key, secret_key):
        """初始化Auth类"""
        self.__checkKey(access_key, secret_key)
        self.__access_key = access_key
        self.__secret_key = b(secret_key)

    def get_access_key(self):
        return self.__access_key

    def __token(self, data):
        data = b(data)
        hashed = hmac.new(self.__secret_key, data, sha1)

# Path: qiniu/utils.py
# def urlsafe_base64_encode(data):
#     """urlsafe的base64编码:
# 
#     对提供的数据进行urlsafe的base64编码。规格参考：
#     https://developer.qiniu.com/kodo/manual/1231/appendix#1
# 
#     Args:
#         data: 待编码的数据，一般为字符串
# 
#     Returns:
#         编码后的字符串
#     """
#     ret = urlsafe_b64encode(b(data))
#     return s(ret)


# Path: qiniu/auth.py
import base64
import hmac
import time
from hashlib import sha1
from requests.auth import AuthBase
from .compat import urlparse, json, b
from .utils import urlsafe_base64_encode

    'persistentNotifyUrl',  # 持久化处理结果通知URL
    'persistentPipeline',  # 持久化处理独享队列
    'deleteAfterDays',  # 文件多少天后自动删除
    'fileType',  # 文件的存储类型，0为普通存储，1为低频存储
    'isPrefixalScope'  # 指定上传文件必须使用的前缀
])


class Auth(object):
    """七牛安全机制类

    该类主要内容是七牛上传凭证、下载凭证、管理凭证三种凭证的签名接口的实现，以及回调验证。

    Attributes:
        __access_key: 账号密钥对中的accessKey，详见 https://portal.qiniu.com/user/key
        __secret_key: 账号密钥对重的secretKey，详见 https://portal.qiniu.com/user/key
    """

    def __init__(self, access_key, secret_key):
        """初始化Auth类"""
        self.__checkKey(access_key, secret_key)
        self.__access_key = access_key
        self.__secret_key = b(secret_key)

    def get_access_key(self):
        return self.__access_key

    def __token(self, data):
        data = b(data)
        hashed = hmac.new(self.__secret_key, data, sha1)

        return urlsafe_base64_encode(hashed.digest())