from flask import Flask, request, jsonify
import json
import os
from datetime import datetime, timedelta

app = Flask(__name__)

# Kullanıcı verilerini saklayacak dosya yolu
USERS_FILE = 'users.json'

# Kullanıcı verilerini yükle
def load_users():
    if os.path.exists(USERS_FILE):
        with open(USERS_FILE, 'r') as f:
            return json.load(f)
    return {}

# Kullanıcı verilerini kaydet
def save_users(users):
    with open(USERS_FILE, 'w') as f:
        json.dump(users, f, indent=4)

# Token'dan kullanıcı bilgilerini al
def get_user_by_token(token):
    users = load_users()
    return users.get(token)

# Yeni kullanıcı token'ı kaydet
def save_user_token(token, user_data):
    users = load_users()
    # Zaman damgası ekle (24 saat geçerli)
    user_data['timestamp'] = (datetime.now() + timedelta(hours=24)).isoformat()
    users[token] = user_data
    save_users(users)

# Token kontrol endpoint'i
@app.route('/api/verify_token', methods=['GET'])
def verify_token():
    token = request.args.get('token')
    if not token:
        return jsonify({'status': 'error', 'message': 'Token eksik'}), 400
    
    # Token'a ait kullanıcı bilgilerini al
    user = get_user_by_token(token)
    
    if not user:
        return jsonify({'status': 'error', 'message': 'Geçersiz token'}), 401
    
    # Token'ın geçerlilik süresini kontrol et
    token_timestamp = datetime.fromisoformat(user['timestamp'])
    if datetime.now() > token_timestamp:
        return jsonify({'status': 'error', 'message': 'Token süresi dolmuş'}), 401
    
    # Kullanıcı bilgilerini döndür (şimdilik sadece temel bilgiler)
    return jsonify({
        'status': 'success',
        'user_id': user['user_id'],
        'username': user['username']
    })

# Kullanıcı token'ı kaydetme endpoint'i
@app.route('/api/register_token', methods=['POST'])
def register_token():
    data = request.json
    if not data or 'token' not in data or 'user_id' not in data or 'username' not in data:
        return jsonify({'status': 'error', 'message': 'Geçersiz veri'}), 400
    
    token = data['token']
    user_data = {
        'user_id': data['user_id'],
        'username': data['username']
    }
    
    save_user_token(token, user_data)
    
    return jsonify({'status': 'success'})

# Apache'nin proxy yapılandırması için URL düzenleme
@app.route('/bot/api/verify_token', methods=['GET'])
def proxy_verify_token():
    # Bu fonksiyon, Apache proxy ile yönlendirilen istekleri işler
    return verify_token()

# Apache'nin proxy yapılandırması için kayıt endpoint'i
@app.route('/bot/api/register_token', methods=['POST'])
def proxy_register_token():
    # Bu fonksiyon, Apache proxy ile yönlendirilen istekleri işler
    return register_token()

# API'yi başlat
if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1', port=5000) 