115 lines
3.4 KiB
Python
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
|