134 lines
4.6 KiB
Python
134 lines
4.6 KiB
Python
import uuid
|
|
import json
|
|
import datetime
|
|
import argparse
|
|
import requests
|
|
import glob, os
|
|
import sys
|
|
import re
|
|
|
|
session = requests.Session()
|
|
|
|
def change_state(server_address, access_token, quest_content_id, state):
|
|
api_url = f"{server_address}/api/v1/QuestEditor/quest-state/{quest_content_id}?state={state}"
|
|
headers = {
|
|
"Authorization": f"Bearer {access_token}"
|
|
}
|
|
|
|
response = session.patch(api_url, headers=headers)
|
|
print(json.dumps(response.json(), ensure_ascii=False, indent=4))
|
|
return response
|
|
|
|
|
|
def delete_all_quest(server_address, access_token):
|
|
api_url = f"{server_address}/api/v1/QuestEditor/summaries"
|
|
headers = {
|
|
"Authorization": f"Bearer {access_token}"
|
|
}
|
|
|
|
response = session.get(api_url, headers=headers)
|
|
|
|
for quest in response.json()["summaries"]:
|
|
questContentId = quest["questContentId"]
|
|
|
|
api_url = f"{server_address}/api/v1/QuestEditor/quest/{questContentId}"
|
|
response = session.delete(api_url, headers=headers)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
parser = argparse.ArgumentParser(prog='insert-quest', description='insert quest')
|
|
parser.add_argument('--env', required=True, type=str, help=f'')
|
|
parser.add_argument('--login_id', required=True, type=str, help=f'')
|
|
parser.add_argument('--folder', required=True, type=str, help=f'')
|
|
args = parser.parse_args()
|
|
|
|
print(args.env)
|
|
print(args.login_id)
|
|
print(args.folder)
|
|
|
|
server_address = ""
|
|
if args.env == "local":
|
|
server_address="http://localhost:11000/"
|
|
elif args.env == "aws":
|
|
server_address="https://dev-ugqapi.caliverse.io:11000"
|
|
|
|
print(f'server_address: {server_address}')
|
|
|
|
api_url = f"{server_address}/api/v1/Account/dev-login-v2"
|
|
body = {
|
|
"loginAccountId": args.login_id
|
|
}
|
|
|
|
response = session.post(api_url, json=body)
|
|
|
|
access_token = response.json()["accessToken"]
|
|
user_guid = response.json()["userGuid"]
|
|
|
|
print(access_token)
|
|
|
|
delete_all_quest(server_address, access_token)
|
|
|
|
questContentId = ""
|
|
with open(f'{args.folder}/QuestContent.json', encoding='utf-8') as json_file:
|
|
json_data = json.load(json_file)
|
|
|
|
api_url = f"{server_address}/api/v1/QuestEditor/quest"
|
|
headers = {
|
|
"Authorization": f"Bearer {access_token}",
|
|
"accept-language": "ko"
|
|
}
|
|
response = session.post(api_url, json=json_data, headers=headers)
|
|
print(json.dumps(response.json(), ensure_ascii=False, indent=4))
|
|
questContentId = response.json()["questContentId"]
|
|
|
|
for file in glob.glob(f"{args.folder}/QuestDialog*.json"):
|
|
with open(file, encoding='utf-8') as json_file:
|
|
json_data = json.load(json_file)
|
|
|
|
result = re.search('\\[(.*)\\]', file)
|
|
index = result.group(1)
|
|
print(f"{file} -> {index}")
|
|
|
|
api_url = f"{server_address}/api/v1/QuestEditor/quest-dialog/{questContentId}?taskIndex={index}"
|
|
response = session.post(api_url, json=json_data, headers=headers)
|
|
print(json.dumps(response.json(), ensure_ascii=False, indent=4))
|
|
|
|
api_url = f"{server_address}/api/v1/QuestEditor/quest-image/{questContentId}?titleImageId=1&bannerImageId=2"
|
|
response = session.post(api_url, headers=headers)
|
|
print(json.dumps(response.json(), ensure_ascii=False, indent=4))
|
|
|
|
api_url = f"{server_address}/api/v1/QuestEditor/quest-state/{questContentId}?state=Test"
|
|
response = session.patch(api_url, headers=headers)
|
|
print(json.dumps(response.json(), ensure_ascii=False, indent=4))
|
|
|
|
quest_id = response.json()["questId"]
|
|
revision = response.json()["revision"]
|
|
|
|
## ingame api
|
|
api_url = f"{server_address}/api/v1/InGame/set-test-completed/{user_guid}?questId={quest_id}&revision={revision}"
|
|
response = session.post(api_url)
|
|
|
|
## web api
|
|
api_url = f"{server_address}/api/v1/QuestEditor/quest-state/{questContentId}?state=Live"
|
|
response = session.patch(api_url, json=json_data, headers=headers)
|
|
print(json.dumps(response.json(), ensure_ascii=False, indent=4))
|
|
|
|
change_state(server_address, access_token, questContentId, "Standby")
|
|
change_state(server_address, access_token, questContentId, "Editable")
|
|
response = change_state(server_address, access_token, questContentId, "Test")
|
|
|
|
questContentId = response.json()["questContentId"]
|
|
quest_id = response.json()["questId"]
|
|
revision = response.json()["revision"]
|
|
|
|
api_url = f"{server_address}/api/v1/InGame/set-test-completed/{user_guid}?questId={quest_id}&revision={revision}"
|
|
response = session.post(api_url)
|
|
|
|
change_state(server_address, access_token, questContentId, "Live")
|
|
|
|
|
|
|
|
|
|
|