• Y
  • List All
  • Feedback
    • This Project
    • All Projects
Profile Account settings Log out
  • Favorite
  • Project
  • All
Loading...
  • Log in
  • Sign up
yjyoon / Daegu-Jeju-DIP star
  • Project homeH
  • CodeC
  • IssueI
  • Pull requestP
  • Review R
  • MilestoneM
  • BoardB 1
  • Files
  • Commit
  • Branches
Daegu-Jeju-DIPaction.py
Download as .zip file
File name
Commit message
Commit date
database
rebulding server
2024-09-09
logger
Hello Yona
2024-07-09
.gitignore
massive modification, this is the part where DB gets cryptography, extended functionality support for the application
2024-09-06
README.md
Hello Yona
2024-07-09
action.py
rebulding server
2024-09-09
app.py
massive modification, this is the part where DB gets cryptography, extended functionality support for the application
2024-09-06
auth.py
rebulding server
2024-09-09
blocked_ips.json
Hello Yona
2024-07-09
example.json
added json communication format
2024-07-17
gcity.py
Hello Yona
2024-07-09
unit_test_insert_gps_command.sh
added another boundary condition : this is for when the data itself is incomplete, where its missing some one or two data
2024-07-17
juni 2024-09-09 eacbb0f rebulding server DOS
Raw Open in browser Change history
from flask_restx import Resource, Api, Namespace, fields,reqparse from flask import request,jsonify from flask import Flask, request import os from haversine import haversine from database.database import DB from datetime import datetime import pandas as pd import jwt paths = os.getcwd() Action = Namespace( name="Action", description="노드 분석을 위해 사용하는 api.", ) trip_log_model = Action.model('TripLog', { 'trip_id': fields.String(required=True, description='The ID of the trip (64 characters)'), 'trip_distance_m': fields.Float(required=True, description='Total distance traveled in meters'), 'trip_time_s': fields.Float(required=True, description='Total time of the trip in seconds'), 'abrupt_start_count': fields.Integer(required=True, description='Count of abrupt starts'), 'abrupt_stop_count': fields.Integer(required=True, description='Count of abrupt stops'), 'abrupt_acceleration_count': fields.Integer(required=True, description='Count of abrupt accelerations'), 'abrupt_deceleration_count': fields.Integer(required=True, description='Count of abrupt decelerations'), 'helmet_on': fields.Integer(required=True, description='Whether the helmet was worn during the trip, must be 0 or 1 with 1 is the helmet on.'), 'final_score': fields.Float(required=True, description='The final safety score for the trip') }) @Action.route('/gps_update') class GPS_update(Resource): def post(self): token = request.headers.get('Authorization') if not token: return jsonify({'result': 'fail', 'msg': '토큰이 없습니다.'}) else: # Decode the token to verify it decoded_token = jwt.decode(token, "secret", algorithms=['HS256']) #print(decoded_token) user_id = decoded_token['id'] db = DB() data = request.get_json() if len(data["trip_id"]) !=64: return jsonify({500 :"ERROR! INVALID TRIP_ID!"}) if len(data["trip_log"]["timestamp"]) == 0: return jsonify({500 :"ERROR! 'trip_log' is empty!"}) time_stamp_len = len(data["trip_log"]["timestamp"]) latitude_len = len(data["trip_log"]["latitude"]) longitude_len = len(data["trip_log"]["longitude"]) if time_stamp_len != latitude_len or latitude_len != longitude_len: return jsonify( { 500: f"ERROR! Mismatching length of data in trip_log! \n timestamp : {time_stamp_len} \n latitude : {latitude_len} \n longitude : {longitude_len}" } ) df = pd.DataFrame(data["trip_log"]) df["user_id"] = data["user_id"] df["trip_id"] = data["trip_id"] columns = df.columns data_csv_block = df.to_csv(header=False, index=False) print(f"recieved : {data}") # GPS 데이터베이스에 삽입 db.insert_gps_data(data_csv_block, columns) return jsonify({'result': f'success'}) @Action.route('/trip_and_score_update') class TRIP_insert(Resource): def post(self): token = request.headers.get('Authorization') # Check if token is provided if not token: return jsonify({'result': 'fail', 'msg': '토큰이 없습니다.'}), 401 try: # Decode the token to verify it decoded_token = jwt.decode(token, "secret", algorithms=['HS256']) user_id = decoded_token['id'] except jwt.ExpiredSignatureError: return jsonify({'result': 'fail', 'msg': '토큰이 만료되었습니다.'}), 401 except jwt.InvalidTokenError: return jsonify({'result': 'fail', 'msg': '유효하지 않은 토큰입니다.'}), 401 # Interact with the DB to get user history try: db = DB() result, status_code = db.get_history(user_name=user_id) return jsonify({'result': 'success', 'data': result}), status_code except Exception as e: return jsonify({'result': 'fail', 'msg': str(e)}), 500 db = DB() data = request.get_json() if len(data["trip_id"]) != 64: return jsonify({500: "ERROR! INVALID TRIP_ID!"}) if len(data["trip_log"]["timestamp"]) == 0: return jsonify({500: "ERROR! 'trip_log' is empty!"}) trip_id = data["trip_id"] trip_distance_m = data["trip_distance_m"] trip_time_s = data["trip_time_s"] abrupt_start_count = data["abrupt_start_count"] abrupt_stop_count = data["abrupt_stop_count"] abrupt_acceleration_count = data["abrupt_acceleration_count"] abrupt_deceleration_count = data["abrupt_deceleration_count"] helmet_on = data["helmet_on"] final_score = data["final_score"] if not (helmet_on == 1) or (helmet_on == 0): return jsonify({500: f"ERROR! INVALID 'helmet_on'! \n helmet_on : {helmet_on}"}) db.insert_trip_data( user_id, trip_id, trip_distance_m, trip_time_s, abrupt_start_count, abrupt_stop_count, abrupt_acceleration_count, abrupt_deceleration_count, helmet_on, final_score ) return jsonify({'result': f'success'}) @Action.route('/get_history') class Get_history(Resource): def post(self): token = request.headers.get('Authorization') # Check if token is provided if not token: return jsonify({'result': 'fail', 'msg': '토큰이 없습니다.'}), 401 try: # Decode the token to verify it decoded_token = jwt.decode(token, "secret", algorithms=['HS256']) user_id = decoded_token['id'] except jwt.ExpiredSignatureError: return jsonify({'result': 'fail', 'msg': '토큰이 만료되었습니다.'}), 401 except jwt.InvalidTokenError: return jsonify({'result': 'fail', 'msg': '유효하지 않은 토큰입니다.'}), 401 # Interact with the DB to get user history try: db = DB() result, status_code = db.get_history(user_name=user_id) return jsonify({'result': 'success', 'data': result}), status_code except Exception as e: return jsonify({'result': 'fail', 'msg': str(e)}), 500

          
        
    
    
Copyright Yona authors & © NAVER Corp. & NAVER LABS Supported by NAVER CLOUD PLATFORM

or
Sign in with github login with Google Sign in with Google
Reset password | Sign up