You've already forked KemoFureApi
							
							Compare commits
	
		
			1 Commits
		
	
	
		
			0ce68c606f
			...
			testBranch
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| dde3c27eb0 | 
							
								
								
									
										4
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								app.py
									
									
									
									
									
								
							| @@ -3,7 +3,7 @@ from flask_restful import Api | |||||||
|  |  | ||||||
| from modules.KF3.database import Database as KF3DB | from modules.KF3.database import Database as KF3DB | ||||||
| from modules.Kingdom.database import Database as KFKDB | from modules.Kingdom.database import Database as KFKDB | ||||||
| from modules.Archive.database import Database as KFADB | from modules.JapariSling.database import Database as KFSL | ||||||
|  |  | ||||||
| app = Flask(__name__) | app = Flask(__name__) | ||||||
| app.config['JSON_AS_ASCII'] = False | app.config['JSON_AS_ASCII'] = False | ||||||
| @@ -13,7 +13,7 @@ api = Api(app) | |||||||
|  |  | ||||||
| KF3DB(api) | KF3DB(api) | ||||||
| KFKDB(api) | KFKDB(api) | ||||||
| KFADB(api) | KFSL(api) | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     app.run(host='127.0.0.1', port=8080, debug=True) |     app.run(host='127.0.0.1', port=8080, debug=True) | ||||||
| @@ -1,22 +0,0 @@ | |||||||
| import json |  | ||||||
| from .databaseController import DatabaseController |  | ||||||
| from .endpoints.query import Archive_Query |  | ||||||
|  |  | ||||||
| class Database: |  | ||||||
|     db : DatabaseController = None |  | ||||||
|     processed_friends = {} |  | ||||||
|     item_stages = {} |  | ||||||
|  |  | ||||||
|     def __init__(self, api) -> None: |  | ||||||
|         app = api.app |  | ||||||
|         if "Archive" in app.databases: |  | ||||||
|             del app.databases["Archive"] |  | ||||||
|  |  | ||||||
|         self.reload_data() |  | ||||||
|  |  | ||||||
|         app.databases["Archive"] = self |  | ||||||
|  |  | ||||||
|         api.add_resource(Archive_Query, "/Archive/Query") |  | ||||||
|    |  | ||||||
|     def reload_data(self): |  | ||||||
|         self.db = DatabaseController("/home/pi/python/Katbots/JapariArchive/database.db") |  | ||||||
| @@ -1,21 +0,0 @@ | |||||||
| import os |  | ||||||
| import sqlite3 |  | ||||||
|  |  | ||||||
| TABLE_ACCOUNTS  = "accounts" |  | ||||||
| TABLE_X         = "x_posts" |  | ||||||
|  |  | ||||||
| class DatabaseController: |  | ||||||
|     def __init__(self, db_name): |  | ||||||
|         self.conn = sqlite3.connect(db_name, isolation_level="DEFERRED") |  | ||||||
|         self.cursor = self.conn.cursor() |  | ||||||
|  |  | ||||||
|     def run_query(self, query): |  | ||||||
|         try: |  | ||||||
|             self.cursor.execute(query) |  | ||||||
|             results = self.cursor.fetchall() |  | ||||||
|             return results |  | ||||||
|         except: |  | ||||||
|             return None |  | ||||||
|  |  | ||||||
|     def close(self): |  | ||||||
|         self.conn.close() |  | ||||||
| @@ -1,21 +0,0 @@ | |||||||
| import json |  | ||||||
| from flask_restful import Resource |  | ||||||
| from flask import current_app as app, jsonify |  | ||||||
|  |  | ||||||
| class Archive_Query(Resource): |  | ||||||
|     def post(self, query:str): |  | ||||||
|         db = app.databases["Archive"] |  | ||||||
|  |  | ||||||
|         result = db.run_query(query) |  | ||||||
|  |  | ||||||
|         if result is None: |  | ||||||
|             response = app.response_class(status=400) |  | ||||||
|         else: |  | ||||||
|             response = app.response_class( |  | ||||||
|                 response=json.dumps(result, ensure_ascii=False, indent=1), |  | ||||||
|                 status=200, |  | ||||||
|                 mimetype='application/json' |  | ||||||
|             ) |  | ||||||
|  |  | ||||||
|         response.headers.add("Access-Control-Allow-Origin", "*") |  | ||||||
|         return response    |  | ||||||
							
								
								
									
										7
									
								
								modules/JapariSling/classes/construct_level.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/JapariSling/classes/construct_level.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | from typing import List | ||||||
