import RegularExpressionParser.Parser as parser import DataBase.mongoDB as db import re from flask import Flask from flask import request from urllib.parse import urlparse, parse_qs app = Flask(__name__) app.config["DEBUG"] = True @app.route("/", methods=['GET']) def home(): return "200: successfully connected to home page\n" @app.route("/api/<collection>/", methods=["GET", "PUT", "POST", "DELETE"]) def data(collection): if request.method == "GET": if collection == "books" or collection == "book": identifier = request.args.to_dict() print(identifier) print(type(identifier)) return "200: find" elif collection == "authors" or collection == "author": print(request.url) return "200: find" elif collection == "search": url_parsed = urlparse(request.url) qs_parsed = parse_qs(url_parsed.query) return search_document(qs_parsed["q"][0].split("&")) else: return "404 not found" # elif request.method == "PUT": def search_document(identifiers): if len(identifiers) == 1: json_idt = parser.parse_query_to_json(identifiers[0]) if re.search("^book.*", identifiers[0]): return db.get_documents_json(0, json_idt) else: return db.get_documents_json(1, json_idt) elif len(identifiers) == 3: if re.search("^book.*", identifiers[0]): if re.search("^author.*", identifiers[2]): print("Failed to find documentation: two statements are not pointing to the same collection") return {} else: opt = 0 else: if re.search("^book.*",identifiers[2]): print("Failed to find documentation: two statements are not pointing to the same collection") return {} else: opt = 1 json_idt1 = parser.parse_query_to_json(identifiers[0]) json_idt2 = parser.parse_query_to_json(identifiers[2]) if identifiers[1] == "AND": exp = {"$and": [json_idt1, json_idt2]} elif identifiers[1] == "OR": exp = {"$or": [json_idt1,json_idt2]} else: print("Failed to parse query: unknown operator for identifiers[1]") return {} return db.get_documents_json(opt, exp) else: return "Error, unknown identifiers" if __name__ == "__main__": app.run()