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
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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
Esempio n. 6
0
 def __init__(self):
     rootLogger.debug("Initialisation de la classe fh_bdd")
     self.migration()
     try:
         rootLogger.debug("Connexion à la base...")
         self.cnx = mysql.connector.connect(**BDD_INFO)
         rootLogger.debug("Connecté à la base...")
     except mysql.connector.Error as err:
         if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
             rootLogger.error(
                 "Something is wrong with your user name or password")
         elif err.errno == errorcode.ER_BAD_DB_ERROR:
             rootLogger.error("Database does not exist")
         else:
             rootLogger.error(err)
     self.cnx.autocommit = True

try:
    api = falcon.API()
    connect_api = fh_login()
    hospital_api = fh_hospitals()
    salles_api = fh_salles()
    api.add_route("/{!s}/connect".format(API_VERSION), connect_api)
    api.add_route("/{!s}/hospitals".format(API_VERSION), hospital_api)
    api.add_route("/{!s}/salles".format(API_VERSION), salles_api)
    api.add_sink(handle_404, '')

    # Ajout du swagger de l'API
    api.add_static_route(SWAGGERUI_URL, str(STATIC_PATH))
except Exception as e:
    rootLogger.error(str(e))
    sys.exit(1)

spec = APISpec(
    title='Swagger FH_assistant',
    version='1.0.0',
    openapi_version='2.0',
    plugins=[FalconPlugin(api), MarshmallowPlugin()],
)

spec.components.schema('Response', schema=ResponseSchema)
spec.path(resource=connect_api)
spec.path(resource=hospital_api)
spec.path(resource=salles_api)
f = codecs.open(str(STATIC_PATH) + "/v1/swagger.yaml", "w", "utf-8")
f.write(spec.to_yaml())