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}")
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 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))
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))
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
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
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