from datetime import datetime from enum import Enum from os import F_OK import tempText_Module import time import config as config import flask from flask import Flask, request, after_this_request import credentials import commands.loader as command_loader from commands.command_base import AbstractCommand from cooldowns import Cooldown_Module import utilities_script as utility import chyron_module import timers_module import requests import random import json from json import loads from urllib.parse import urlencode import base64 import event_logs.event_log_Module import os import praxis_logging praxis_logger_obj = praxis_logging.praxis_logger() praxis_logger_obj.init(os.path.basename(__file__)) praxis_logger_obj.log("\n -Starting Logs: " + os.path.basename(__file__)) api:Flask = Flask(__name__) api.config["DEBUG"] = True logging_module = event_logs.event_log_Module.Event_Log_Module() def init(): print("starting up... ",) logging_module.main() def add_event(eventName, eventTime, eventType, eventSender, eventData): logging_module.make_event(eventName, eventTime, eventType, eventSender, eventData) return flask.make_response("{\"message\":\"%s\"}" % None, 200, {"Content-Type": "application/json"}) def get_events(): #returnedData = logging_module.get_recent_logs(50) try: masterDic = {} newDic = {} counter = 0 for event in logging_module.Event_Log_List: #praxis_logger_obj.log("get event history debug thing: "+ str(event)) #recentLog = self.Event_Log_List[-x] newDic['eventName'] = str(event.eventName) newDic['eventTime'] = str(event.eventTime) newDic['eventType'] = str(event.eventType) newDic['eventSender'] = str(event.eventSender) newDic['eventData'] = str(event.eventData) masterDic[str(counter)] = newDic counter = counter + 1 newDic = {} except: masterDic = {} #returnedData = [""] #praxis_logger_obj.log("\nGotten Events" + str(masterDic)) #print("\nGotten Events" + masterDic) payload = json.dumps(masterDic) payload = base64.b64encode(str.encode(payload)) return flask.make_response("{\"message\":\"%s\"}" % payload.decode(), 200, {"Content-Type": "application/json"}) def reRunEvent_handler(eventName, eventTime, eventType, eventSender, eventData): returnString = attempt_Event_Rerun(eventName, eventTime, eventType, eventSender, eventData) return flask.make_response("{\"message\":\"%s\"}" % returnString, 200, {"Content-Type": "application/json"}) def attempt_Event_Rerun(eventName, eventTime, eventType, eventSender, eventData): returnString = "" try: if "reward" in eventType: pass return returnString except: returnString = "Something Went Wrong!" return returnString def attempt_Event_Rerun_Send(serviceName, servicePort, params): try: url = "http://"+ serviceName + ":"+ servicePort + "/api/v1/get_list/all" resp = requests.get(url) if resp.status_code == 200: print("Got the following message: %s" % resp.text) data = loads(resp.text) msg = data['message'] if msg is not None: praxis_logger_obj.log(msg) return msg # todo send to logger and other relevent services else: # todo handle failed requests return flask.make_response("{\"message\": \"%s\"}" % "Minor Mess up on attempt_Event_Rerun_Send", 200, {"Content-Type": "application/json"}) except: return flask.make_response("{\"message\": \"%s\"}" % "Major Mess up on attempt_Event_Rerun_Send", 200, {"Content-Type": "application/json"}) @api.route('/') def bot_StatusIcon(): @after_this_request def add_header(response): response.headers.add('Access-Control-Allow-Origin', '*') return response return flask.make_response('Hello There', 200) @api.route('/api/v1/event_log/status') def bot_status(): @after_this_request def add_header(response): response.headers.add('Access-Control-Allow-Origin', '*') return response return flask.make_response('EventLog Service: OK', 200) @api.route('/api/v1/event_log/add_event') def add_event_log(): @after_this_request def add_header(response): response.headers.add('Access-Control-Allow-Origin', '*') return response if 'event_name' not in request.args: return flask.make_response('{\"text\":"Argument \'event_name\' not in request"}', 400) if 'event_time' not in request.args: return flask.make_response('{\"text\":"Argument \'event_time\' not in request"}', 400) if 'event_type' not in request.args: return flask.make_response('{\"text\":"Argument \'event_type\' not in request"}', 400) if 'eventSender' not in request.args: return flask.make_response('{\"text\":"Argument \'eventSender\' not in request"}', 400) if 'event_data' not in request.args: return flask.make_response('{\"text\":"Argument \'event_data\' not in request"}', 400) return add_event(request.args['event_name'], request.args['event_time'], request.args['event_type'], request.args['eventSender'], request.args['event_data'],) @api.route('/api/v1/event_log/get_events') def get_event_log(): @after_this_request def add_header(response): response.headers.add('Access-Control-Allow-Origin', '*') return response if 'request_data' not in request.args: requestData = 50 return get_events() @api.route('/api/v1/event_log/reRunEvent') def reRunEvent(): @after_this_request def add_header(response): response.headers.add('Access-Control-Allow-Origin', '*') return response if 'eventName' not in request.args: return flask.make_response('{\"text\":"Argument \'eventName\' not in request"}', 400) if 'eventTime' not in request.args: sentTime = request.args('eventTime') else: sentTime = None if 'eventType' not in request.args: return flask.make_response('{\"text\":"Argument \'eventType\' not in request"}', 400) if 'eventSender' not in request.args: return flask.make_response('{\"text\":"Argument \'eventSender\' not in request"}', 400) if 'eventData' not in request.args: return flask.make_response('{\"text\":"Argument \'eventData\' not in request"}', 400) return reRunEvent_handler(request.args['eventName'], sentTime, request.args['eventType'], request.args['eventSender'], request.args['eventData']) # @api.route('/api/v1/event_log/chyron/get') # def get_chyron(): # @after_this_request # def add_header(response): # response.headers.add('Access-Control-Allow-Origin', '*') # return response # return flask.make_response('Client Service: OK', 200) # @api.route('/api/v1/event_log/commands/get') # def get_commands(): # @after_this_request # def add_header(response): # response.headers.add('Access-Control-Allow-Origin', '*') # return response # return flask.make_response('Client Service: OK', 200) # @api.route('/api/v1/event_log/rewards/get') # def get_rewards(): # @after_this_request # def add_header(response): # response.headers.add('Access-Control-Allow-Origin', '*') # return response # return flask.make_response('Client Service: OK', 200) # @api.route('/api/v1/event_log/timers/get') # def get_timers(): # @after_this_request # def add_header(response): # response.headers.add('Access-Control-Allow-Origin', '*') # return response # return flask.make_response('Client Service: OK', 200) # @api.route('/api/v1/event_log/text_sources/get') # def get_text_sources(): # @after_this_request # def add_header(response): # response.headers.add('Access-Control-Allow-Origin', '*') # return response # return flask.make_response('Client Service: OK', 200) if __name__ == "__main__": init() api.run(host="0.0.0.0", port = 42008)