import requests from requests.auth import HTTPBasicAuth from settings import conf from common.tools.dict_to_xml import dicttoxml, escape_xml from apps.doc import consts from apps.doc.exceptions import GCAPException from collections import OrderedDict class GCAP: def __init__(self): self.url = conf.GCAP_URL self.headers = { 'Content-Type': 'text/plain', } self.auth = HTTPBasicAuth(conf.GCAP_AUTH_USER, conf.GCAP_AUTH_PWD) @staticmethod def dict_to_xml(comparison_res): comparison_xml = dicttoxml(comparison_res, root=False, attr_type=False) return consts.BASE_XML_TEXT.format(consts.CDATA_TEXT.format(escape_xml(comparison_xml))).encode('utf-8') def send(self, data): response = requests.post(self.url, headers=self.headers, data=data, verify=False, auth=self.auth) if response.status_code != 200: raise GCAPException('GCAP response with code: {0}'.format(response.status_code)) return response.text def test_send(self): test_res = OrderedDict({ 'OCR_Input': { 'uniqSeq': '201809301905121000', 'applicationId': 'CH-B000046340', 'applicationEntity': 'AFC', 'applicationVersion': 3, 'vehicleStatus': 'PCNEW', 'wholeResult': 'Y', 'wholeResultMessage': 'msg', 'applicationLink': 'url1', 'individualCusInfo': [ { 'applicantType': 'COAPP', 'idType': 'ITARI', 'customerType': 'TCDAS', 'customerChineseName': 'co-app-name', 'idNum': 'idNum', 'idExpiryDate': '2020-02-02', 'dateOfBirth': '2020-02-02', 'customerChineseNameResult': 'Y', 'idNumResult': 'Y', 'secondIdNumResult': 'Y', 'idExpiryDateResult': 'Y', 'dateOfBirthResult': 'Y', }, { 'applicantType': 'GAUTR1', 'idType': 'ITPSP', 'customerType': 'TCDAS', 'customerChineseName': 'ga1-name', 'idNum': 'id3', 'idExpiryDate': '2020-03-03', 'dateOfBirth': '2020-03-03', 'customerChineseNameResult': 'Y', 'idNumResult': 'Y', 'secondIdNumResult': 'Y', 'idExpiryDateResult': 'Y', 'dateOfBirthResult': 'Y', }, { 'applicantType': 'GAUTR2', 'idType': 'ITHKM', 'customerType': 'TCDAS', 'customerChineseName': 'ga2-name', 'idNum': 'id4', 'idExpiryDate': '2020-04-04', 'dateOfBirth': '2020-04-04', 'customerChineseNameResult': 'Y', 'idNumResult': 'Y', 'secondIdNumResult': 'Y', 'idExpiryDateResult': 'Y', 'dateOfBirthResult': 'Y', }, ], 'usedCarInfo': { 'vinNo': 'LBVSFJSDLFJLSDJF', 'manufactureDate': '2020-09-03', 'firstRegistrationDate': '2020-09-03', 'vinNoResult': 'Y', 'manufactureDateResult': 'Y', 'firstRegistrationDateResult': 'Y', }, 'corporateCusInfo': { 'customerChineseName': '北京思图场景数据科技服务有限公司', 'legalRepName': '李六', 'idNum': 'MA007438143XJ1P', 'customerType': 'TCCOR', 'businessLicenseNo': 'MA007438143XJ1P', 'taxRegistrationCode': 'MA007438143XJ1P', 'incorporationDate': '2020-09-02', 'businessLicenseDueDate': '2020-09-02', 'capitalRegAmount': '60000000', 'customerChinessNameResult': 'Y', 'legalRepNameResult': 'Y', 'idNumResult': 'Y', 'businessLicenseNoResult': 'Y', 'taxRegistrationCodeResult': 'Y', 'incorporationDateResult': 'Y', 'businessLicenseDueDateResult': 'Y', 'capitalRegAmountResult': 'Y', } } }) status_code = self.send(self.dict_to_xml(test_res)) print(status_code) gcap = GCAP()