init flask and PWA - file structure
This commit is contained in:
parent
d9ffbcfa13
commit
b9410f2986
@ -139,6 +139,10 @@ async def send_telegram_message(message):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# # # # # # # # # # DATABASE # # # # # # # # # #
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# # # # # # # # # # CRYPTO PUBLIC # # # # # # # # # #
|
# # # # # # # # # # CRYPTO PUBLIC # # # # # # # # # #
|
||||||
|
|
||||||
async def get_token_prices(token_addresses: List[str]) -> Dict[str, float]:
|
async def get_token_prices(token_addresses: List[str]) -> Dict[str, float]:
|
||||||
|
0
crypto/sol/modules/__init__.py
Normal file
0
crypto/sol/modules/__init__.py
Normal file
58
crypto/sol/modules/webui.py
Normal file
58
crypto/sol/modules/webui.py
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
from flask import Flask, jsonify, request
|
||||||
|
from flask_login import LoginManager, UserMixin, login_user, login_required, current_user
|
||||||
|
import secrets
|
||||||
|
from modules import storage # Import your storage module
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
app.config['SECRET_KEY'] = 'your-secret-key'
|
||||||
|
login_manager = LoginManager(app)
|
||||||
|
|
||||||
|
class User(UserMixin):
|
||||||
|
def __init__(self, id, username, email):
|
||||||
|
self.id = id
|
||||||
|
self.username = username
|
||||||
|
self.email = email
|
||||||
|
|
||||||
|
@login_manager.user_loader
|
||||||
|
def load_user(user_id):
|
||||||
|
user_data = storage.get_user_by_id(user_id)
|
||||||
|
if user_data:
|
||||||
|
return User(id=user_data['id'], username=user_data['username'], email=user_data['email'])
|
||||||
|
return None
|
||||||
|
|
||||||
|
@app.route('/login', methods=['POST'])
|
||||||
|
def login():
|
||||||
|
data = request.json
|
||||||
|
username = data.get('username')
|
||||||
|
password = data.get('password')
|
||||||
|
|
||||||
|
user = storage.authenticate_user(username, password)
|
||||||
|
if user:
|
||||||
|
login_user(User(id=user['id'], username=user['username'], email=user['email']))
|
||||||
|
return jsonify({'message': 'Login successful'}), 200
|
||||||
|
else:
|
||||||
|
return jsonify({'message': 'Invalid credentials'}), 401
|
||||||
|
|
||||||
|
@app.route('/generate_api_key', methods=['POST'])
|
||||||
|
@login_required
|
||||||
|
def generate_api_key():
|
||||||
|
api_key = secrets.token_urlsafe(32)
|
||||||
|
storage.store_api_key(current_user.id, api_key)
|
||||||
|
return jsonify({'api_key': api_key})
|
||||||
|
|
||||||
|
@app.route('/wallet/<int:wallet_id>/transactions', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
def get_transactions(wallet_id):
|
||||||
|
transactions = storage.get_transactions(wallet_id)
|
||||||
|
return jsonify(transactions)
|
||||||
|
|
||||||
|
@app.route('/wallet/<int:wallet_id>/holdings', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
def get_holdings(wallet_id):
|
||||||
|
holdings = storage.get_holdings(wallet_id)
|
||||||
|
return jsonify(holdings)
|
||||||
|
|
||||||
|
# Implement other routes for reports, price alerts, following accounts, etc.
|
||||||
|
|
||||||
|
def init_app():
|
||||||
|
return app
|
0
crypto/sol/static/css/styles.css
Normal file
0
crypto/sol/static/css/styles.css
Normal file
0
crypto/sol/static/images/logo.png
Normal file
0
crypto/sol/static/images/logo.png
Normal file
0
crypto/sol/static/manifest.json
Normal file
0
crypto/sol/static/manifest.json
Normal file
0
crypto/sol/static/service-worker.js
Normal file
0
crypto/sol/static/service-worker.js
Normal file
Loading…
x
Reference in New Issue
Block a user