File: //home/arjun/projects/buyercall_forms/buyercall/buyercall/integrations/neo.py
import os
import logging
import requests
import json
log = logging.getLogger(__name__)
class NEOException(Exception):
pass
class NEO(object):
def __init__(self, secret, url, request_id=None):
self.base_url = url
self.secret = secret
self.child_class = None
self.request_id = request_id
def post(self, data):
# start creating request-log
#from buyercall.blueprints.sysadmin.utilities.request_log_task_call import LogRequestTaskTrigger
#from flask import request
# LogRequestTaskTrigger().log_request_task_trigger(
# request, "neo")
# end creating request-log
headers = {'Content-Type': 'application/json', 'Access-Token': self.secret, 'Accept': 'application/json'}
log.info('**********************************************************************')
log.info('* NEO INTEGRATION POST *')
log.info('**********************************************************************')
log.info(str(json.dumps(data)))
r = requests.post(self.base_url, data=json.dumps(data), headers=headers)
request_id = self.request_id
from buyercall.blueprints.sysadmin.models import RequestLog
# updating the request log
update_data = {
"current_url": self.base_url,
'path_info': self.base_url,
'response_code': r.status_code,
'method':"POST",
"status": "success" if r.status_code < 400 else "failed"
}
RequestLog().update_record(request_id, update_data)
try:
if r.status_code == 201:
decoded_data = json.loads(r.content.decode())
external_lead_id = None
if 'neo_id' in decoded_data:
external_lead_id = decoded_data['neo_id']
return r.status_code, '', external_lead_id
else:
log.error(f'Error posting form lead. Error response: {r.content.decode()}')
RequestLog().update_record(
request_id, {"error": r.content.decode()})
return r.status_code, 'Error posting form lead.', ''
except:
return r.status_code, 'Error posting form lead.', ''
def put(self, data):
headers = {'Content-Type': 'application/json', 'Access-Token': self.secret, 'Accept': 'application/json'}
log.info('**********************************************************************')
log.info('* NEO INTEGRATION POST *')
log.info('**********************************************************************')
log.info(str(json.dumps(data)))
update_url = self.base_url.replace('create_application', 'update_application')
r = requests.put(update_url, data=json.dumps(data), headers=headers)
try:
if r.status_code == 202:
decoded_data = json.loads(r.content.decode())
external_lead_id = None
if 'neo_id' in decoded_data:
external_lead_id = decoded_data['neo_id']
return r.status_code, '', external_lead_id
else:
log.error(f'Error posting form lead. Error response: {r.content.decode()}')
return r.status_code, 'Error posting form lead.', ''
except:
return r.status_code, 'Error posting form lead.', ''