装备栏、技能栏
This commit is contained in:
@@ -9,12 +9,13 @@ from api.core.exception import ResponseException
|
||||
|
||||
|
||||
class AlterState:
|
||||
def __init__(self, alter: str, token: str, charcater: Character, equVersion: str):
|
||||
def __init__(self, alter: str, token: str, charcater: Character, equVersion: str,time: int):
|
||||
self.alter = alter
|
||||
self.token = token
|
||||
self.origin = alter.split('.')[-1]
|
||||
self.character = charcater
|
||||
self.equVersion = equVersion
|
||||
self.time = time
|
||||
|
||||
def to_dict(self):
|
||||
return self.__dict__
|
||||
|
||||
+32
-10
@@ -1,26 +1,48 @@
|
||||
import time
|
||||
from typing import Annotated, Optional
|
||||
from redis import Redis
|
||||
from sqlalchemy.orm import Session
|
||||
from fastapi import Depends, Header
|
||||
|
||||
from api.core.exception import ResponseException
|
||||
from database.connect import get_db,get_redis
|
||||
from api.core.Auth import AlterState, deleteToken, readToken
|
||||
from database.connect import get_db, get_redis
|
||||
from api.core.Auth import AlterState
|
||||
import base64
|
||||
import json
|
||||
|
||||
SessionDep = Annotated[Session, Depends(get_db)]
|
||||
RedisDep = Annotated[Redis, Depends(get_redis)]
|
||||
|
||||
|
||||
def authorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
|
||||
if access_token is not None:
|
||||
info = readToken(access_token, redis)
|
||||
return info
|
||||
def alterToken(alter_token: Optional[str] = Header(None)):
|
||||
if alter_token is not None:
|
||||
try:
|
||||
decoded_bytes = base64.b64decode(alter_token)
|
||||
decoded_str = decoded_bytes.decode('utf-8')
|
||||
alter = json.loads(decoded_str)
|
||||
# 时间判断 后面再加
|
||||
if (int(time.time() * 1000) - alter['time']) / (60 * 60 * 1000) > 6:
|
||||
raise ResponseException('登录过期或无效Token,请刷新后重试')
|
||||
return AlterState(alter['alter'], alter_token, {}, alter['equVersion'], alter['time'])
|
||||
except (base64.binascii.Error, json.JSONDecodeError):
|
||||
raise ResponseException('登录过期或无效Token,请刷新后重试')
|
||||
else:
|
||||
raise ResponseException('登录过期或无效Token,请刷新后重试')
|
||||
pass
|
||||
|
||||
|
||||
def unauthorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
|
||||
if access_token is not None:
|
||||
return deleteToken(access_token, redis)
|
||||
AltersDep = Annotated[AlterState, Depends(alterToken)]
|
||||
|
||||
AltersDep = Annotated[AlterState, Depends(authorize)]
|
||||
# def authorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
|
||||
# if access_token is not None:
|
||||
# info = readToken(access_token, redis)
|
||||
# return info
|
||||
# else:
|
||||
# raise ResponseException('登录过期或无效Token,请刷新后重试')
|
||||
|
||||
|
||||
# def unauthorize(redis:RedisDep, access_token: Optional[str] = Header(None)):
|
||||
# if access_token is not None:
|
||||
# return deleteToken(access_token, redis)
|
||||
|
||||
# TokenDep = Annotated[AlterState, Depends(authorize)]
|
||||
|
||||
@@ -33,8 +33,9 @@ async def get_character_info(
|
||||
request: Request, state: AltersDep ,redis:RedisDep
|
||||
):
|
||||
character = createCharacter(state.alter, state.equVersion)
|
||||
def get_character():
|
||||
return character.getInfo()
|
||||
info = get_redis_info(redis, f"dcalc:character:{state.alter}", get_character)
|
||||
# def get_character():
|
||||
# return character.getInfo()
|
||||
# info = get_redis_info(redis, f"dcalc:character:{state.alter}", get_character)
|
||||
info = character.getInfo()
|
||||
return response(data=info)
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ class Suit:
|
||||
point: int
|
||||
level: int
|
||||
count: int
|
||||
imageUrl: str
|
||||
SkillAttack: float
|
||||
Attack: float
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -22,6 +22,7 @@ class SuitData(Base):
|
||||
count = Column(Integer)
|
||||
SkillAttack = Column(Float)
|
||||
Attack = Column(Float)
|
||||
imageUrl = Column(Text)
|
||||
|
||||
|
||||
class EquData(Base):
|
||||
|
||||
Reference in New Issue
Block a user