Пример #1
0
def get_short_link(iiuv):
    host = 'https://dwz.cn'
    path = '/admin/v2/create'
    url = host + path
    method = 'POST'
    content_type = 'application/json'

    # 设置Token
    token = global_config.getRaw('baidu', 'BAIDU_SHORT_LINK_TOKEN')

    # 设置待创建的长网址 # TODO 生成短链接地址是跳转到301的地址
    bodys = {
        'Url': global_config.getRaw('baidu', 'SHORT_URL') + f"?iiuv={iiuv}",
        'TermOfValidity': 'long-term'
    }

    # 配置headers
    headers = {'Content-Type': content_type, 'Token': token}
    # headers = {'Token': token}

    # 发起请求
    response = requests.post(url=url, data=json.dumps(bodys), headers=headers)

    # 读取响应
    res = response.text
    try:
        if res['Code'] == '-13':
            return 'https://dwz.cn/Zgm62TqR'
        else:
            return json.loads(res)["ShortUrl"]
    except Exception as e:
        return 'https://dwz.cn/Zgm62TqR'
        current_app.logger.error(111)
        current_app.logger.error(f"Exception{e}")
Пример #2
0
 def __init__(self):
     """
     Args:
         secret_id (str) 产品密钥ID,产品标识
         secret_key (str) 产品私有密钥,服务端生成签名信息使用
         business_id (str) 业务ID,易盾根据产品业务特点分配
     """
     self.secret_id = global_config.getRaw('wangyi', 'WI_SECRET_ID')
     self.secret_key = global_config.getRaw('wangyi', 'WI_SECRET_KEY')
     self.business_id = global_config.getRaw('wangyi', 'WI_BUSINESS_ID')
Пример #3
0
 def get_connection(self):
     try:
         self.connection = MySQLdb.connect(
             host=global_config.getRaw('mysql', 'HOST'),
             user=global_config.getRaw('mysql', 'USER'),
             password=global_config.getRaw('mysql', 'PASSWORD'),
             db=global_config.getRaw('mysql', 'DB'),
             charset=global_config.getRaw('mysql', 'CHARSET'),
         )
     except MySQLdb.Error as e:
         print('Error : {} '.format(e))
Пример #4
0
class SmsSendAPIDemo(object):
    """易盾短信发送接口示例代码"""
    API_URL = global_config.getRaw('wangyi', 'API_URL')
    VERSION = global_config.getRaw('wangyi', 'VERSION')

    def __init__(self):
        """
        Args:
            secret_id (str) 产品密钥ID,产品标识
            secret_key (str) 产品私有密钥,服务端生成签名信息使用
            business_id (str) 业务ID,易盾根据产品业务特点分配
        """
        self.secret_id = global_config.getRaw('wangyi', 'WI_SECRET_ID')
        self.secret_key = global_config.getRaw('wangyi', 'WI_SECRET_KEY')
        self.business_id = global_config.getRaw('wangyi', 'WI_BUSINESS_ID')

    def gen_signature(self, params=None):
        """生成签名信息
        Args:
            params (object) 请求参数
        Returns:
            参数签名md5值
        """
        buff = ""
        for k in sorted(params.keys()):
            buff += str(k) + str(params[k])
        buff += self.secret_key
        return hashlib.md5(buff.encode('utf-8')).hexdigest()

    def send(self, params):
        """请求易盾接口
        Args:
            params (object) 请求参数
        Returns:
            请求结果,json格式
        """
        params["secretId"] = self.secret_id
        params["businessId"] = self.business_id
        params["version"] = self.VERSION
        params["timestamp"] = int(time.time() * 1000)
        params["nonce"] = int(random.random() * 100000000)
        params["signature"] = self.gen_signature(params)

        try:
            params = urllib.parse.urlencode(params).encode()
            requests = urllib.request.Request(self.API_URL, params)
            # 根据API的要求,定义相对应的Content-Type
            requests.add_header(
                'Content-Type',
                'application/x-www-form-urlencoded; charset=UTF-8')
            content = urllib.request.urlopen(requests, timeout=1).read()
            return json.loads(content)
        except Exception as e:
            print("调用API接口失败:{}".format(e))
Пример #5
0
def generate_token():
    # 需要填写你的 Access Key 和 Secret Key
    access_key = global_config.getRaw('qiniu', 'QINIU_ACCESS_KEY')
    secret_key = global_config.getRaw('qiniu', 'QINIU_SECRET_KEY')
    # 构建鉴权对象
    q = Auth(access_key, secret_key)
    # 要上传的空间
    bucket_name = global_config.getRaw('qiniu', 'QINIU_BUCKET_NAME')
    key = None
    # 生成上传 Token,可以指定过期时间等
    # 3600为token过期时间,秒为单位。3600等于一小时
    token = q.upload_token(bucket_name, key, 3600)
    return token
