How to use token_re method in autopy

Best Python code snippet using autopy Github


Full Screen

1# coding=utf-82import re3import hmac4import time5import traceback6import requests7from functools import wraps8# from flask.ext.babel import gettext as _9from flask import g, session, redirect, current_app, request, render_template, jsonify10__author__ = 'Feng Lu'11token_re = re.compile(r"\??\b_token=\w+&?")12def res_json(code, data, message, success, **kwargs):13 res = jsonify(14 code=code,15 data=data,16 message=message,17 success=success,18 **kwargs19 )20 if str(code) in ["200", "401", "403"]:21 res.status_code = code22 return res23class PermissionDeniedException(Exception):24 def __init__(self, permissions):25 super(Exception, self).__init__('permissions %(perm)s required', perm=' or '.join(permissions))26class Auth(object):27 @classmethod28 def required(cls, permissions, error_resp_type="json"):29 if not (isinstance(permissions, list) or isinstance(permissions, tuple)):30 permissions = [permissions, ]31 if "super.admin" not in permissions:32 permissions.append("super.admin")33 def wrap(func):34 @wraps(func)35 def inner_wrap(*args, **kwargs):36 if hasattr(g, 'user'):37 if any(map(lambda x: x in permissions, g.user['permissions'])):38 return func(*args, **kwargs)39 if len(permissions) == 0:40 return func(*args, **kwargs)41 msg = u"没有权限访问: %s" % func.__name__42 if error_resp_type == "json":43 return res_json(**{"code": 403, "data": "", "message": (msg), "success": False})44 elif error_resp_type == "html":45 return render_template("common/fail.html", message=msg)46 else:47 return res_json(**{"code": 403, "data": "", "message": (msg), "success": False})48 return inner_wrap49 return wrap50 @classmethod51 def allow(cls, permissions):52 if not (isinstance(permissions, list) or isinstance(permissions, tuple)):53 permissions = [permissions, ]54 if "super.admin" not in permissions:55 permissions.append("super.admin")56 if not hasattr(g, 'user'):57 return False58 if any(map(lambda x: x in permissions, g.user['permissions'])) or len(permissions) == 0:59 return True60 return False61 @classmethod62 def load_user(cls):63 if not current_app.config.get('SSO_ENABLE'):64 g.user = current_app.config.get("LOCAL_USER")65 return66 if request.values.get("_token"):67 session["user_token"] = request.values.get("_token")68 if session.get('user_token'):69 url = '%s/account/user_info.json?token=%s&secret=%s&app=%d' % (70 current_app.config.get('SSO_URL'),71 session.get('user_token'),72 current_app.config.get('SSO_APP_SECRET'),73 current_app.config.get('SSO_APP_ID')74 )75 try:76 req = requests.get(url)77 resp = req.json()78 if resp['code'] == 200:79 g.user = resp["data"]80 if token_re.findall(request.url):81 return redirect(token_re.sub("", request.url))82 elif resp['code'] == 403:83 return render_template("include/fail.html", message=resp["message"])84 else:85 return redirect('/account/login?redirect=%s' % (token_re.sub("", request.url)))86 except Exception as e:87 return redirect('/account/login?redirect=%s' % (token_re.sub("", request.url)))88 else:89 return redirect('/account/login?redirect=%s' % (token_re.sub("", request.url)))90 @classmethod91 def load_api(cls):92 """93 """94 if not current_app.config.get('SSO_ENABLE'):95 g.user = current_app.config.get("LOCAL_USER")96 return97 # 必须要提供三个头参数98 secretid = request.headers.get("x-secretid")99 timestamp = request.headers.get("x-timestamp")100 signature = request.headers.get("x-signature")101 if secretid and timestamp and signature:102 serv_timestamp = time.strftime('%s', time.localtime())103 delta = abs(int(serv_timestamp) - int(timestamp))104 if delta > 60:105 return jsonify(106 {"retcode": -1,107 "msg": "The timestamp you provide is difference to server up to 60s, please check your system time",108 "result": "", "type": "str"})109 url = '%s/account/secret/%s' % (current_app.config.get('SSO_URL'), secretid)110 try:111 req = requests.get(url)112 resp = req.json()113 if resp['status'] == 200:114 secret = resp["secret"]115 query_keys = request.values.keys()116 query_keys.sort()117 query = []118 for key in query_keys:119 query.append("%s=%s" % (key, request.values[key]))120 body = '&'.join(query)121 # 生成签名122 serv_signature =["key"]), body).hexdigest()123 if serv_signature != signature:124 return jsonify({"retcode": -1, "msg": "x-signature is incrrect! ", "result": "", "type": "str"})125 g.user = resp126 if token_re.findall(request.url):127 return redirect(token_re.sub("", request.url))128 else:129 return jsonify({"retcode": -1, "msg": resp.get("message"), "result": "", "type": "str"})130 except Exception as e:131 current_app.logger.error(traceback.format_exc())132 return jsonify({"retcode": -1, "msg": e.message, "result": "", "type": "str"})133 else:134 return jsonify(135 {"retcode": -1, "msg": "x-secretid,x-timestamp and x-signature in headers is required", "result": "",...

