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: //proc/thread-self/root/home/arjun/projects/buyercall/buyercall/blueprints/chat/utils.py
import requests
import json
from base64 import b64decode
from functools import wraps
from flask import request, current_app, jsonify
from buyercall.lib.util_rest import api_jsonify


def is_valid_credentials(username, password):
    return username == current_app.config['CHAT_API_USERNAME'] and password == current_app.config['CHAT_API_PASSWORD']


def authenticate(f):
    @wraps(f)
    def wrapper(*args, **kwargs):
        basic_token = None
        if 'Authorization' in request.headers:
            basic_token = request.headers.get('Authorization', None)
            if not basic_token:
                return jsonify({'message': 'A valid auth token is missing'})

            try:
                token = basic_token.split(' ')[1] if basic_token.split(' ')[0] == 'Basic' else None
                if token:
                    username, password = b64decode(token).decode('utf-8').split(':')
                    if not is_valid_credentials(username, password):
                        return api_jsonify([], 403, 'Invalid or expired token', False)
                else:
                    return api_jsonify([], 403, 'A valid auth token is missing', False)
            except:
                return api_jsonify([], 403, 'A valid auth token is missing', False)
        else:
            return api_jsonify([], 403, 'A valid auth token is missing', False)
        return f(*args, **kwargs)
    return wrapper


def ask_rasa(user, message, *args, **kwargs):
    url = current_app.config.get('RASA_ENDPOINT', 'http://100.20.94.76/webhooks/rest/webhook')
    # Test data
    user = 'id9'
    message = "consumerIDvalue10 has an enquiry for companyIDvalue8"

    if user and message:
        payload = json.dumps({
            "sender": user,
            "message": message
        })
        headers = {
            'Content-Type': 'application/json'
        }
        rasa_resp = requests.request("POST", url, headers=headers, data=payload)
        return rasa_resp
    return []