Пример #6
0
 def post(self):
     """用户接任务"""
     parser = reqparse.RequestParser()
     parser.add_argument('task_id', type=int, required=True, location='json')
     parser.add_argument('app_safe_info', type=dict, required=True, location='json')
     args = parser.parse_args()
     # 要json数据入库,接收的类型必须是dict然后转str,不然会一直报错.可能需要flask的json,
     new_data = json.dumps(args.app_safe_info).replace("'", '"')
     # 判断此任务是否还有剩余数量
     # 判断用户是否已经提现成功
     tx = MysqlSearch().get_one(f"SELECT verify FROM {ET_MEMBER_WITHDRAWAL} WHERE member_id='{g.user_id}' and verify=2")
     current_app.logger.error(tx)
     if tx is None:
         return {"error": "请进行新手提现成功再领取任务"}
     sy = MysqlSearch().get_one(f"SELECT tasks_counts,count_tasks,check_router FROM {TASKS_TABLE} WHERE id='{args.task_id}'")
     if sy['tasks_counts'] == sy['count_tasks']:
         return {'error_code': 4003, 'msg': '此任务无法领取.数量不足'}
     task_status = current_app.redis_cli.sismember('cancel_tasks_{}'.format(g.user_id), args.task_id)
     if task_status is True:
         return {'error': '此任务用户已取消过, 24小时内不能在领取'},HttpStatus.OK.value
     complete_task = current_app.redis_cli.sismember('complete_tasks_{}'.format(g.user_id), args.task_id)
     if complete_task is True:
         return {'error': '此任务用户已领取'}, HttpStatus.OK.value
     else:
         now_time = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
         # todo  'http://' + '47.113.91.65:5007' 添加到config配置项
         current_app.logger.error(sy['check_router'])
         safe_token = global_config.getRaw('Invite_link', 'EWM_LINK') + f'?td={args.task_id}&fromu={g.user_id}&ref={sy["check_router"]}'
         current_app.logger.error(safe_token)
         sql = f"INSERT INTO {ET_TASK_ORDERS} (task_id,member_id,status,add_time,app_safe_info,safe_token) VALUE ('{args.task_id}','{g.user_id}',1,'{now_time}','{new_data}','{safe_token}')"
         res = MysqlWrite().write(sql)
         if res == 1:
             # 更新任务剩余数量
             r = MysqlWrite().write(f"UPDATE {TASKS_TABLE} SET count_tasks=count_tasks + 1 WHERE ID='{args.task_id}'")
             # redis操作
             rc = current_app.redis_cli
             # 删除用户任务缓存
             rc.delete('user_tasks_:{}'.format(g.user_id))
             # 删除任务缓存
             rc.delete('tasks_info')
             # 删除用户任务的缓存
             rc.delete('user_tasks_:{}'.format(g.user_id))
             rc.sadd('complete_tasks_:{}'.format(args.task_id),g.user_id)
             # 向已领取任务redis中添加数据
             rc.sadd('fetch_tasks_:{}'.format(args.task_id), g.user_id)
             # 删除任务详情缓存
             rc.delete("tasks_detail_:{}".format(args.task_id))
             # 删除用户任务总列表数据
             rc.delete(f"tasks_info_{g.user_id}")
             return {'data': '添加任务完成'}, HttpStatus.OK.value
         else:
             return {'error': '任务获取失败,请重试'}, HttpStatus.OK.value
Пример #7
0
def create_app(config, enable_config_file=False):
    """
    创建应用
    :param config: 配置信息对象
    :param enable_config_file: 是否允许运行环境中的配置文件覆盖已加载的配置信息
    :return: 应用
    """
    app = create_flask_app(config, enable_config_file)

    # 注册url转换器
    sys.path.append('../')
    from utils.converters import register_converters
    register_converters(app)

    # Redis配置
    from flask_redis import FlaskRedis
    app.config['REDIS_URL'] = global_config.getRaw('redis', 'REDIS_URL')
    app.redis_cli = FlaskRedis(app)

    # 配置限流器
    from utils.limiter import limiter as lmt
    lmt.init_app(app)

    # 添加请求钩子
    from utils.middlewares import jwt_authentication
    app.before_request(jwt_authentication)

    # 配置日志
    from utils.logging import create_logger
    create_logger(app)

    # 注册用户模块蓝图
    from haozhuan.resources.user import user_bp
    app.register_blueprint(user_bp)

    # 允许跨域

    return app