diff --git a/Dockerfile_standalone_channelRewards.Dockerfile b/Dockerfile_standalone_channelRewards.Dockerfile index 67dac01..b5d541e 100644 --- a/Dockerfile_standalone_channelRewards.Dockerfile +++ b/Dockerfile_standalone_channelRewards.Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7.10-alpine3.12 +FROM python:3.10.0a7-alpine3.13 WORKDIR /Praxis diff --git a/event_logs/event_log_Module.py b/event_logs/event_log_Module.py index a661ff4..adf1f42 100644 --- a/event_logs/event_log_Module.py +++ b/event_logs/event_log_Module.py @@ -110,9 +110,18 @@ class Event_Log_Module(): def get_recent_logs(self, howFarBack): newList = [] - for x in range(howFarBack): - recentLog = [-x] - newList.append(recentLog) + try: + for x in range(howFarBack): + recentLog = self.Event_Log_List[-x] + newDic = {} + newDic['eventName'] = recentLog.eventName + newDic['eventTime'] = str(recentLog.eventTime) + newDic['eventType'] = str(recentLog.eventType) + newDic['eventSender'] = str(recentLog.eventSender) + newDic['eventData'] = str(recentLog.eventData) + newList.append(newDic) + except: + pass return newList def load_HistoricLogs(self): diff --git a/standalone_channelrewards.py b/standalone_channelrewards.py index 7b58718..3a554f1 100644 --- a/standalone_channelrewards.py +++ b/standalone_channelrewards.py @@ -1,9 +1,17 @@ import flask -from flask import request +from flask import Flask, request, after_this_request import channel_rewards.channelRewards_loader as rewards_loader from channel_rewards.channelRewards_base import AbstractChannelRewards +from json import loads +from urllib.parse import urlencode + +import requests + +import json +import base64 + import os import praxis_logging praxis_logger_obj = praxis_logging.praxis_logger() @@ -59,6 +67,38 @@ def handle_reward(source, username, reward_name, reward_type, rewardPrompt, user return flask.make_response("This is a magic test", 500) #praxis_logger_obj.log("Doing a reward") +def handle_get_list(): + tempDict = {} + returnedDict = {} + + for cmd in loadedRewards[AbstractChannelRewards.ChannelRewardsType.channelPoints]: + tempCmd:AbstractChannelRewards = loadedRewards[AbstractChannelRewards.ChannelRewardsType.channelPoints][cmd] + tempDict['channelRewardName'] = tempCmd.ChannelRewardName + tempDict['isRewardEnabled'] = str(tempCmd.isChannelRewardEnabled).lower() + returnedDict[tempCmd.ChannelRewardName] = tempDict + tempDict = {} + for cmd in loadedRewards[AbstractChannelRewards.ChannelRewardsType.twitch_bits]: + tempCmd:AbstractChannelRewards = loadedRewards[AbstractChannelRewards.ChannelRewardsType.twitch_bits][cmd] + tempDict['channelRewardName'] = tempCmd.ChannelRewardName + tempDict['isRewardEnabled'] = str(tempCmd.isChannelRewardEnabled).lower() + returnedDict[tempCmd.ChannelRewardName] = tempDict + tempDict = {} + for cmd in loadedRewards[AbstractChannelRewards.ChannelRewardsType.twitch_subs]: + tempCmd:AbstractChannelRewards = loadedRewards[AbstractChannelRewards.ChannelRewardsType.twitch_subs][cmd] + tempDict['channelRewardName'] = tempCmd.ChannelRewardName + tempDict['isRewardEnabled'] = str(tempCmd.isChannelRewardEnabled).lower() + returnedDict[tempCmd.ChannelRewardName] = tempDict + tempDict = {} + + payload = json.dumps(returnedDict) + praxis_logger_obj.log("dumped") + praxis_logger_obj.log(payload) + payload = base64.b64encode(str.encode(payload)) + print("encoded") + praxis_logger_obj.log("encoded") + praxis_logger_obj.log(payload) + return flask.make_response("{\"message\":\"%s\"}" % payload.decode(), 200, {"Content-Type": "application/json"}) + @api.route('/api/v1/reward', methods=['GET']) def reward_check(): @@ -107,6 +147,14 @@ def exec_reward(): request.args['user_input'], request.args['bonus_data']) +@api.route('/api/v1/get_list/all', methods=['GET']) +def get_list(): + @after_this_request + def add_header(response): + response.headers.add('Access-Control-Allow-Origin', '*') + return response + + return handle_get_list() if __name__ == '__main__': init() diff --git a/standalone_eventLog.py b/standalone_eventLog.py index df28780..97844a1 100644 --- a/standalone_eventLog.py +++ b/standalone_eventLog.py @@ -22,6 +22,9 @@ import timers_module import random +import json +import base64 + import event_logs.event_log_Module import os @@ -44,8 +47,15 @@ def add_event(eventName, eventTime, eventType, eventSender, eventData): return flask.make_response("{\"message\":\"%s\"}" % None, 200, {"Content-Type": "application/json"}) def get_events(eventCount=100): - logging_module.get_recent_logs(eventCount) - return flask.make_response('Event List', 200) + returnedData = logging_module.get_recent_logs(eventCount) + payload = json.dumps(returnedData) + 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): + return flask.make_response("{\"message\":\"%s\"}" % 'rerunning event....', 200, {"Content-Type": "application/json"}) + @api.route('/') @@ -90,7 +100,40 @@ def get_event_log(): def add_header(response): response.headers.add('Access-Control-Allow-Origin', '*') return response - return get_events() + if 'request_name' not in request.args: + return flask.make_response('{\"text\":"Argument \'request_name\' not in request"}', 400) + if 'request_type' not in request.args: + return flask.make_response('{\"text\":"Argument \'request_type\' not in request"}', 400) + if 'request_data' not in request.args: + requestData = 50 + else: + try: + requestData = request.args['request_data'] + except: + requestData = 50 + return get_events(requestData) + +@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(): diff --git a/standalone_user_client.py b/standalone_user_client.py index ba77678..bcd3488 100644 --- a/standalone_user_client.py +++ b/standalone_user_client.py @@ -68,7 +68,7 @@ def handle_request_get(requestName, requestType, requestData): response = request_get_eventlist(params) return flask.make_response("{\"message\": \"%s\"}" % response, 200, {"Content-Type": "application/json"}) else: - return flask.make_response("{\"message\": \"%s\"}" % "message123123", 200, {"Content-Type": "application/json"}) + return flask.make_response("{\"message\": \"%s\"}" % "Invalid Request Name", 400, {"Content-Type": "application/json"}) def request_get_list(serviceName, servicePort): try: @@ -80,13 +80,14 @@ def request_get_list(serviceName, servicePort): 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 None + return flask.make_response("{\"message\": \"%s\"}" % "Minor Mess up on get list", 200, {"Content-Type": "application/json"}) except: - return None + return flask.make_response("{\"message\": \"%s\"}" % "Major Mess up on get list", 200, {"Content-Type": "application/json"}) def request_get_eventlist(params): try: @@ -102,9 +103,33 @@ def request_get_eventlist(params): # todo send to logger and other relevent services else: # todo handle failed requests - return None + return flask.make_response("{\"message\": \"%s\"}" % "Minor Mess up on get eventlist", 200, {"Content-Type": "application/json"}) except: - return None + return flask.make_response("{\"message\": \"%s\"}" % "Major Mess up on get eventlist", 200, {"Content-Type": "application/json"}) + +def request_reRunEvent(eventName, eventTime, eventType, eventSender, eventData): + try: + params = urlencode( + {'eventName': eventName, + 'eventTime': eventTime, + 'eventType': eventType, + 'eventSender': eventSender, + 'eventData': eventData}) + url = "http://standalone_eventlog:42008/api/v1/event_log/reRunEvent?%s" % params + 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: + return msg + # todo send to logger and other relevent services + else: + # todo handle failed requests + return flask.make_response('Something Went a little bit Wrong rerunning an event', 400) + except: + return flask.make_response('Something Went Wrong rerunning an event', 400) def handle_request_set(requestName, requestType, requestData): if requestType == "update": @@ -145,9 +170,35 @@ def get_data(): @api.route('/api/v1/user_client/set', methods=['GET']) def set_data(): + @after_this_request + def add_header(response): + response.headers.add('Access-Control-Allow-Origin', '*') + return response if 'request_type' not in request.args: return flask.make_response('{\"text\":"Argument \'request_type\' not in request"}', 400) +@api.route('/api/v1/user_client/event_log/reRunEvent', methods=['GET']) +def EventLog_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 flask.make_response("test", 200) + return request_reRunEvent(request.args['eventName'], sentTime, request.args['eventType'], request.args['eventSender'], request.args['eventData']) + if __name__ == "__main__": init() diff --git a/user_client/v1/index.html b/user_client/v1/index.html index c1c29d2..496c6be 100644 --- a/user_client/v1/index.html +++ b/user_client/v1/index.html @@ -111,19 +111,14 @@ -
Reward Name:
-Command Name:
" + "Command
" + - "" + + "" + "Reward Name:
" + + "Reward
" + + "" + + "Event:"+ eventName +"
User:"+ eventSender +"
Message:"+ eventData +"