wacca: add region logic
This commit is contained in:
parent
e46c8e7dbd
commit
e961c1dfb3
@ -73,9 +73,9 @@ class WaccaBase():
|
|||||||
prefecture_name = inflection.underscore(game_cfg.server.prefecture_name).replace(' ', '_').upper()
|
prefecture_name = inflection.underscore(game_cfg.server.prefecture_name).replace(' ', '_').upper()
|
||||||
if prefecture_name not in [region.name for region in WaccaConstants.Region]:
|
if prefecture_name not in [region.name for region in WaccaConstants.Region]:
|
||||||
self.logger.warning(f"Invalid prefecture name {game_cfg.server.prefecture_name} in config file")
|
self.logger.warning(f"Invalid prefecture name {game_cfg.server.prefecture_name} in config file")
|
||||||
self.region_id = 1
|
self.region_id = WaccaConstants.Region.HOKKAIDO
|
||||||
else:
|
else:
|
||||||
self.region_id = int(WaccaConstants.Region[prefecture_name].value)
|
self.region_id = WaccaConstants.Region[prefecture_name]
|
||||||
|
|
||||||
def handle_housing_get_request(self, data: Dict) -> Dict:
|
def handle_housing_get_request(self, data: Dict) -> Dict:
|
||||||
req = BaseRequest(data)
|
req = BaseRequest(data)
|
||||||
@ -91,17 +91,12 @@ class WaccaBase():
|
|||||||
def handle_housing_start_request(self, data: Dict) -> Dict:
|
def handle_housing_start_request(self, data: Dict) -> Dict:
|
||||||
req = HousingStartRequestV1(data)
|
req = HousingStartRequestV1(data)
|
||||||
|
|
||||||
resp = HousingStartResponseV1(
|
if req.appVersion.country != "JPN" and req.appVersion.country in [region.name for region in WaccaConstants.Region]:
|
||||||
self.region_id,
|
region_id = WaccaConstants.Region[req.appVersion.country]
|
||||||
[ # Recomended songs
|
else:
|
||||||
1269,1007,1270,1002,1020,1003,1008,1211,1018,1092,1056,32,
|
region_id = self.region_id
|
||||||
1260,1230,1258,1251,2212,1264,1125,1037,2001,1272,1126,1119,
|
|
||||||
1104,1070,1047,1044,1027,1004,1001,24,2068,2062,2021,1275,
|
resp = HousingStartResponseV1(region_id)
|
||||||
1249,1207,1203,1107,1021,1009,9,4,3,23,22,2014,13,1276,1247,
|
|
||||||
1240,1237,1128,1114,1110,1109,1102,1045,1043,1036,1035,1030,
|
|
||||||
1023,1015
|
|
||||||
]
|
|
||||||
)
|
|
||||||
return resp.make()
|
return resp.make()
|
||||||
|
|
||||||
def handle_advertise_GetNews_request(self, data: Dict) -> Dict:
|
def handle_advertise_GetNews_request(self, data: Dict) -> Dict:
|
||||||
|
@ -153,9 +153,13 @@ class WaccaConstants():
|
|||||||
UNITED_STATES = 48
|
UNITED_STATES = 48
|
||||||
USA = 48
|
USA = 48
|
||||||
TAIWAN = 49
|
TAIWAN = 49
|
||||||
|
TWN = 49
|
||||||
HONG_KONG = 50
|
HONG_KONG = 50
|
||||||
|
HKG = 50
|
||||||
SINGAPORE = 51
|
SINGAPORE = 51
|
||||||
|
SGP = 51
|
||||||
KOREA = 52
|
KOREA = 52
|
||||||
|
KOR = 52
|
||||||
|
|
||||||
VALID_COUNTRIES = set(["JPN", "USA", "KOR", "HKG", "SGP"])
|
VALID_COUNTRIES = set(["JPN", "USA", "KOR", "HKG", "SGP"])
|
||||||
|
|
||||||
|
@ -90,8 +90,7 @@ class Version(ShortVersion):
|
|||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f"{self.major}.{self.minor}.{self.patch}.{self.country}.{self.role}.{self.build}"
|
return f"{self.major}.{self.minor}.{self.patch}.{self.country}.{self.role}.{self.build}"
|
||||||
|
|
||||||
|
class HousingInfo:
|
||||||
class HousingInfo():
|
|
||||||
"""
|
"""
|
||||||
1 is lan install role, 2 is country
|
1 is lan install role, 2 is country
|
||||||
"""
|
"""
|
||||||
@ -105,7 +104,7 @@ class HousingInfo():
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [ self.id, self.val ]
|
return [ self.id, self.val ]
|
||||||
|
|
||||||
class Notice():
|
class Notice:
|
||||||
name: str = ""
|
name: str = ""
|
||||||
title: str = ""
|
title: str = ""
|
||||||
message: str = ""
|
message: str = ""
|
||||||
@ -128,7 +127,7 @@ class Notice():
|
|||||||
return [ self.name, self.title, self.message, self.unknown3, self.unknown4, int(self.showTitleScreen),
|
return [ self.name, self.title, self.message, self.unknown3, self.unknown4, int(self.showTitleScreen),
|
||||||
int(self.showWelcomeScreen), self.startTime, self.endTime, self.voiceline]
|
int(self.showWelcomeScreen), self.startTime, self.endTime, self.voiceline]
|
||||||
|
|
||||||
class UserOption():
|
class UserOption:
|
||||||
def __init__(self, opt_id: int = 0, opt_val: Any = 0) -> None:
|
def __init__(self, opt_id: int = 0, opt_val: Any = 0) -> None:
|
||||||
self.opt_id = opt_id
|
self.opt_id = opt_id
|
||||||
self.opt_val = opt_val
|
self.opt_val = opt_val
|
||||||
@ -136,7 +135,7 @@ class UserOption():
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [self.opt_id, self.opt_val]
|
return [self.opt_id, self.opt_val]
|
||||||
|
|
||||||
class UserStatusV1():
|
class UserStatusV1:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.userId: int = 0
|
self.userId: int = 0
|
||||||
self.username: str = ""
|
self.username: str = ""
|
||||||
@ -194,7 +193,7 @@ class PlayVersionStatus(Enum):
|
|||||||
VersionTooNew = 1
|
VersionTooNew = 1
|
||||||
VersionUpgrade = 2
|
VersionUpgrade = 2
|
||||||
|
|
||||||
class PlayModeCounts():
|
class PlayModeCounts:
|
||||||
seasonId: int = 0
|
seasonId: int = 0
|
||||||
modeId: int = 0
|
modeId: int = 0
|
||||||
playNum: int = 0
|
playNum: int = 0
|
||||||
@ -211,7 +210,7 @@ class PlayModeCounts():
|
|||||||
self.playNum
|
self.playNum
|
||||||
]
|
]
|
||||||
|
|
||||||
class SongUnlock():
|
class SongUnlock:
|
||||||
songId: int = 0
|
songId: int = 0
|
||||||
difficulty: int = 0
|
difficulty: int = 0
|
||||||
whenAppeared: int = 0
|
whenAppeared: int = 0
|
||||||
@ -231,7 +230,7 @@ class SongUnlock():
|
|||||||
self.whenUnlocked
|
self.whenUnlocked
|
||||||
]
|
]
|
||||||
|
|
||||||
class GenericItemRecv():
|
class GenericItemRecv:
|
||||||
def __init__(self, item_type: int = 1, item_id: int = 1, quantity: int = 1) -> None:
|
def __init__(self, item_type: int = 1, item_id: int = 1, quantity: int = 1) -> None:
|
||||||
self.itemId = item_id
|
self.itemId = item_id
|
||||||
self.itemType = item_type
|
self.itemType = item_type
|
||||||
@ -240,7 +239,7 @@ class GenericItemRecv():
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [ self.itemType, self.itemId, self.quantity ]
|
return [ self.itemType, self.itemId, self.quantity ]
|
||||||
|
|
||||||
class GenericItemSend():
|
class GenericItemSend:
|
||||||
def __init__(self, itemId: int, itemType: int, whenAcquired: int) -> None:
|
def __init__(self, itemId: int, itemType: int, whenAcquired: int) -> None:
|
||||||
self.itemId = itemId
|
self.itemId = itemId
|
||||||
self.itemType = itemType
|
self.itemType = itemType
|
||||||
@ -268,7 +267,7 @@ class IconItem(GenericItemSend):
|
|||||||
self.whenAcquired
|
self.whenAcquired
|
||||||
]
|
]
|
||||||
|
|
||||||
class TrophyItem():
|
class TrophyItem:
|
||||||
trophyId: int = 0
|
trophyId: int = 0
|
||||||
season: int = 1
|
season: int = 1
|
||||||
progress: int = 0
|
progress: int = 0
|
||||||
@ -288,7 +287,7 @@ class TrophyItem():
|
|||||||
self.badgeType
|
self.badgeType
|
||||||
]
|
]
|
||||||
|
|
||||||
class TicketItem():
|
class TicketItem:
|
||||||
userTicketId: int = 0
|
userTicketId: int = 0
|
||||||
ticketId: int = 0
|
ticketId: int = 0
|
||||||
whenExpires: int = 0
|
whenExpires: int = 0
|
||||||
@ -321,7 +320,7 @@ class NavigatorItem(IconItem):
|
|||||||
self.usesToday
|
self.usesToday
|
||||||
]
|
]
|
||||||
|
|
||||||
class SkillItem():
|
class SkillItem:
|
||||||
skill_type: int
|
skill_type: int
|
||||||
level: int
|
level: int
|
||||||
flag: int
|
flag: int
|
||||||
@ -335,7 +334,7 @@ class SkillItem():
|
|||||||
self.badge
|
self.badge
|
||||||
]
|
]
|
||||||
|
|
||||||
class UserItemInfoV1():
|
class UserItemInfoV1:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.songUnlocks: List[SongUnlock] = []
|
self.songUnlocks: List[SongUnlock] = []
|
||||||
self.titles: List[GenericItemSend] = []
|
self.titles: List[GenericItemSend] = []
|
||||||
@ -419,7 +418,7 @@ class UserItemInfoV3(UserItemInfoV2):
|
|||||||
ret.append(effect)
|
ret.append(effect)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
class SongDetailClearCounts():
|
class SongDetailClearCounts:
|
||||||
def __init__(self, play_ct: int = 0, clear_ct: int = 0, ml_ct: int = 0, fc_ct: int = 0,
|
def __init__(self, play_ct: int = 0, clear_ct: int = 0, ml_ct: int = 0, fc_ct: int = 0,
|
||||||
am_ct: int = 0, counts: Optional[List[int]] = None) -> None:
|
am_ct: int = 0, counts: Optional[List[int]] = None) -> None:
|
||||||
if counts is None:
|
if counts is None:
|
||||||
@ -439,7 +438,7 @@ class SongDetailClearCounts():
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [self.playCt, self.clearCt, self.misslessCt, self.fullComboCt, self.allMarvelousCt]
|
return [self.playCt, self.clearCt, self.misslessCt, self.fullComboCt, self.allMarvelousCt]
|
||||||
|
|
||||||
class SongDetailGradeCountsV1():
|
class SongDetailGradeCountsV1:
|
||||||
dCt: int
|
dCt: int
|
||||||
cCt: int
|
cCt: int
|
||||||
bCt: int
|
bCt: int
|
||||||
@ -501,7 +500,7 @@ class SongDetailGradeCountsV2(SongDetailGradeCountsV1):
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return super().make() + [self.spCt, self.sspCt, self.ssspCt]
|
return super().make() + [self.spCt, self.sspCt, self.ssspCt]
|
||||||
|
|
||||||
class BestScoreDetailV1():
|
class BestScoreDetailV1:
|
||||||
songId: int = 0
|
songId: int = 0
|
||||||
difficulty: int = 1
|
difficulty: int = 1
|
||||||
clearCounts: SongDetailClearCounts = SongDetailClearCounts()
|
clearCounts: SongDetailClearCounts = SongDetailClearCounts()
|
||||||
@ -534,7 +533,7 @@ class BestScoreDetailV1():
|
|||||||
class BestScoreDetailV2(BestScoreDetailV1):
|
class BestScoreDetailV2(BestScoreDetailV1):
|
||||||
gradeCounts: SongDetailGradeCountsV2 = SongDetailGradeCountsV2()
|
gradeCounts: SongDetailGradeCountsV2 = SongDetailGradeCountsV2()
|
||||||
|
|
||||||
class SongUpdateJudgementCounts():
|
class SongUpdateJudgementCounts:
|
||||||
marvCt: int
|
marvCt: int
|
||||||
greatCt: int
|
greatCt: int
|
||||||
goodCt: int
|
goodCt: int
|
||||||
@ -549,7 +548,7 @@ class SongUpdateJudgementCounts():
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [self.marvCt, self.greatCt, self.goodCt, self.missCt]
|
return [self.marvCt, self.greatCt, self.goodCt, self.missCt]
|
||||||
|
|
||||||
class SongUpdateDetailV1():
|
class SongUpdateDetailV1:
|
||||||
def __init__(self, data: List) -> None:
|
def __init__(self, data: List) -> None:
|
||||||
if data is not None:
|
if data is not None:
|
||||||
self.songId = data[0]
|
self.songId = data[0]
|
||||||
@ -579,7 +578,7 @@ class SongUpdateDetailV2(SongUpdateDetailV1):
|
|||||||
self.slowCt = data[14]
|
self.slowCt = data[14]
|
||||||
self.flagNewRecord = False if data[15] == 0 else True
|
self.flagNewRecord = False if data[15] == 0 else True
|
||||||
|
|
||||||
class SeasonalInfoV1():
|
class SeasonalInfoV1:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.level: int = 0
|
self.level: int = 0
|
||||||
self.wpObtained: int = 0
|
self.wpObtained: int = 0
|
||||||
@ -613,7 +612,7 @@ class SeasonalInfoV2(SeasonalInfoV1):
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return super().make() + [self.platesObtained, self.cumulativeGatePts]
|
return super().make() + [self.platesObtained, self.cumulativeGatePts]
|
||||||
|
|
||||||
class BingoPageStatus():
|
class BingoPageStatus:
|
||||||
id = 0
|
id = 0
|
||||||
location = 1
|
location = 1
|
||||||
progress = 0
|
progress = 0
|
||||||
@ -626,7 +625,7 @@ class BingoPageStatus():
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [self.id, self.location, self.progress]
|
return [self.id, self.location, self.progress]
|
||||||
|
|
||||||
class BingoDetail():
|
class BingoDetail:
|
||||||
def __init__(self, pageNumber: int) -> None:
|
def __init__(self, pageNumber: int) -> None:
|
||||||
self.pageNumber = pageNumber
|
self.pageNumber = pageNumber
|
||||||
self.pageStatus: List[BingoPageStatus] = []
|
self.pageStatus: List[BingoPageStatus] = []
|
||||||
@ -641,7 +640,7 @@ class BingoDetail():
|
|||||||
status
|
status
|
||||||
]
|
]
|
||||||
|
|
||||||
class GateDetailV1():
|
class GateDetailV1:
|
||||||
def __init__(self, gate_id: int = 1, page: int = 1, progress: int = 0, loops: int = 0, last_used: int = 0, mission_flg = 0) -> None:
|
def __init__(self, gate_id: int = 1, page: int = 1, progress: int = 0, loops: int = 0, last_used: int = 0, mission_flg = 0) -> None:
|
||||||
self.id = gate_id
|
self.id = gate_id
|
||||||
self.page = page
|
self.page = page
|
||||||
@ -657,11 +656,11 @@ class GateDetailV2(GateDetailV1):
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return super().make() + [self.missionFlg]
|
return super().make() + [self.missionFlg]
|
||||||
|
|
||||||
class GachaInfo():
|
class GachaInfo:
|
||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
class LastSongDetail():
|
class LastSongDetail:
|
||||||
lastSongId = 90
|
lastSongId = 90
|
||||||
lastSongDiff = 1
|
lastSongDiff = 1
|
||||||
lastFolderOrd = 1
|
lastFolderOrd = 1
|
||||||
@ -680,11 +679,11 @@ class LastSongDetail():
|
|||||||
return [self.lastSongId, self.lastSongDiff, self.lastFolderOrd, self.lastFolderId,
|
return [self.lastSongId, self.lastSongDiff, self.lastFolderOrd, self.lastFolderId,
|
||||||
self.lastSongOrd]
|
self.lastSongOrd]
|
||||||
|
|
||||||
class FriendDetail():
|
class FriendDetail:
|
||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
class LoginBonusInfo():
|
class LoginBonusInfo:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.tickets: List[TicketItem] = []
|
self.tickets: List[TicketItem] = []
|
||||||
self.items: List[GenericItemRecv] = []
|
self.items: List[GenericItemRecv] = []
|
||||||
@ -702,7 +701,7 @@ class LoginBonusInfo():
|
|||||||
|
|
||||||
return [ tks, itms, self.message ]
|
return [ tks, itms, self.message ]
|
||||||
|
|
||||||
class VipLoginBonus():
|
class VipLoginBonus:
|
||||||
id = 1
|
id = 1
|
||||||
unknown = 0
|
unknown = 0
|
||||||
item: GenericItemRecv
|
item: GenericItemRecv
|
||||||
@ -715,7 +714,7 @@ class VipLoginBonus():
|
|||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [ self.id, self.unknown, self.item.make() ]
|
return [ self.id, self.unknown, self.item.make() ]
|
||||||
|
|
||||||
class VipInfo():
|
class VipInfo:
|
||||||
def __init__(self, year: int = 2019, month: int = 1, day: int = 1, num_item: int = 1) -> None:
|
def __init__(self, year: int = 2019, month: int = 1, day: int = 1, num_item: int = 1) -> None:
|
||||||
self.pageYear = year
|
self.pageYear = year
|
||||||
self.pageMonth = month
|
self.pageMonth = month
|
||||||
@ -746,7 +745,7 @@ class PlayType(Enum):
|
|||||||
PlayTypeCoop = 3
|
PlayTypeCoop = 3
|
||||||
PlayTypeStageup = 4
|
PlayTypeStageup = 4
|
||||||
|
|
||||||
class StageInfo():
|
class StageInfo:
|
||||||
danId: int = 0
|
danId: int = 0
|
||||||
danLevel: int = 0
|
danLevel: int = 0
|
||||||
clearStatus: int = 0
|
clearStatus: int = 0
|
||||||
@ -780,7 +779,7 @@ class StageupClearType(Enum):
|
|||||||
CLEAR_SILVER = 2
|
CLEAR_SILVER = 2
|
||||||
CLEAR_GOLD = 3
|
CLEAR_GOLD = 3
|
||||||
|
|
||||||
class MusicUpdateDetailV1():
|
class MusicUpdateDetailV1:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.songId = 0
|
self.songId = 0
|
||||||
self.difficulty = 1
|
self.difficulty = 1
|
||||||
@ -818,7 +817,7 @@ class MusicUpdateDetailV3(MusicUpdateDetailV2):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
self.grades = SongDetailGradeCountsV2()
|
self.grades = SongDetailGradeCountsV2()
|
||||||
|
|
||||||
class SongRatingUpdate():
|
class SongRatingUpdate:
|
||||||
def __init__(self, song_id: int = 0, difficulty: int = 1, new_rating: int = 0) -> None:
|
def __init__(self, song_id: int = 0, difficulty: int = 1, new_rating: int = 0) -> None:
|
||||||
self.songId = song_id
|
self.songId = song_id
|
||||||
self.difficulty = difficulty
|
self.difficulty = difficulty
|
||||||
@ -831,7 +830,7 @@ class SongRatingUpdate():
|
|||||||
self.rating,
|
self.rating,
|
||||||
]
|
]
|
||||||
|
|
||||||
class GateTutorialFlag():
|
class GateTutorialFlag:
|
||||||
def __init__(self, tutorial_id: int = 1, flg_watched: bool = False) -> None:
|
def __init__(self, tutorial_id: int = 1, flg_watched: bool = False) -> None:
|
||||||
self.tutorialId = tutorial_id
|
self.tutorialId = tutorial_id
|
||||||
self.flagWatched = flg_watched
|
self.flagWatched = flg_watched
|
||||||
|
@ -2,6 +2,7 @@ from typing import List, Dict
|
|||||||
|
|
||||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||||
from titles.wacca.handlers.helpers import HousingInfo
|
from titles.wacca.handlers.helpers import HousingInfo
|
||||||
|
from titles.wacca.const import WaccaConstants
|
||||||
|
|
||||||
# ---housing/get----
|
# ---housing/get----
|
||||||
class HousingGetResponse(BaseResponse):
|
class HousingGetResponse(BaseResponse):
|
||||||
@ -37,12 +38,22 @@ class HousingStartRequestV2(HousingStartRequestV1):
|
|||||||
self.info.append(HousingInfo(info[0], info[1]))
|
self.info.append(HousingInfo(info[0], info[1]))
|
||||||
|
|
||||||
class HousingStartResponseV1(BaseResponse):
|
class HousingStartResponseV1(BaseResponse):
|
||||||
def __init__(self, regionId: int, songList: List[int]) -> None:
|
def __init__(self, regionId: WaccaConstants.Region = WaccaConstants.Region.HOKKAIDO, songList: List[int] = []) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.regionId = regionId
|
self.regionId = regionId
|
||||||
self.songList = songList
|
self.songList = songList # Recomended songs
|
||||||
|
|
||||||
|
if not self.songList:
|
||||||
|
self.songList = [
|
||||||
|
1269,1007,1270,1002,1020,1003,1008,1211,1018,1092,1056,32,
|
||||||
|
1260,1230,1258,1251,2212,1264,1125,1037,2001,1272,1126,1119,
|
||||||
|
1104,1070,1047,1044,1027,1004,1001,24,2068,2062,2021,1275,
|
||||||
|
1249,1207,1203,1107,1021,1009,9,4,3,23,22,2014,13,1276,1247,
|
||||||
|
1240,1237,1128,1114,1110,1109,1102,1045,1043,1036,1035,1030,
|
||||||
|
1023,1015
|
||||||
|
]
|
||||||
|
|
||||||
def make(self) -> Dict:
|
def make(self) -> Dict:
|
||||||
self.params = [self.regionId, self.songList]
|
self.params = [self.regionId.value, self.songList]
|
||||||
|
|
||||||
return super().make()
|
return super().make()
|
||||||
|
@ -43,17 +43,12 @@ class WaccaLily(WaccaS):
|
|||||||
def handle_housing_start_request(self, data: Dict) -> Dict:
|
def handle_housing_start_request(self, data: Dict) -> Dict:
|
||||||
req = HousingStartRequestV2(data)
|
req = HousingStartRequestV2(data)
|
||||||
|
|
||||||
resp = HousingStartResponseV1(
|
if req.appVersion.country != "JPN" and req.appVersion.country in [region.name for region in WaccaConstants.Region]:
|
||||||
self.region_id,
|
region_id = WaccaConstants.Region[req.appVersion.country]
|
||||||
[ # Recomended songs
|
else:
|
||||||
1269,1007,1270,1002,1020,1003,1008,1211,1018,1092,1056,32,
|
region_id = self.region_id
|
||||||
1260,1230,1258,1251,2212,1264,1125,1037,2001,1272,1126,1119,
|
|
||||||
1104,1070,1047,1044,1027,1004,1001,24,2068,2062,2021,1275,
|
resp = HousingStartResponseV1(region_id)
|
||||||
1249,1207,1203,1107,1021,1009,9,4,3,23,22,2014,13,1276,1247,
|
|
||||||
1240,1237,1128,1114,1110,1109,1102,1045,1043,1036,1035,1030,
|
|
||||||
1023,1015
|
|
||||||
]
|
|
||||||
)
|
|
||||||
return resp.make()
|
return resp.make()
|
||||||
|
|
||||||
def handle_user_status_get_request(self, data: Dict)-> Dict:
|
def handle_user_status_get_request(self, data: Dict)-> Dict:
|
||||||
|
Loading…
Reference in New Issue
Block a user