Full Screen

Full Screen Github


Full Screen

1# -*- coding: utf-8 -*-2# @Time : 2016/12/4 下午1:313# @Author : Zhixin Piao, Shengjia Yan, Ruiming Wang4# @Email :,, new6import re as libre7from REtoNFA import NFA, NFAManager8from NFAtoDFA import DFAmanager9class Re_Token:10 def __init__(self, lexer, re):11 self.lexer = lexer12 self.func = None13 = re14 = re15 def extends(self):16 _method = None17 if self.func is not None:18 func = 'def callBack(self):\n'19 for code in self.func.split('\n'):20 func += '\t' + code + '\n'21 exec func + '_method = callBack'22 self.__dict__['callBack'] = new.instancemethod(_method, self, None)23 self.callBack()24class Token:25 def __init__(self, name, value=''):26 = name27 if value == '':28 self.value = name29 else:30 self.value = value31class Lex:32 # 初始化33 def __init__(self, path):34 self.lineno = 035 self.keywords = {}36 with open(path, 'r') as f:37 self.parserLexFile( # 读取lex文件信息39 def parserLexFile(self, content):40 # 定义区,规则区,用户定义代码区41 (define, rule, user) = content.split('%%')42 # 定义区数据读取43 temp_token = {}44 define = define.replace('\t', ' ')45 defines = [d for d in define.split('\n') if d != '']46 for d in defines:47 token_name = d[:d.index(' ')]48 token_re = d[d.index('['):d.rindex(']') + 1]49 temp_token[token_name] = token_re50 # 规则区数据读取51 tokenArr = self.ReTokenArr = []52 rules = [r for r in rule.split('\n') if r != '']53 code_flag = False54 code = ''55 cur_Token = None56 for r in rules:57 # print r58 if code_flag:59 if r.find('}') != -1:60 code_flag = False61 cur_Token.func = code[:-1]62 tokenArr.append(cur_Token)63 code = ''64 else:65 code += r.strip() + '\n'66 elif r.find('"') != -1:67 token_re = r[r.index('"') + 1:r.rindex('"')]68 tokenArr.append(Re_Token(self, token_re))69 elif r.find('{') == -1:70 token_re = r.strip()71 tokenArr.append(Re_Token(self, token_re))72 else:73 token_re = r[:r.rindex('{')].strip()74 cur_Token = Re_Token(self, token_re)75 code_flag = True76 # 替换定义区正规表达式77 for token in tokenArr:78 for k, v in temp_token.iteritems():79 ='{' + k + '}', v)80 token.extends()81 print u'lex数据读取完成,正在进行Re->NFA'82 self.ReToNFA()83 # 用户定义代码区84 pass85 # 解析正规表达式86 def ReToNFA(self):87 nfaManager = NFAManager()88 nfaArr = []89 for token in self.ReTokenArr:90 ='\\n', '\n').replace('\\t', '\t').replace('\\r', '\r')91 if == '(' or == ')' or == '*':92 = "\\" + token.re93 # print token.re94 if libre.match(r'[a-z]+', self.keywords[] = token.re96 else:97 nfaArr.append(nfaManager.feed(, self.nfa = nfaManager.merge(nfaArr)99 self.nfa.draw()100 print u'Re->NFA完成,正在执行NFA->DFA'101 self.NFAtoDFA()102 def NFAtoDFA(self):103 nfa = self.nfa104 self.dfacreator = DFAmanager(nfa.dic, nfa.getInfo())105 self.dfacreator.creatDFA()106 self.dfacreator.draw()107 print u'NFA->DFA完成,正在读取数据'108 def feedCode(self, code_path):109 with open(code_path, 'r') as f:110 res = self.dfacreator.judgeString(, self.keywords)111 TokenArr = []112 for r in res:113 if r['category'] == 'IGNORE':114 continue115 print r116 if r['category'] == 'NUMBER':117 TokenArr.append(Token(r['category'], int(r['mention'])))118 else:119 TokenArr.append(Token(r['category'], r['mention']))120 return TokenArr121 def getTerminals(self):122 terminals = []123 for s in self.ReTokenArr:124 if == 'IGNORE':125 continue126 terminals.append(

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:


You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run autopy automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?