Files

115 lines
3.4 KiB
Python

"""
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/<int:website_id>', 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/<int:website_id>', 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('/<int:cookie_id>', 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('/<int:cookie_id>', 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/<int:website_id>', 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