22# @Author : Lan
33# @File : views.py
44# @Software: PyCharm
5- from fastapi import APIRouter , Form , UploadFile , File
6- from pydantic import BaseModel
5+ from fastapi import APIRouter , Form , UploadFile , File , Depends
76
87from apps .base .models import FileCodes
9- from apps .base .utils import get_expire_info , get_file_path_name
8+ from apps .base .pydantics import SelectFileModel
9+ from apps .base .utils import get_expire_info , get_file_path_name , error_ip_limit
10+ from core .response import APIResponse
1011from core .storage import file_storage
1112
1213share_api = APIRouter (
@@ -27,13 +28,9 @@ async def share_text(text: str = Form(...), expire_value: int = Form(default=1,
2728 size = len (text ),
2829 prefix = '文本分享'
2930 )
30- return {
31- 'code' : 200 ,
32- 'msg' : 'success' ,
33- 'data' : {
34- 'code' : code ,
35- }
36- }
31+ return APIResponse (detail = {
32+ 'code' : code ,
33+ })
3734
3835
3936@share_api .post ('/file/' )
@@ -52,40 +49,25 @@ async def share_file(expire_value: int = Form(default=1, gt=0), expire_style: st
5249 expired_count = expired_count ,
5350 used_count = used_count ,
5451 )
55- return {
56- 'code' : 200 ,
57- 'msg' : 'success' ,
58- 'data' : {
59- 'code' : code ,
60- 'name' : file .filename ,
61- }
62- }
63-
64-
65- class SelectFileModel (BaseModel ):
66- code : str
52+ return APIResponse (detail = {
53+ 'code' : code ,
54+ 'name' : file .filename ,
55+ })
6756
6857
6958@share_api .post ('/select/' )
70- async def select_file (data : SelectFileModel ):
59+ async def select_file (data : SelectFileModel , ip : str = Depends ( error_ip_limit ) ):
7160 file_code = await FileCodes .filter (code = data .code ).first ()
7261 if not file_code :
73- return {
74- 'code' : 404 ,
75- 'msg' : '文件不存在' ,
76- }
62+ error_ip_limit .add_ip (ip )
63+ return APIResponse (code = 404 , detail = '文件不存在' )
7764 if await file_code .is_expired ():
78- return {
79- 'code' : 403 ,
80- 'msg' : '文件已过期' ,
81- }
82- return {
83- 'code' : 200 ,
84- 'msg' : 'success' ,
85- 'data' : {
86- 'code' : file_code .code ,
87- 'name' : file_code .prefix + file_code .suffix ,
88- 'size' : file_code .size ,
89- 'text' : await file_storage .get_file_url (file_code ),
90- }
91- }
65+ return APIResponse (code = 403 , detail = '文件已过期' )
66+ file_code .used_count += 1
67+ await file_code .save ()
68+ return APIResponse (detail = {
69+ 'code' : file_code .code ,
70+ 'name' : file_code .prefix + file_code .suffix ,
71+ 'size' : file_code .size ,
72+ 'text' : await file_storage .get_file_url (file_code ),
73+ })
0 commit comments