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 []