def on_post(self, req, resp): rootLogger.info("Appel de la commande POST de l'api fh_login") # Demande de connexion à l'application rootLogger.debug("Req = {!r}".format(req)) try: data = json.load(req.stream) except Exception as e: send_resp(resp, falcon.HTTP_400, 400, "error", "Erreur lors de l'analyse du body envoyé") return rootLogger.debug("data = {!r}".format(data)) try: idinfo = valid_google_oauth_token(data['token']) if not self.db.check_user_exist(idinfo['email']): rootLogger.info( "L'utilisateur {!r} n'éxiste pas encore dans la base". format(idinfo['email'])) self.db.add_user(idinfo['email']) send_resp(resp, falcon.HTTP_200, 200, "info", "Token valide") return except Exception as e: rootLogger.error(str(e)) send_resp(resp, falcon.HTTP_401, 401, "error", str(e)) return
def on_get(self, req, resp): """Recuperation de la liste des salles --- description: Recuperation de la liste des salles responses: 200: description: Recuperation de la liste des salles schema: ResponseSchema 401: description: Erreur de token schema: ResponseSchema """ rootLogger.info( "Appel de la commande GET de l'api fh_salles sans paramètre") try: user = connect_from_header_connection(req, resp, self.db) except Exception as e: rootLogger.error(str(e)) send_resp(resp, falcon.HTTP_401, 401, "error", str(e)) return rootLogger.debug("Récupération des informations des salles en base") salles = self.db.list_salles() salle = {} salle['salles'] = {} rootLogger.debug(salles) for key, value in salles.items(): rootLogger.debug("{}=>{}".format(key, value)) salle['salles'][key] = {} salle['salles'][key]['levels'] = value send_resp(resp, falcon.HTTP_200, 200, 'salles', salle)
def on_get(self, req, resp): """Recuperation de la liste des hopitaux disponible --- description: Recuperation de la liste des hopitaux responses: 200: description: Recuperation de la liste des hopitaux schema: ResponseSchema 401: description: Erreur de token schema: ResponseSchema """ rootLogger.info("Appel de la commande GET de l'api fh_hospitals") try: user = connect_from_header_connection(req, resp, self.db) except Exception as e: rootLogger.error(str(e)) send_resp(resp, falcon.HTTP_401, 401, "error", str(e)) return rootLogger.debug( "Récupération des hopitaux de l'utilisateur {!r}".format(user)) hospitals = self.db.list_hospitals(user['id']) hosp = {} hosp['hospitals'] = [] for hospital in hospitals: rootLogger.debug(hospital) hosp['hospitals'].append({"name": hospital[2], "id": hospital[0]}) send_resp(resp, falcon.HTTP_200, 200, 'hospitals', hosp)
def valid_google_oauth_token(token): CLIENT_ID = GOOGLE_API_KEY google_token = token # validation du token google idinfo = id_token.verify_oauth2_token(google_token, requests.Request(), CLIENT_ID) rootLogger.debug("idinfo = {!r}".format(idinfo)) if idinfo['iss'] not in [ 'accounts.google.com', 'https://accounts.google.com' ]: raise ValueError('Wrong issuer.') rootLogger.info("Connexion google réussi pour {!r}".format( idinfo['email'])) return idinfo
def on_post(self, req, resp): """Creation d'un nouvel hopital --- description: Creation d'un nouvel hopital responses: 200: description: Recuperation de la liste des hopitaux schema: ResponseSchema 400: description: Erreur d'analyse du body schema: ResponseSchema 401: description: Erreur de token schema: ResponseSchema 409: description: La ressource existe deja schema: ResponseSchema """ rootLogger.info("Appel de la commande POST de l'api fh_hospitals") try: user = connect_from_header_connection(req, resp, self.db) except Exception as e: rootLogger.error(str(e)) send_resp(resp, falcon.HTTP_401, 401, "error", str(e)) return try: data = json.load(req.stream) except Exception as e: send_resp(resp, falcon.HTTP_400, 400, "error", "Erreur lors de l'analyse du body envoyé") return rootLogger.debug("data = {!r}".format(data)) try: self.db.add_hospital(user['id'], data['name']) send_resp(resp, falcon.HTTP_201, 201, "Info", "L'hopital {!s} à été créé".format(data['name'])) except mysql.connector.Error as e: if e.errno == errorcode.ER_DUP_ENTRY: send_resp(resp, falcon.HTTP_409, 409, "error", "L'hopital existe déjà") else: print(e) send_resp(resp, falcon.HTTP_500, 500, "error", "Erreur non géré") return
def log_in(self): s = self.s s.get('https://ru.grepolis.com/') s.headers.update({ 'X-XSRF-TOKEN': s.cookies['XSRF-TOKEN'], }) auth_data = { 'login[userid]': self.login, 'login[password]': self.passwd, 'login[remember_me]': True, } try: r = s.post('https://ru.grepolis.com/glps/login_check', data=auth_data) except: rootLogger.info('[!] ERROR while send auth POST-request') return response_json_dict = r.json() if 'success' in response_json_dict: if response_json_dict['success']: rootLogger.info('[+] Auth OK:\t%s:%s' % (self.login, self.passwd)) return True else: if 'Нет игрока с таким именем' in response_json_dict['message']: rootLogger.info('[-] BAD Username:\t%s:%s' % (self.login, self.passwd)) elif 'Неверный пароль' in response_json_dict['message']: rootLogger.info('[-] BAD Passwod:\t%s:%s' % (self.login, self.passwd)) else: rootLogger.info('[-] BAD Auth:\t%s:%s\t%s' % (self.login, self.passwd, response_json_dict)) # if unexpected response else: rootLogger.error('[!] Unexpected log_in response: %s' % response_json_dict) return False
from hospital import fh_hospitals from salles import fh_salles # le reste de l'appli from bdd import fh_bdd from logger import rootLogger SWAGGERUI_URL = '/swagger' SCHEMA_URL = '/static/v1/swagger.yaml' API_VERSION = 'v1' STATIC_PATH = pathlib.Path(__file__).parent / 'static' page_title = 'FH_Assist Swagger Doc' favicon_url = 'https://funhospital.tsuna.fr/favicon.ico' rootLogger.info("Démarrage de l'api") def handle_404(req, resp): send_resp(resp, falcon.HTTP_404, 404, "error", "API non trouvé") class fh_login: """Connection à l'api --- description: Connection à l'api """ token = None db = None