from sync.data import request from lxml import etree async def typograf(text, options={}): text = text.replace('&', '&') text = text.replace('<', '<') text = text.replace('>', '>') body = ''' {text} 1 0 1 3 '''.strip().format(text=text) url = 'http://typograf.artlebedev.ru/webservices/typograf.asmx' resp = await request.post(url, body, {}, { 'Content-Type': 'text/xml', 'SOAPAction': 'http://typograf.artlebedev.ru/webservices/ProcessText', }) resp_text = resp.encode() try: # create xml tree from response response_tree = etree.fromstring(resp_text) # look for ProcessTextResult typograf_response = response_tree.getchildren()[0].getchildren()[0].getchildren()[0].text except Exception as response_tree: print(response_tree) return text typograf_response = typograf_response.replace('&', '&') typograf_response = typograf_response.replace('<', '<') typograf_response = typograf_response.replace('>', '>') return typograf_response