Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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'])
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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)
Ejemplo n.º 12
0
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'])