def validate_cas(ticket): s=session.pop('cas_s') validate_query=[('service',s),('ticket',ticket)] from flask import current_app cas_validate_url=urljoin(current_app.config['CAS_TOKEN_VALIDATE_URL'],'?{0}'.format(urlencode(validate_query))) isValid = False try: rst_xml_obj=urlopen(cas_validate_url).read().strip() xml_dict=xml_parse(rst_xml_obj) attr = xml_dict['cas:serviceResponse']['cas:authenticationSuccess']['cas:attributes'] isValid = True if "cas:authenticationSuccess" in xml_dict["cas:serviceResponse"] else False except Exception as e: traceback.print_exc() if isValid: xml_dict=xml_dict['cas:serviceResponse']['cas:authenticationSuccess'] user_id=xml_dict['cas:user'] attributes = xml_dict.get("cas:attributes", {}) user_mail=attributes.get('cas:mail','') user_displayName=attributes.get('cas:displayName','') try: xing=user_displayName[0] except: xing='' try: ming=user_displayName[1:] except: ming='' log_user_in(user_id, xing, ming, user_mail) return isValid
def get_suggest(text): data = { "type" : "DESKDICT", "num" : 10, "ver" : 2.0, "le": "eng", "q" : text } ret = public_curl.request("http://dict.youdao.com/suggest", data) doc = xml_parse(ret) try: return doc['suggest']['items']['item'] except: return None
def read_compressed_music_xml(file_path): file = zipfile.ZipFile(file_path, 'r') file_name = [ file for file in file.filelist if 'META-INF' not in file.filename ] assert len(file_name) == 1, file_name music_xml_file = file.open(file_name.pop(), 'r') result = music_xml_file.read() return xml_parse( result, force_list=['score-part', 'part', 'note', 'measure', 'creator'])
def get_simple(text): data = { "keyfrom" : "deskdict.mini", "q" : text, "doctype" : "xml", "xmlVersion" : 8.2, "client" : "deskdict", "id" : "cee84504d9984f1b2", "vendor": "unknown", "in" : "YoudaoDict", "appVer" : "5.4.46.5554", "appZengqiang" : 0, "le" : "eng", "LTH" : 40} ret = public_curl.request("http://dict.youdao.com/search", data) ret = xml_parse(ret) yodaodict = ret['yodaodict'] simpleinfo.keyword = text try: word = yodaodict['basic']['simple-dict']['word'] except Exception: traceback.print_exc(file=sys.stdout) simpleinfo.ukphone = None simpleinfo.usphone = None simpleinfo.trans = None else: ukphone = word.get("ukphone", None) if ukphone: simpleinfo.ukphone = "英[%s]" % ukphone else: simpleinfo.ukphone = None usphone = word.get("usphone", None) if usphone: simpleinfo.usphone = "美[%s]" % usphone else: simpleinfo.usphone = None trs = word["trs"]["tr"] if isinstance(trs, list): ret = "<br>".join(item['l']['i'] for item in trs) else: ret = trs['l']['i'] simpleinfo.trans = ret ret = yodaodict['yodao-web-dict']['web-translation'] if isinstance(ret, list): ret = ret[0] trans = ret['trans'] if isinstance(trans, list): web_trans = "|".join(item["value"] for item in trans) else: web_trans = trans['value'] simpleinfo.webtrans = web_trans
def get_suggest(text, num=10): data = { "type" : "DESKDICT", "num" : num, "ver" : 2.0, "le": "eng", "q" : text } ret = requests.get("http://dict.youdao.com/suggest", params=data).text doc = xml_parse(ret) results = [] try: data = doc['suggest']['items']['item'] for item in data: if item.has_key("title") and item.has_key("explain"): results.append(dict(title=item["title"], explain=item["explain"])) except: return None else: if results: return results return None
def get_suggest(text, num=10): text = text.strip() data = { "type": "DESKDICT", "num": num, "ver": 2.0, "le": "eng", "q": text, "client": const.client } results = [] try: ret = requests.get("http://dict.youdao.com/suggest", params=data).text doc = xml_parse(ret) _data = doc.get('suggest') if _data: data = _data['items']['item'] else: data = [] if isinstance(data, dict): title = data.get("title") explain = data.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) elif isinstance(data, list): for item in data: title = item.get("title") explain = item.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) else: print("Unknown data type, debug here:", type(data)) except Exception as e: print("[Error] get suggest from network:", e) traceback.print_exc(file=sys.stdout) if not results: with open_offline_dict() as obj: words = obj.suggest(text) for word in words: ret = obj.query(word) if ret: explain = ret[1].replace("\\n", " ") results.append({"title": word, "explain": explain}) if len(results) > num: results = results[:num] return results
async def convert_xml(myfile: UploadFile = File(...), ) -> dict: """ convert xml document to json Returns: json object """ # determine if file has no content_type set # set file_type to a value if len(myfile.content_type) == 0: file_type = "unknown" else: file_type = myfile.content_type logger.info(f"file_name: {myfile.filename} file_type: {file_type}") file_named = myfile.filename # if document is not a xml document, give http exception if file_named.endswith(".xml", 4) is not True: error_exception = ( f"API requires a XML docuement, but file {myfile.filename} is {file_type}" ) logger.critical(error_exception) raise HTTPException(status_code=400, detail=error_exception) try: # async method to get data from file upload contents = await myfile.read() # xml to json conversion with xmltodict result = xml_parse(contents, encoding="utf-8", process_namespaces=True, xml_attribs=True) logger.info("file converted to JSON") return result except Exception as e: logger.critical(f"error: {e}") err = str(e) # when error occurs output http exception if err.startswith("syntax error") is True or e is not None: error_exception = f"The syntax of the object is not valid. Error: {e}" raise HTTPException(status_code=400, detail=error_exception)
def get_suggest(text, num=10): text = text.strip() data = { "type" : "DESKDICT", "num" : num, "ver" : 2.0, "le": "eng", "q" : text } results = [] try: ret = requests.get("http://dict.youdao.com/suggest", params=data).text doc = xml_parse(ret) _data = doc.get('suggest') if _data: data = _data['items']['item'] else: data = [] if isinstance(data, dict): title = data.get("title") explain = data.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) elif isinstance(data, list): for item in data: title = item.get("title") explain = item.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) else: print("Unknown data type, debug here:", type(data)) except Exception as e: print("[Error] get suggest from network:", e) traceback.print_exc(file=sys.stdout) if not results: with open_offline_dict() as obj: words = obj.suggest(text) for word in words: ret = obj.query(word) if ret: explain = ret[1].replace("\\n", " ") results.append({"title": word, "explain": explain}) if len(results) > num: results = results[:num] return results
def cas_login(): if request.method=='POST': logout_request=request.form.get('logoutRequest') print logout_request try: xml_obj=xml_parse(logout_request) ticket=xml_obj['samlp:LogoutRequest']['samlp:SessionIndex'] cas_logout_tickets.set(ticket,1) except: pass return '',200 ticket = request.args.get('ticket') if ticket: if validate_cas(ticket): session['cas_ticket']=ticket return redirect(request.args.get('next') or url_for("main.index")) s=request.url session['cas_s']=s cas_query = [('service', s)] cas_login_url = urljoin(current_app.config['CAS_LOGIN_URL'], '?{0}'.format(urlencode(cas_query))) return redirect(cas_login_url)
def read_xml(file_path: str) -> dict: project_root_dir = os.path.abspath('.') abs_file_path = os.path.join(project_root_dir, file_path) with open(abs_file_path, mode='r', encoding='utf-8') as f: content = f.read() return xml_parse(content)
def read_music_xml(file_path): with open(file_path) as music_xml_file: result = music_xml_file.read() return xml_parse( result, force_list=['score-part', 'part', 'note', 'measure', 'creator'])