""" Cookie管理路由 """ from flask import Blueprint, request, jsonify from models.database import db, Cookie from datetime import datetime cookie_bp = Blueprint('cookies', __name__) @cookie_bp.route('/websites/', methods=['GET']) def get_cookies(website_id): """获取网站的cookie""" cookies = Cookie.query.filter_by(website_id=website_id).all() return jsonify([cookie.to_dict() for cookie in cookies]) @cookie_bp.route('/websites/', methods=['POST']) def create_cookie(website_id): """创建cookie""" data = request.json cookie = Cookie( website_id=website_id, name=data.get('name'), value=data.get('value'), domain=data.get('domain'), path=data.get('path', '/'), expiry=datetime.fromisoformat(data.get('expiry')) if data.get('expiry') else None, secure=data.get('secure', 0), http_only=data.get('http_only', 0) ) db.session.add(cookie) db.session.commit() return jsonify(cookie.to_dict()), 201 @cookie_bp.route('/', methods=['PUT']) def update_cookie(cookie_id): """更新cookie""" cookie = Cookie.query.get_or_404(cookie_id) data = request.json cookie.name = data.get('name', cookie.name) cookie.value = data.get('value', cookie.value) cookie.domain = data.get('domain', cookie.domain) cookie.path = data.get('path', cookie.path) cookie.expiry = datetime.fromisoformat(data.get('expiry')) if data.get('expiry') else cookie.expiry cookie.secure = data.get('secure', cookie.secure) cookie.http_only = data.get('http_only', cookie.http_only) db.session.commit() return jsonify(cookie.to_dict()) @cookie_bp.route('/', methods=['DELETE']) def delete_cookie(cookie_id): """删除cookie""" cookie = Cookie.query.get_or_404(cookie_id) db.session.delete(cookie) db.session.commit() return jsonify({'message': 'Cookie已删除'}) @cookie_bp.route('/websites/', methods=['PUT']) def batch_update_cookies(website_id): """批量更新网站的cookie""" data = request.json cookies_data = data.get('cookies', []) # 删除该网站的所有现有cookie Cookie.query.filter_by(website_id=website_id).delete() # 添加新的cookie for cookie_data in cookies_data: cookie = Cookie( website_id=website_id, name=cookie_data.get('name'), value=cookie_data.get('value'), domain=cookie_data.get('domain'), path=cookie_data.get('path', '/'), expiry=datetime.fromisoformat(cookie_data.get('expiry')) if cookie_data.get('expiry') else None, secure=cookie_data.get('secure', 0), http_only=cookie_data.get('http_only', 0) ) db.session.add(cookie) db.session.commit() return jsonify({'message': 'Cookies已批量更新'}) # 为Cookie模型添加to_dict方法 def cookie_to_dict(self): return { 'id': self.id, 'website_id': self.website_id, 'name': self.name, 'value': self.value, 'domain': self.domain, 'path': self.path, 'expiry': self.expiry.isoformat() if self.expiry else None, 'secure': self.secure, 'http_only': self.http_only, 'created_at': self.created_at.isoformat() if self.created_at else None, 'updated_at': self.updated_at.isoformat() if self.updated_at else None } Cookie.to_dict = cookie_to_dict