HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
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.', ''