|  | from .construct_serialized import ConstructSerialized | ||||||
|  |  | ||||||
|  | class ConstructLevel: | ||||||
|  |     Name : str | ||||||
|  |     Description : str | ||||||
|  |     Objects : List[ConstructSerialized] | ||||||
							
								
								
									
										13
									
								
								modules/JapariSling/classes/construct_serialized.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/JapariSling/classes/construct_serialized.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | class SVector3: | ||||||
|  |     x : float | ||||||
|  |     y : float | ||||||
|  |     z : float | ||||||
|  |  | ||||||
|  | class ConstructSerialized: | ||||||
|  |     Id : int | ||||||
|  |     Variant : int | ||||||
|  |     Position : SVector3 | ||||||
|  |     Rotation : SVector3 | ||||||
|  |     Width : float | ||||||
|  |     Height : float | ||||||
|  |     Properties : int | ||||||
							
								
								
									
										15
									
								
								modules/JapariSling/database.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								modules/JapariSling/database.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  |  | ||||||
|  | from .endpoints.get import Get | ||||||
|  | from .endpoints.upload import Upload | ||||||
|  |  | ||||||
|  | class Database: | ||||||
|  |  | ||||||
|  |     def __init__(self, api) -> None: | ||||||
|  |         app = api.app | ||||||
|  |         if "JapariSling" in app.databases: | ||||||
|  |             del app.databases["JapariSling"] | ||||||
|  |  | ||||||
|  |         app.databases["JapariSling"] = self | ||||||
|  |  | ||||||
|  |         api.add_resource(Upload, "/JapariSling/Upload") | ||||||
|  |         api.add_resource(Get, "/JapariSling/Get") | ||||||
							
								
								
									
										23
									
								
								modules/JapariSling/endpoints/get.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								modules/JapariSling/endpoints/get.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | import os | ||||||
|  | import json | ||||||
|  | from flask_restful import Resource | ||||||
|  | from flask import abort, request, current_app as app | ||||||
|  |  | ||||||
|  | class Get(Resource): | ||||||
|  |     def get(self): | ||||||
|  |         dir_name = os.path.join(app.root_path, 'data', 'JapariSling') | ||||||
|  |         files = [json.loads(read_file(os.path.join(dir_name, f))) for f in os.listdir(dir_name) if os.path.isfile(os.path.join(dir_name, f))] | ||||||
|  |         files = files[:10] | ||||||
|  |         files = {"levels": files} | ||||||
|  |  | ||||||
|  |         response = app.response_class( | ||||||
|  |             response = json.dumps(files), | ||||||
|  |             status=200, | ||||||
|  |             mimetype='application/json' | ||||||
|  |         ) | ||||||
|  |         response.headers.add("Access-Control-Allow-Origin", "*") | ||||||
|  |         return response  | ||||||
|  |      | ||||||
|  | def read_file(path): | ||||||
|  |     with open(path, 'r') as f: | ||||||
|  |         return f.read() | ||||||
							
								
								
									
										29
									
								
								modules/JapariSling/endpoints/upload.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								modules/JapariSling/endpoints/upload.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | import os | ||||||
|  | import json | ||||||
|  | from flask_restful import Resource | ||||||
|  | from ..classes.construct_level import ConstructLevel | ||||||
|  | from flask import abort, request, current_app as app | ||||||
|  |  | ||||||
|  | class Upload(Resource): | ||||||
|  |     def post(self): | ||||||
|  |         cl = request.content_length | ||||||
|  |         if cl is not None and cl > 1024: | ||||||
|  |             abort(413) | ||||||
|  |  | ||||||
|  |         content = request.json | ||||||
|  |  | ||||||
|  |         if "Name" not in content: | ||||||
|  |             abort(400) | ||||||
|  |  | ||||||
|  |         filename = os.path.join(app.root_path, 'data', 'JapariSling', content["Name"] + '.json') | ||||||
|  |  | ||||||
|  |         with open(filename, "wt") as text_file: | ||||||
|  |             text_file.write(json.dumps(content, ensure_ascii=False, indent=1)) | ||||||
|  |  | ||||||
|  |         response = app.response_class( | ||||||
|  |             response="level uploaded", | ||||||
|  |             status=200, | ||||||
|  |             mimetype='text/plain' | ||||||
|  |         ) | ||||||
|  |         response.headers.add("Access-Control-Allow-Origin", "*") | ||||||
|  |         return response  | ||||||
		Reference in New Issue
	
	Block a user