├── .gitignore ├── .gitattributes ├── takasho ├── schema │ ├── fes │ │ ├── resource │ │ │ ├── club │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ ├── club_chat │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ ├── club_role │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ ├── friend │ │ │ │ └── v1_pb2_grpc.py │ │ │ ├── club_player │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ ├── club_preference │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ ├── club_storage │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ ├── login_bonus │ │ │ │ └── v1_pb2_grpc.py │ │ │ ├── score_ranking │ │ │ │ └── v1_pb2_grpc.py │ │ │ ├── club_achievement │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.py │ │ │ │ └── v1_pb2.pyi │ │ │ ├── comeback_login_bonus │ │ │ │ └── v1_pb2_grpc.py │ │ │ ├── player_event_log │ │ │ │ └── v1_pb2_grpc.py │ │ │ ├── player_preference │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ ├── reconstruction_spot │ │ │ │ └── v1_pb2_grpc.py │ │ │ ├── player_regular_ranking │ │ │ │ ├── v1_pb2_grpc.py │ │ │ │ ├── v1_pb2.pyi │ │ │ │ └── v1_pb2.py │ │ │ └── subscription │ │ │ │ └── renewal_reward │ │ │ │ └── v1_pb2_grpc.py │ │ └── player_api │ │ │ ├── zendesk_pb2.pyi │ │ │ ├── zendesk.py │ │ │ ├── club_achievement.py │ │ │ ├── zendesk_pb2.py │ │ │ ├── subscription │ │ │ ├── renewal_reward.py │ │ │ └── renewal_reward_pb2.pyi │ │ │ ├── club_chat.py │ │ │ ├── regular_ranking.py │ │ │ ├── reconstruction_spot.py │ │ │ ├── reconstruction_spot_pb2.pyi │ │ │ ├── regular_ranking_pb2.pyi │ │ │ ├── club_achievement_pb2.pyi │ │ │ └── login_bonus.py │ └── common_featureset │ │ ├── resource │ │ ├── system │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── wallet │ │ │ ├── v3_pb2_grpc.py │ │ │ ├── v3_pb2.pyi │ │ │ └── v3_pb2.py │ │ ├── achievement │ │ │ └── v1_pb2_grpc.py │ │ ├── game_status │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── login_bonus │ │ │ └── v1_pb2_grpc.py │ │ ├── loot_box │ │ │ └── v3_pb2_grpc.py │ │ ├── announcement │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── baas_product │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── game_message │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── game_product │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.py │ │ │ └── v1_pb2.pyi │ │ ├── ondemand_master │ │ │ ├── v2_pb2_grpc.py │ │ │ ├── v2_pb2.pyi │ │ │ └── v2_pb2.py │ │ ├── player_event_log │ │ │ └── v1_pb2_grpc.py │ │ ├── player_inventory │ │ │ └── v1_pb2_grpc.py │ │ ├── player_key_value │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── player_storage │ │ │ ├── v2_pb2_grpc.py │ │ │ ├── v2_pb2.pyi │ │ │ └── v2_pb2.py │ │ ├── step_up_loot_box │ │ │ ├── v1_pb2_grpc.py │ │ │ └── v2_pb2_grpc.py │ │ ├── consume_resource_set │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── extra_announcement │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ ├── player_achievement │ │ │ ├── v1_pb2_grpc.py │ │ │ ├── v1_pb2.pyi │ │ │ └── v1_pb2.py │ │ └── player_preference │ │ │ ├── v1_pb2_grpc.py │ │ │ └── v1_pb2.py │ │ └── player_api │ │ ├── player_storage.6.hex │ │ ├── player_storage.3.hex │ │ ├── player_storage.2.hex │ │ ├── player_event_log_pb2.pyi │ │ ├── player_storage.4.hex │ │ ├── player_storage.5.hex │ │ ├── ondemand_master_pb2.pyi │ │ ├── player_event_log.py │ │ ├── game_status_pb2.pyi │ │ ├── baas_product_pb2.pyi │ │ ├── game_status.py │ │ ├── player_storage.7.hex │ │ ├── announcement.py │ │ ├── wallet.py │ │ ├── wallet_pb2.pyi │ │ ├── game_message.py │ │ ├── game_status_pb2.py │ │ ├── player_event_log_pb2.py │ │ ├── ondemand_master_pb2.py │ │ ├── baas_product_pb2.py │ │ ├── step_up_loot_box.py │ │ └── push_notification_pb2.pyi └── shared_storage.py ├── protos └── takasho │ └── schema │ ├── common_featureset │ ├── resource │ │ ├── ondemand_master │ │ │ └── v2.proto │ │ ├── game_status │ │ │ └── v1.proto │ │ ├── game_message │ │ │ └── v1.proto │ │ ├── player_achievement │ │ │ └── v1.proto │ │ ├── announcement │ │ │ └── v1.proto │ │ ├── player_storage │ │ │ └── v2.proto │ │ ├── wallet │ │ │ ├── v1.proto │ │ │ ├── v3.proto │ │ │ └── v2.proto │ │ ├── extra_announcement │ │ │ └── v1.proto │ │ ├── player_key_value │ │ │ └── v1.proto │ │ ├── consume_resource_set │ │ │ └── v1.proto │ │ ├── game_product │ │ │ └── v1.proto │ │ ├── system │ │ │ └── v1.proto │ │ ├── baas_product │ │ │ └── v1.proto │ │ ├── player_preference │ │ │ └── v1.proto │ │ ├── login_bonus │ │ │ └── v1.proto │ │ ├── achievement │ │ │ └── v1.proto │ │ ├── player_inventory │ │ │ └── v1.proto │ │ └── player_event_log │ │ │ └── v1.proto │ └── player_api │ │ ├── player_event_log.proto │ │ ├── ondemand_master.proto │ │ ├── game_status.proto │ │ ├── baas_product.proto │ │ ├── wallet.proto │ │ ├── announcement.proto │ │ ├── push_notification.proto │ │ ├── game_message.proto │ │ └── player_storage.proto │ └── fes │ ├── resource │ ├── player_preference │ │ └── v1.proto │ ├── player_regular_ranking │ │ └── v1.proto │ ├── club_role │ │ └── v1.proto │ ├── club_storage │ │ └── v1.proto │ ├── club │ │ └── v1.proto │ ├── club_preference │ │ └── v1.proto │ ├── club_achievement │ │ └── v1.proto │ ├── club_player │ │ └── v1.proto │ ├── club_chat │ │ └── v1.proto │ ├── subscription │ │ └── renewal_reward │ │ │ └── v1.proto │ ├── reconstruction_spot │ │ └── v1.proto │ ├── friend │ │ └── v1.proto │ ├── comeback_login_bonus │ │ └── v1.proto │ └── login_bonus │ │ └── v1.proto │ └── player_api │ ├── zendesk.proto │ ├── regular_ranking.proto │ ├── club_achievement.proto │ ├── reconstruction_spot.proto │ ├── subscription │ └── renewal_reward.proto │ ├── player_preference.proto │ ├── login_bonus.proto │ ├── club_chat.proto │ └── club_player.proto ├── README.md ├── keys ├── privkey1.pem ├── generate_keys.cmd ├── lcx.crt ├── grpc.crt ├── lcx_ios.crt ├── grpc.key ├── lcx.key └── lcx_ios.key ├── assets.py ├── main.py ├── lcx_server.py ├── lcx_server_ios.py ├── LICENSE └── grpc_debug.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | assets/* 3 | debug/* 4 | pcap/* 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_chat/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_role/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/friend/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_player/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_preference/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_storage/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/login_bonus/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/score_ranking/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/system/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/wallet/v3_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_achievement/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/comeback_login_bonus/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/player_event_log/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/player_preference/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/reconstruction_spot/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/achievement/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_status/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/login_bonus/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/loot_box/v3_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/player_regular_ranking/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/ondemand_master/v2.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.ondemand_master.v2; 3 | 4 | message Entry { 5 | string key = 1; 6 | bytes value = 2; 7 | } 8 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/announcement/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/baas_product/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_message/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_product/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/ondemand_master/v2_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_event_log/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_inventory/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_key_value/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_storage/v2_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/step_up_loot_box/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/step_up_loot_box/v2_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/subscription/renewal_reward/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dankagu-local 2 | Touhou Danmaku Kagura Local Server 3 | 4 | ## Required Python Packages 5 | - dnslib 6 | - netifaces 7 | - requests 8 | - grpcio 9 | - grpcio-tools 10 | - grpc-interceptor 11 | - pbkdf2 12 | - pycryptodomex 13 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/consume_resource_set/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/extra_announcement/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_achievement/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_preference/v1_pb2_grpc.py: -------------------------------------------------------------------------------- 1 | # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! 2 | """Client and server classes corresponding to protobuf-defined services.""" 3 | import grpc 4 | 5 | -------------------------------------------------------------------------------- /keys/privkey1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6J/upJb3FNv7xXQN 3 | hv5eRmpkXGHM7EI8piNg7p8QseyhRANCAARvutRQ0SwiH4oa7ZgmOL0tv+94QeQX 4 | b9I6W/rEyr1Rs+WPKaBzyNPOQYlTP2Aaugz/XDu/KXfZ0HrBvARKGxAz 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/player_preference/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.player_preference.v1; 3 | 4 | message PlayerPreference { 5 | string player_id = 1; 6 | uint64 player_level = 2; 7 | bool is_my_space_released = 3; 8 | } 9 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/game_status/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.game_status.v1; 3 | 4 | message Value { 5 | int64 value = 1; 6 | } 7 | 8 | message Status { 9 | int64 value = 1; 10 | bool status = 2; 11 | } 12 | -------------------------------------------------------------------------------- /assets.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | # Change this to where the assets directory is located on your PC 4 | _asset_dir = 'assets' 5 | 6 | 7 | def asset(path): 8 | global _asset_dir 9 | data = b'' 10 | with open(os.path.join(_asset_dir, path), 'rb') as f: 11 | data = f.read() 12 | return data 13 | 14 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/player_regular_ranking/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.player_regular_ranking.v1; 3 | 4 | message PlayerRegularRanking { 5 | string ranking_key = 1; 6 | string player_id = 2; 7 | string nick_name = 3; 8 | int64 rank = 4; 9 | int64 score = 5; 10 | } 11 | -------------------------------------------------------------------------------- /takasho/shared_storage.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | """For instantiating objects acting as shared storage between modules/classes 4 | """ 5 | class SharedStorage(): 6 | 7 | def __init__(self): 8 | # Player storage revision 9 | self.revision = 'b69e1df8-2e05-48c9-bdb2-5a09bc8c7f4c' 10 | 11 | 12 | shared_storage = SharedStorage() 13 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/game_message/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.game_message.v1; 3 | 4 | message GameMessage { 5 | string message_id = 1; 6 | bool is_received = 2; 7 | string title = 3; 8 | string message = 4; 9 | bytes extra = 5; 10 | sint64 created_at = 6; 11 | } 12 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/zendesk.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api; 3 | 4 | message ZendeskGetUnreadCountV1 { 5 | message Request {} 6 | 7 | message Response { 8 | int64 unread_count = 1; 9 | } 10 | } 11 | 12 | service Zendesk { 13 | rpc GetUnreadCountV1(ZendeskGetUnreadCountV1.Request) returns (ZendeskGetUnreadCountV1.Response) {} 14 | } 15 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/club_role/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.club_role.v1; 3 | 4 | enum ClubRole { 5 | UNKNOWN_ROLE = 0; 6 | LEADER = 1; 7 | SUB_LEADER = 2; 8 | MEMBER = 3; 9 | } 10 | 11 | enum ClubUpdateRoleType { 12 | UNKNOWN_UPDATE_TYPE = 0; 13 | ASSIGN_SUBLEADER = 1; 14 | UNASSIGN_SUBLEADER = 2; 15 | REPLACE_LEADER = 3; 16 | } 17 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_storage.6.hex: -------------------------------------------------------------------------------- 1 | 0a89010a2462373132346235362d336661342d343237612d386464302d363465633838333032393465120f4d7953706f745374617475732d2d311a440801180120092a3362ffffffffffffffffff01ffffffffffffffffff01ffffffffffffffffff01ffffffffffffffffff01ffffffffffffffffff0138e0b4939a0648d51020bef0e6900c28d8e9a6b40c122462363965316466382d326530352d343863392d626462322d356130396263386337663463 -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/player_achievement/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.player_achievement.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/achievement/v1.proto"; 5 | 6 | message PlayerAchievement { 7 | takasho.schema.common_featureset.resource.achievement.v1.Achievement achievement = 1; 8 | sint64 last_unlocked_at = 2; 9 | } 10 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/club_storage/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.club_storage.v1; 3 | 4 | message ClubStorageEntry { 5 | string club_id = 1; 6 | string key = 2; 7 | bytes value = 3; 8 | } 9 | 10 | message Criterion { 11 | enum MatchingType { 12 | EXACT = 0; 13 | FORWARD = 1; 14 | } 15 | 16 | string key = 1; 17 | MatchingType matching_type = 2; 18 | } 19 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/announcement/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.announcement.v1; 3 | 4 | message Announcement { 5 | string id = 1; 6 | string language_code = 2; 7 | string title = 3; 8 | sint64 opened_at = 4; 9 | sint64 closed_at = 5; 10 | bytes value = 6; 11 | repeated AnnouncementContent contents = 7; 12 | } 13 | 14 | message AnnouncementContent { 15 | string schema_key = 1; 16 | bytes value = 2; 17 | } 18 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/player_storage/v2.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.player_storage.v2; 3 | 4 | message Entry { 5 | string player_id = 1; 6 | string key = 2; 7 | bytes value = 3; 8 | sint64 created_at = 4; 9 | sint64 updated_at = 5; 10 | } 11 | 12 | message Criterion { 13 | enum MatchingType { 14 | EXACT = 0; 15 | FORWARD = 1; 16 | } 17 | 18 | string key = 1; 19 | MatchingType matching_type = 2; 20 | } 21 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/club/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.club.v1; 3 | 4 | import "takasho/schema/fes/resource/club_preference/v1.proto"; 5 | import "takasho/schema/fes/resource/club_storage/v1.proto"; 6 | 7 | message Club { 8 | string club_id = 1; 9 | sint64 organized_at = 2; 10 | takasho.schema.fes.resource.club_preference.v1.ClubPreference preference = 3; 11 | repeated takasho.schema.fes.resource.club_storage.v1.ClubStorageEntry club_storage_entries = 4; 12 | } 13 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/wallet/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.wallet.v1; 3 | 4 | message Wallet { 5 | option deprecated = true; 6 | 7 | enum Platform { 8 | NONE = 0; 9 | APPLE = 1; 10 | GOOGLE = 2; 11 | } 12 | 13 | message Balance { 14 | sint64 free = 1; 15 | sint64 paid = 2; 16 | sint64 total = 3; 17 | } 18 | 19 | string virtual_currency_name = 1; 20 | Platform platform = 2; 21 | Balance balance = 3; 22 | } 23 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/extra_announcement/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.extra_announcement.v1; 3 | 4 | message ExtraAnnouncement { 5 | string id = 1; 6 | string language_code = 2; 7 | string title = 3; 8 | sint64 opened_at = 4; 9 | sint64 closed_at = 5; 10 | bytes value = 6; 11 | repeated ExtraAnnouncementContent contents = 7; 12 | } 13 | 14 | message ExtraAnnouncementContent { 15 | string schema_key = 1; 16 | bytes value = 2; 17 | } 18 | -------------------------------------------------------------------------------- /keys/generate_keys.cmd: -------------------------------------------------------------------------------- 1 | openssl req -x509 -newkey rsa:2048 -sha256 -nodes -keyout grpc.key -out grpc.crt -subj "/CN=player-api-local.dena-takasho.com" -days 36500 2 | openssl req -x509 -newkey rsa:2048 -sha256 -nodes -keyout lcx.key -out lcx.crt -subj "/CN=danmakujp4-local.lcx.tokyo" -days 36500 3 | openssl req -x509 -newkey rsa:2048 -sha256 -nodes -keyout lcx_ios.key -out lcx_ios.crt -subj "/C=JP/ST=Tokyo/L=Shibuya-ku/O=DeNA Co., Ltd./CN=danmakujp4-v1.lcx.tokyo" -addext extendedKeyUsage=serverAuth -addext subjectAltName=DNS:danmakujp4-v1.lcx.tokyo -days 365 4 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/player_key_value/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.player_key_value.v1; 3 | 4 | enum OperationType { 5 | UNKNOWN = 0; 6 | INCREASE = 1; 7 | DECREASE = 2; 8 | } 9 | 10 | message PlayerKeyValue { 11 | string key = 1; 12 | sint64 value = 2; 13 | sint64 expired_at = 3; 14 | } 15 | 16 | message PlayerKeyValueIncrementInfo { 17 | string key = 1; 18 | sint64 delta = 2; 19 | } 20 | 21 | message PlayerKeyValueUpdateInfo { 22 | string key = 1; 23 | sint64 amount = 2; 24 | } 25 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/ondemand_master/v2_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf import descriptor as _descriptor 2 | from google.protobuf import message as _message 3 | from typing import ClassVar as _ClassVar, Optional as _Optional 4 | 5 | DESCRIPTOR: _descriptor.FileDescriptor 6 | 7 | class Entry(_message.Message): 8 | __slots__ = ["key", "value"] 9 | KEY_FIELD_NUMBER: _ClassVar[int] 10 | VALUE_FIELD_NUMBER: _ClassVar[int] 11 | key: str 12 | value: bytes 13 | def __init__(self, key: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ... 14 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/player_event_log.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | import "takasho/schema/common_featureset/resource/player_event_log/v1.proto"; 5 | 6 | message PlayerEventLogSendV1 { 7 | message Request { 8 | repeated takasho.schema.common_featureset.resource.player_event_log.v1.PlayerEventLog player_event_logs = 1; 9 | } 10 | 11 | message Response {} 12 | } 13 | 14 | service PlayerEventLog { 15 | rpc SendV1(PlayerEventLogSendV1.Request) returns (PlayerEventLogSendV1.Response) {} 16 | } 17 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/club_preference/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.club_preference.v1; 3 | 4 | message ClubPreference { 5 | enum PlayStyle { 6 | UNKNOWN_STYLE = 0; 7 | MATTARI = 1; 8 | GATTSURI = 2; 9 | BEGINNER = 3; 10 | } 11 | 12 | enum ApprovalPolicy { 13 | UNKNOWN_POLICY = 0; 14 | MANUAL = 1; 15 | AUTO = 2; 16 | } 17 | 18 | string name = 1; 19 | string profile = 2; 20 | PlayStyle play_style = 3; 21 | ApprovalPolicy approval_policy = 4; 22 | bool searchable = 5; 23 | string character_id = 6; 24 | } 25 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_storage.3.hex: -------------------------------------------------------------------------------- 1 | 0af4010a2462373132346235362d336661342d343237612d386464302d36346563383833303239346512244d697373696f6e537461747573436f6c6c656374696f6e2d5631303031392d31303031391a990108a34e1208088a9fb7a92510021208088b9fb7a92510011208088d9fb7a92510021208088e9fb7a9251001120808899fb7a92510011208088c9fb7a92510011208088f9fb7a9251003120808919fb7a925100a1a08088a9fb7a92510011a08088b9fb7a92510011a08088d9fb7a92510011a08088e9fb7a92510011a08088c9fb7a92510011a08088f9fb7a92510011a0808919fb7a925100120a49e9cb40c28dccdb6b40c122462363965316466382d326530352d343863392d626462322d356130396263386337663463 -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/club_achievement/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.club_achievement.v1; 3 | 4 | enum ResetType { 5 | NONE = 0; 6 | DATE_LINE = 1; 7 | WEEK_LINE = 2; 8 | } 9 | 10 | message ClubAchievement { 11 | string club_achievement_id = 1; 12 | bytes value = 2; 13 | sint64 opened_at = 3; 14 | sint64 closed_at = 4; 15 | ResetType reset_type = 5; 16 | string date_line = 6; 17 | sint64 day_of_week = 7; 18 | string category = 8; 19 | uint64 points = 9; 20 | bool unlocked = 10; 21 | } 22 | 23 | message Criteria { 24 | string category = 1; 25 | } 26 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/wallet/v3.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.wallet.v3; 3 | 4 | message Wallet { 5 | enum Platform { 6 | NONE = 0; 7 | APPLE = 1; 8 | GOOGLE = 2; 9 | } 10 | 11 | message VirtualCurrency { 12 | string virtual_currency_name = 1; 13 | Platform platform = 2; 14 | sint64 amount = 3; 15 | } 16 | 17 | message PlayerKeyValue { 18 | string key = 1; 19 | sint64 amount = 2; 20 | } 21 | 22 | repeated VirtualCurrency virtual_currencies = 1; 23 | repeated PlayerKeyValue player_key_values = 2; 24 | } 25 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/ondemand_master.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | import "takasho/schema/common_featureset/resource/ondemand_master/v2.proto"; 5 | 6 | message OndemandMasterGetEntriesV2 { 7 | message Request { 8 | repeated string keys = 1; 9 | } 10 | 11 | message Response { 12 | repeated takasho.schema.common_featureset.resource.ondemand_master.v2.Entry entries = 1; 13 | } 14 | } 15 | 16 | service OndemandMaster { 17 | rpc GetEntriesV1(OndemandMasterGetEntriesV2.Request) returns (OndemandMasterGetEntriesV2.Response) {} 18 | } 19 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/consume_resource_set/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.consume_resource_set.v1; 3 | 4 | enum ResourceType { 5 | VIRTUAL_CURRENCY = 0; 6 | PLAYER_KEY_VALUE = 1; 7 | NO_CONSUME = 2; 8 | } 9 | 10 | message ConsumeResourceSet { 11 | string consume_resource_set_id = 1; 12 | ResourceType resource_type = 2; 13 | sint64 amount = 3; 14 | repeated ConsumeResource consume_resources = 4; 15 | } 16 | 17 | message ConsumeResource { 18 | string consume_resource_id = 1; 19 | string resource_key = 2; 20 | sint64 priority = 3; 21 | } 22 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/game_status.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | import "takasho/schema/common_featureset/resource/game_status/v1.proto"; 5 | 6 | message GameStatusGetV1 { 7 | message Request { 8 | repeated takasho.schema.common_featureset.resource.game_status.v1.Value values = 1; 9 | } 10 | 11 | message Response { 12 | repeated takasho.schema.common_featureset.resource.game_status.v1.Status statuses = 1; 13 | } 14 | } 15 | 16 | service GameStatus { 17 | rpc GetV1(GameStatusGetV1.Request) returns (GameStatusGetV1.Response) {} 18 | } 19 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_storage.2.hex: -------------------------------------------------------------------------------- 1 | 0a88020a2462373132346235362d336661342d343237612d386464302d36346563383833303239346512244d697373696f6e537461747573436f6c6c656374696f6e2d5631303031382d31303031381aad0108a24e120808e699faa8251001120808e599faa8251001120808e999faa8251002120808e899faa8251001120808e799faa825100a120808ea99faa8251001120808ec99faa8251002120808ed99faa8251001120808f099faa82510011a0808e699faa82510011a0808e599faa82510011a0808e999faa82510011a0808e799faa82510011a0808ea99faa82510011a0808ec99faa82510011a0808ed99faa82510011a0808f099faa825100120e2f792b40c28b6cbb6b40c122462363965316466382d326530352d343863392d626462322d356130396263386337663463 -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/baas_product.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | import "takasho/schema/common_featureset/resource/baas_product/v1.proto"; 5 | 6 | message BaasProductGetAvailableByIDsV1 { 7 | message Request { 8 | repeated string product_ids = 1; 9 | } 10 | 11 | message Response { 12 | repeated takasho.schema.common_featureset.resource.baas_product.v1.BaasProduct baas_products = 1; 13 | } 14 | } 15 | 16 | service BaasProduct { 17 | rpc GetAvailableByIDsV1(BaasProductGetAvailableByIDsV1.Request) returns (BaasProductGetAvailableByIDsV1.Response) {} 18 | } 19 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/club_player/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.club_player.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_storage/v2.proto"; 5 | import "takasho/schema/fes/resource/club_role/v1.proto"; 6 | 7 | message ClubPlayer { 8 | string player_id = 1; 9 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry player_storage_entries = 2; 10 | string nickname = 3; 11 | uint64 frame = 4; 12 | takasho.schema.fes.resource.club_role.v1.ClubRole role = 5; 13 | sint64 joined_at = 6; 14 | sint64 last_logged_in_at = 7; 15 | string player_short_id = 8; 16 | } 17 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/game_product/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.game_product.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/consume_resource_set/v1.proto"; 5 | 6 | message GameProduct { 7 | string game_product_id = 1; 8 | string schema_key = 6; 9 | bytes value = 7; 10 | string inventory_message = 8; 11 | sint64 opened_at = 9; 12 | sint64 closed_at = 10; 13 | sint64 receivable_sec = 11; 14 | string search_label = 12; 15 | repeated takasho.schema.common_featureset.resource.consume_resource_set.v1.ConsumeResourceSet consume_resource_sets = 13; 16 | repeated string labels = 14; 17 | } 18 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/system/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.system.v1; 3 | 4 | enum PlatformType { 5 | UNKNOWN = 0; 6 | GOOGLE = 1; 7 | APPLE = 2; 8 | EDITOR = 3; 9 | } 10 | 11 | enum BaasType { 12 | NPF = 0; 13 | LCX = 1; 14 | } 15 | 16 | message DeviceInfo { 17 | PlatformType platform = 1; 18 | } 19 | 20 | message PlayerStatus { 21 | sint64 status = 1; 22 | string description = 2; 23 | sint64 expired_at = 3; 24 | bool has_expired_at = 4; 25 | } 26 | 27 | message BanStatus { 28 | sint64 status = 1; 29 | string description = 2; 30 | sint64 expired_at = 3; 31 | bool has_expired_at = 4; 32 | } 33 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/baas_product/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.baas_product.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 5 | 6 | message BaasProduct { 7 | string baas_product_id = 1; 8 | string inventory_message = 2; 9 | repeated BaasProductExtra extras = 3; 10 | } 11 | 12 | message BaasProductExtra { 13 | string baas_product_extra_id = 1; 14 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 2; 15 | string schema_key = 3; 16 | bytes value = 4; 17 | string system_resource_name = 5; 18 | sint64 system_resource_num = 6; 19 | string search_label = 7; 20 | } 21 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/zendesk_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf import descriptor as _descriptor 2 | from google.protobuf import message as _message 3 | from typing import ClassVar as _ClassVar, Optional as _Optional 4 | 5 | DESCRIPTOR: _descriptor.FileDescriptor 6 | 7 | class ZendeskGetUnreadCountV1(_message.Message): 8 | __slots__ = [] 9 | class Request(_message.Message): 10 | __slots__ = [] 11 | def __init__(self) -> None: ... 12 | class Response(_message.Message): 13 | __slots__ = ["unread_count"] 14 | UNREAD_COUNT_FIELD_NUMBER: _ClassVar[int] 15 | unread_count: int 16 | def __init__(self, unread_count: _Optional[int] = ...) -> None: ... 17 | def __init__(self) -> None: ... 18 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_role/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 2 | from google.protobuf import descriptor as _descriptor 3 | from typing import ClassVar as _ClassVar 4 | 5 | ASSIGN_SUBLEADER: ClubUpdateRoleType 6 | DESCRIPTOR: _descriptor.FileDescriptor 7 | LEADER: ClubRole 8 | MEMBER: ClubRole 9 | REPLACE_LEADER: ClubUpdateRoleType 10 | SUB_LEADER: ClubRole 11 | UNASSIGN_SUBLEADER: ClubUpdateRoleType 12 | UNKNOWN_ROLE: ClubRole 13 | UNKNOWN_UPDATE_TYPE: ClubUpdateRoleType 14 | 15 | class ClubRole(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 16 | __slots__ = [] 17 | 18 | class ClubUpdateRoleType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 19 | __slots__ = [] 20 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_status/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf import descriptor as _descriptor 2 | from google.protobuf import message as _message 3 | from typing import ClassVar as _ClassVar, Optional as _Optional 4 | 5 | DESCRIPTOR: _descriptor.FileDescriptor 6 | 7 | class Status(_message.Message): 8 | __slots__ = ["status", "value"] 9 | STATUS_FIELD_NUMBER: _ClassVar[int] 10 | VALUE_FIELD_NUMBER: _ClassVar[int] 11 | status: bool 12 | value: int 13 | def __init__(self, value: _Optional[int] = ..., status: bool = ...) -> None: ... 14 | 15 | class Value(_message.Message): 16 | __slots__ = ["value"] 17 | VALUE_FIELD_NUMBER: _ClassVar[int] 18 | value: int 19 | def __init__(self, value: _Optional[int] = ...) -> None: ... 20 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/player_preference/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf import descriptor as _descriptor 2 | from google.protobuf import message as _message 3 | from typing import ClassVar as _ClassVar, Optional as _Optional 4 | 5 | DESCRIPTOR: _descriptor.FileDescriptor 6 | 7 | class PlayerPreference(_message.Message): 8 | __slots__ = ["is_my_space_released", "player_id", "player_level"] 9 | IS_MY_SPACE_RELEASED_FIELD_NUMBER: _ClassVar[int] 10 | PLAYER_ID_FIELD_NUMBER: _ClassVar[int] 11 | PLAYER_LEVEL_FIELD_NUMBER: _ClassVar[int] 12 | is_my_space_released: bool 13 | player_id: str 14 | player_level: int 15 | def __init__(self, player_id: _Optional[str] = ..., player_level: _Optional[int] = ..., is_my_space_released: bool = ...) -> None: ... 16 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/wallet/v2.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.wallet.v2; 3 | 4 | message Wallet { 5 | option deprecated = true; 6 | 7 | enum Platform { 8 | NONE = 0; 9 | APPLE = 1; 10 | GOOGLE = 2; 11 | } 12 | 13 | message Balance { 14 | sint64 free = 1; 15 | sint64 paid = 2; 16 | sint64 total = 3; 17 | } 18 | 19 | message VirtualCurrency { 20 | string virtual_currency_name = 1; 21 | Platform platform = 2; 22 | Balance balance = 3; 23 | } 24 | 25 | message PlayerKeyValue { 26 | string key = 1; 27 | sint64 amount = 2; 28 | } 29 | 30 | repeated VirtualCurrency virtual_currencies = 1; 31 | repeated PlayerKeyValue player_key_values = 2; 32 | } 33 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/club_chat/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.club_chat.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_storage/v2.proto"; 5 | 6 | enum MessageType { 7 | UNKNOWN = 0; 8 | COMMENT = 1; 9 | NOTIFICATION = 2; 10 | ACHIEVEMENT = 3; 11 | STAMP = 4; 12 | } 13 | 14 | message ClubChatMessage { 15 | string club_id = 1; 16 | string message_id = 2; 17 | MessageType message_type = 3; 18 | string content = 4; 19 | ClubChatMessagePlayer player = 5; 20 | sint64 posted_at = 6; 21 | } 22 | 23 | message ClubChatMessagePlayer { 24 | string player_id = 1; 25 | string nickname = 2; 26 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry player_storage_entries = 3; 27 | } 28 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/player_preference/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.player_preference.v1; 3 | 4 | enum AllowFriendRequestType { 5 | NO_PREFERENCE = 0; 6 | ALLOW_ALL = 1; 7 | FORBID_ALL = 2; 8 | } 9 | 10 | message PlayerPreference { 11 | sint64 birth_year = 2; 12 | sint64 birth_month = 3; 13 | string country = 4; 14 | string language = 5; 15 | bool opt_out = 6; 16 | string consented_tos_version = 7; 17 | sint64 created_at = 8; 18 | sint64 updated_at = 9; 19 | string nickname = 10; 20 | string consented_privacy_policy_version = 11; 21 | sint64 nickname_updated_at = 12; 22 | AllowFriendRequestType allow_friend_request = 13; 23 | sint64 max_friend_number = 14; 24 | sint64 max_friend_request_queue_length = 15; 25 | } 26 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_achievement/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.achievement import v1_pb2 as _v1_pb2 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union 5 | 6 | DESCRIPTOR: _descriptor.FileDescriptor 7 | 8 | class PlayerAchievement(_message.Message): 9 | __slots__ = ["achievement", "last_unlocked_at"] 10 | ACHIEVEMENT_FIELD_NUMBER: _ClassVar[int] 11 | LAST_UNLOCKED_AT_FIELD_NUMBER: _ClassVar[int] 12 | achievement: _v1_pb2.Achievement 13 | last_unlocked_at: int 14 | def __init__(self, achievement: _Optional[_Union[_v1_pb2.Achievement, _Mapping]] = ..., last_unlocked_at: _Optional[int] = ...) -> None: ... 15 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/subscription/renewal_reward/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.subscription.renewal_reward.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 5 | 6 | message RenewalReward { 7 | string reward_id = 1; 8 | string subscription_product_id = 2; 9 | sint64 opened_at = 3; 10 | sint64 closed_at = 4; 11 | repeated RenewalRewardPrize prizes = 5; 12 | bool is_loop = 6; 13 | } 14 | 15 | message RenewalRewardPrize { 16 | string reward_prize_id = 1; 17 | sint64 count = 2; 18 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 3; 19 | string schema_key = 4; 20 | bytes value = 5; 21 | string search_label = 6; 22 | string system_resource_name = 7; 23 | sint64 system_resource_num = 8; 24 | } 25 | 26 | message RenewalCount { 27 | string subscription_product_id = 1; 28 | sint64 count = 2; 29 | } 30 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/player_regular_ranking/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf import descriptor as _descriptor 2 | from google.protobuf import message as _message 3 | from typing import ClassVar as _ClassVar, Optional as _Optional 4 | 5 | DESCRIPTOR: _descriptor.FileDescriptor 6 | 7 | class PlayerRegularRanking(_message.Message): 8 | __slots__ = ["nick_name", "player_id", "rank", "ranking_key", "score"] 9 | NICK_NAME_FIELD_NUMBER: _ClassVar[int] 10 | PLAYER_ID_FIELD_NUMBER: _ClassVar[int] 11 | RANKING_KEY_FIELD_NUMBER: _ClassVar[int] 12 | RANK_FIELD_NUMBER: _ClassVar[int] 13 | SCORE_FIELD_NUMBER: _ClassVar[int] 14 | nick_name: str 15 | player_id: str 16 | rank: int 17 | ranking_key: str 18 | score: int 19 | def __init__(self, ranking_key: _Optional[str] = ..., player_id: _Optional[str] = ..., nick_name: _Optional[str] = ..., rank: _Optional[int] = ..., score: _Optional[int] = ...) -> None: ... 20 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | from multiprocessing import freeze_support, Process 2 | from time import sleep 3 | 4 | import dns 5 | import grpc_server 6 | import lcx_server 7 | import lcx_server_ios 8 | 9 | _lcx_port = 9443 10 | _lcx_ios_port = 443 11 | _dns_port = 53 12 | 13 | 14 | if __name__ == "__main__": 15 | freeze_support() 16 | 17 | grpc_process = Process(target=grpc_server.serve, daemon=True) 18 | grpc_process.start() 19 | 20 | lcx_process = Process( 21 | target=lcx_server.start, args=(_lcx_port,), daemon=True) 22 | lcx_process.start() 23 | 24 | lcx_ios_process = Process( 25 | target=lcx_server_ios.start, args=(_lcx_ios_port,), daemon=True) 26 | lcx_ios_process.start() 27 | 28 | dns.start(_dns_port) 29 | 30 | try: 31 | grpc_process.join() 32 | lcx_process.join() 33 | lcx_ios_process.join() 34 | while True: 35 | sleep(1) 36 | except KeyboardInterrupt: 37 | pass 38 | 39 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/wallet.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | import "takasho/schema/common_featureset/resource/wallet/v3.proto"; 5 | 6 | message WalletGetBalancesV1 { 7 | option deprecated = true; 8 | 9 | message Request {} 10 | 11 | message Response { 12 | repeated takasho.schema.common_featureset.resource.wallet.v3.Wallet balance = 1; 13 | } 14 | } 15 | 16 | message WalletGetBalancesV2 { 17 | message Request { 18 | int64 expired_at = 1; 19 | } 20 | 21 | message Response { 22 | takasho.schema.common_featureset.resource.wallet.v3.Wallet total = 1; 23 | takasho.schema.common_featureset.resource.wallet.v3.Wallet expiration = 2; 24 | int64 expired_at = 3; 25 | } 26 | } 27 | 28 | service Wallet { 29 | rpc GetBalancesV1(WalletGetBalancesV1.Request) returns (WalletGetBalancesV1.Response) {} 30 | rpc GetBalancesV2(WalletGetBalancesV2.Request) returns (WalletGetBalancesV2.Response) {} 31 | } 32 | -------------------------------------------------------------------------------- /lcx_server.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | from ssl import PROTOCOL_TLS_SERVER, SSLContext 3 | import sys 4 | from wsgiref.simple_server import make_server 5 | 6 | from handler import application 7 | 8 | # Port used by the LCX server 9 | _port = 9443 10 | 11 | 12 | def key_path(): 13 | base_path = getattr(sys, '_MEIPASS', path.abspath('.')) 14 | return path.join(base_path, 'keys') 15 | 16 | 17 | def start(port): 18 | with make_server('', port, application) as httpd: 19 | certfile = path.join(key_path(), 'lcx.crt') 20 | keyfile = path.join(key_path(), 'lcx.key') 21 | context = SSLContext(PROTOCOL_TLS_SERVER) 22 | context.load_cert_chain(certfile, keyfile) 23 | httpd.socket = context.wrap_socket(httpd.socket, server_side=True) 24 | # uncomment to debug SSL errors 25 | ## httpd.socket.accept() 26 | 27 | print(f'Serving HTTPS on port {port}...') 28 | httpd.serve_forever() 29 | 30 | 31 | if __name__ == "__main__": 32 | start(_port) 33 | 34 | -------------------------------------------------------------------------------- /lcx_server_ios.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | from ssl import PROTOCOL_TLS_SERVER, SSLContext 3 | import sys 4 | from wsgiref.simple_server import make_server 5 | 6 | from handler import application 7 | 8 | # Port used by the LCX server 9 | _port = 443 10 | 11 | 12 | def key_path(): 13 | base_path = getattr(sys, '_MEIPASS', path.abspath('.')) 14 | return path.join(base_path, 'keys') 15 | 16 | 17 | def start(port): 18 | with make_server('', port, application) as httpd: 19 | certfile = path.join(key_path(), 'lcx_ios.crt') 20 | keyfile = path.join(key_path(), 'lcx_ios.key') 21 | context = SSLContext(PROTOCOL_TLS_SERVER) 22 | context.load_cert_chain(certfile, keyfile) 23 | httpd.socket = context.wrap_socket(httpd.socket, server_side=True) 24 | # uncomment to debug SSL errors 25 | ## httpd.socket.accept() 26 | 27 | print(f'Serving HTTPS on port {port}...') 28 | httpd.serve_forever() 29 | 30 | 31 | if __name__ == "__main__": 32 | start(_port) 33 | 34 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_message/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf import descriptor as _descriptor 2 | from google.protobuf import message as _message 3 | from typing import ClassVar as _ClassVar, Optional as _Optional 4 | 5 | DESCRIPTOR: _descriptor.FileDescriptor 6 | 7 | class GameMessage(_message.Message): 8 | __slots__ = ["created_at", "extra", "is_received", "message", "message_id", "title"] 9 | CREATED_AT_FIELD_NUMBER: _ClassVar[int] 10 | EXTRA_FIELD_NUMBER: _ClassVar[int] 11 | IS_RECEIVED_FIELD_NUMBER: _ClassVar[int] 12 | MESSAGE_FIELD_NUMBER: _ClassVar[int] 13 | MESSAGE_ID_FIELD_NUMBER: _ClassVar[int] 14 | TITLE_FIELD_NUMBER: _ClassVar[int] 15 | created_at: int 16 | extra: bytes 17 | is_received: bool 18 | message: str 19 | message_id: str 20 | title: str 21 | def __init__(self, message_id: _Optional[str] = ..., is_received: bool = ..., title: _Optional[str] = ..., message: _Optional[str] = ..., extra: _Optional[bytes] = ..., created_at: _Optional[int] = ...) -> None: ... 22 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/login_bonus/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.login_bonus.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 5 | 6 | enum ResetType { 7 | DATE_LINE = 0; 8 | TIME_LAPSE = 1; 9 | } 10 | 11 | message LoginBonus { 12 | string login_bonus_id = 1; 13 | sint64 opened_at = 4; 14 | sint64 closed_at = 5; 15 | ResetType reset_type = 6; 16 | string date_line = 7; 17 | sint64 time_lapse = 8; 18 | sint64 last_prize_count = 9; 19 | sint64 last_counted_up_at = 10; 20 | repeated LoginBonusPrize prizes = 11; 21 | bool loop = 12; 22 | } 23 | 24 | message LoginBonusPrize { 25 | string login_bonus_id = 1; 26 | string login_bonus_prize_id = 2; 27 | sint64 prize_count = 3; 28 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 4; 29 | string schema_key = 5; 30 | bytes value = 6; 31 | string search_label = 7; 32 | string resource_name = 8; 33 | sint64 resource_num = 9; 34 | } 35 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/regular_ranking.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api; 3 | 4 | import "takasho/schema/fes/resource/player_regular_ranking/v1.proto"; 5 | 6 | message RegularRankingRegisterV1 { 7 | message Request { 8 | string ranking_key = 1; 9 | int64 score = 2; 10 | } 11 | 12 | message Response { 13 | takasho.schema.fes.resource.player_regular_ranking.v1.PlayerRegularRanking player_ranking = 1; 14 | } 15 | } 16 | 17 | message RegularRankingGetTopRankingV1 { 18 | message Request { 19 | string ranking_key = 1; 20 | sint64 start = 2; 21 | sint64 count = 3; 22 | } 23 | 24 | message Response { 25 | repeated takasho.schema.fes.resource.player_regular_ranking.v1.PlayerRegularRanking player_rankings = 1; 26 | } 27 | } 28 | 29 | service RegularRanking { 30 | rpc RegisterV1(RegularRankingRegisterV1.Request) returns (RegularRankingRegisterV1.Response) {} 31 | rpc GetTopRankingV1(RegularRankingGetTopRankingV1.Request) returns (RegularRankingGetTopRankingV1.Response) {} 32 | } 33 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/reconstruction_spot/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.reconstruction_spot.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 5 | 6 | message Spot { 7 | string spot_id = 1; 8 | uint64 opened_at = 2; 9 | uint64 finished_at = 3; 10 | uint64 closed_at = 4; 11 | string key = 5; 12 | repeated Stage stages = 6; 13 | } 14 | 15 | message Stage { 16 | uint64 stage = 1; 17 | uint64 max_tickets_count = 2; 18 | uint64 opened_at = 3; 19 | uint64 closed_at = 4; 20 | repeated Prize prizes = 5; 21 | uint64 aggregated_tickets_count = 6; 22 | } 23 | 24 | message Prize { 25 | string prize_id = 1; 26 | float ratio = 2; 27 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 3; 28 | string schema_key = 4; 29 | bytes value = 5; 30 | string value_path = 6; 31 | string inventory_message = 7; 32 | string search_label = 8; 33 | string system_resource_name = 9; 34 | sint64 system_resource_num = 10; 35 | bool is_unlocked = 11; 36 | } 37 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/achievement/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.achievement.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 5 | 6 | enum ResetType { 7 | NONE = 0; 8 | DATE_LINE = 1; 9 | WEEK_LINE = 2; 10 | } 11 | 12 | message Achievement { 13 | string achievement_id = 1; 14 | bytes value = 2; 15 | sint64 opened_at = 4; 16 | sint64 closed_at = 5; 17 | ResetType reset_type = 6; 18 | string date_line = 7; 19 | sint64 day_of_week = 8; 20 | repeated AchievementPrize prizes = 11; 21 | string category = 12; 22 | bool unlock = 13; 23 | } 24 | 25 | message AchievementPrize { 26 | string achievement_id = 1; 27 | string achievement_prize_id = 2; 28 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 4; 29 | string schema_key = 5; 30 | bytes value = 6; 31 | string search_label = 7; 32 | string system_resource_name = 8; 33 | sint64 system_resource_num = 9; 34 | } 35 | 36 | message Criterion { 37 | string category = 1; 38 | } 39 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_event_log_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.player_event_log import v1_pb2 as _v1_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class PlayerEventLogSendV1(_message.Message): 10 | __slots__ = [] 11 | class Request(_message.Message): 12 | __slots__ = ["player_event_logs"] 13 | PLAYER_EVENT_LOGS_FIELD_NUMBER: _ClassVar[int] 14 | player_event_logs: _containers.RepeatedCompositeFieldContainer[_v1_pb2.PlayerEventLog] 15 | def __init__(self, player_event_logs: _Optional[_Iterable[_Union[_v1_pb2.PlayerEventLog, _Mapping]]] = ...) -> None: ... 16 | class Response(_message.Message): 17 | __slots__ = [] 18 | def __init__(self) -> None: ... 19 | def __init__(self) -> None: ... 20 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/club_achievement.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api.club_achievement; 3 | 4 | import "takasho/schema/fes/resource/club_achievement/v1.proto"; 5 | 6 | message ClubAchievementGetAvailable { 7 | message Request { 8 | takasho.schema.fes.resource.club_achievement.v1.Criteria criteria = 1; 9 | string page_token = 2; 10 | uint64 max_results = 3; 11 | } 12 | 13 | message Response { 14 | repeated takasho.schema.fes.resource.club_achievement.v1.ClubAchievement achievements = 1; 15 | string next_page_token = 2; 16 | } 17 | } 18 | 19 | message ClubAchievementUnlockAndIncrementClubScalar { 20 | message Request { 21 | string achievement_id = 1; 22 | string scalar_key = 2; 23 | } 24 | 25 | message Response {} 26 | } 27 | 28 | service ClubAchievement { 29 | rpc GetAvailable(ClubAchievementGetAvailable.Request) returns (ClubAchievementGetAvailable.Response) {} 30 | rpc UnlockAndIncrementClubScalar(ClubAchievementUnlockAndIncrementClubScalar.Request) returns (ClubAchievementUnlockAndIncrementClubScalar.Response) {} 31 | } 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 RainbowUnicorn7297 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/zendesk.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.fes.player_api import zendesk_pb2 5 | from takasho.schema.fes.player_api import zendesk_pb2_grpc 6 | 7 | 8 | class Zendesk(zendesk_pb2_grpc.ZendeskServicer): 9 | 10 | def GetUnreadCountV1(self, request, context): 11 | response = zendesk_pb2.ZendeskGetUnreadCountV1.Response() 12 | return response 13 | 14 | 15 | def add_ZendeskServicer_to_server(servicer, server): 16 | rpc_method_handlers = { 17 | 'GetUnreadCountV1': grpc.unary_unary_rpc_method_handler( 18 | servicer.GetUnreadCountV1, 19 | request_deserializer=lambda x: zendesk_pb2.ZendeskGetUnreadCountV1.Request.FromString(packer.unpack(x)), 20 | response_serializer=lambda x: packer.pack(zendesk_pb2.ZendeskGetUnreadCountV1.Response.SerializeToString(x)), 21 | ), 22 | } 23 | generic_handler = grpc.method_handlers_generic_handler( 24 | 'takasho.schema.fes.player_api.Zendesk', rpc_method_handlers) 25 | server.add_generic_rpc_handlers((generic_handler,)) 26 | 27 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_storage.4.hex: -------------------------------------------------------------------------------- 1 | 0a94040a2462373132346235362d336661342d343237612d386464302d363465633838333032393465122444616e6d616b7550617373536561736f6e5374617475732d5631303031342d31303031341ab903089e4e12a403f9d19ac407e1d99ac407c9e19ac407fad19ac407e2d99ac407cae19ac407fbd19ac407fcd19ac407e3d99ac407e4d99ac407cbe19ac407cce19ac407fdd19ac407e5d99ac407cde19ac407fed19ac407e6d99ac407cee19ac407ffd19ac407e7d99ac407cfe19ac40780d29ac40781d29ac407e8d99ac407e9d99ac407d0e19ac407d1e19ac40782d29ac407ead99ac407d2e19ac40783d29ac407ebd99ac407d3e19ac40784d29ac407ecd99ac407d4e19ac40785d29ac407edd99ac407d5e19ac40786d29ac407eed99ac407d6e19ac40787d29ac40788d29ac407efd99ac407f0d99ac407d7e19ac407d8e19ac40789d29ac407f1d99ac407d9e19ac4078ad29ac4078bd29ac4078cd29ac407f2d99ac407f3d99ac407f4d99ac407dae19ac407dbe19ac407dce19ac4078dd29ac407f5d99ac407dde19ac4078ed29ac407f6d99ac407dee19ac4078fd29ac407f7d99ac407dfe19ac40790d29ac40791d29ac407f8d99ac407f9d99ac407e0e19ac407e1e19ac40792d29ac407fad99ac407e2e19ac40793d29ac407fbd99ac407e3e19ac40794d29ac407fcd99ac407e4e19ac40718879bbf980620879bbf980628fc552096b6feb00c28d0e8dcb10c122462363965316466382d326530352d343863392d626462322d356130396263386337663463 -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_storage.5.hex: -------------------------------------------------------------------------------- 1 | 0a94040a2462373132346235362d336661342d343237612d386464302d363465633838333032393465122444616e6d616b7550617373536561736f6e5374617475732d5631303031352d31303031351ab903089f4e12a40389a09bc4078aa09bc407f1a79bc407f2a79bc407d9af9bc407daaf9bc4078ba09bc407f3a79bc407dbaf9bc4078ca09bc4078da09bc407f4a79bc407f5a79bc407dcaf9bc407ddaf9bc4078ea09bc4078fa09bc407f6a79bc407f7a79bc407deaf9bc407dfaf9bc40790a09bc40791a09bc407f8a79bc407f9a79bc407e0af9bc407e1af9bc40792a09bc407faa79bc407e2af9bc40793a09bc40794a09bc407fba79bc407fca79bc407e3af9bc407e4af9bc40795a09bc407fda79bc407e5af9bc40796a09bc407fea79bc407e6af9bc40797a09bc40798a09bc407ffa79bc40780a89bc407e7af9bc407e8af9bc40799a09bc40781a89bc407e9af9bc4079aa09bc40782a89bc407eaaf9bc4079ba09bc40783a89bc407ebaf9bc4079ca09bc40784a89bc407ecaf9bc4079da09bc4079ea09bc40785a89bc40786a89bc407edaf9bc407eeaf9bc4079fa09bc40787a89bc407efaf9bc407a0a09bc40788a89bc407f0af9bc407a1a09bc407a2a09bc40789a89bc4078aa89bc407f1af9bc407f2af9bc407a3a09bc407a4a09bc4078ba89bc4078ca89bc407f3af9bc407f4af9bc40718bdbddf990620bdbddf990628fc5520fcfabeb30c28f8ce94b40c122462363965316466382d326530352d343863392d626462322d356130396263386337663463 -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/ondemand_master_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.ondemand_master import v2_pb2 as _v2_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class OndemandMasterGetEntriesV2(_message.Message): 10 | __slots__ = [] 11 | class Request(_message.Message): 12 | __slots__ = ["keys"] 13 | KEYS_FIELD_NUMBER: _ClassVar[int] 14 | keys: _containers.RepeatedScalarFieldContainer[str] 15 | def __init__(self, keys: _Optional[_Iterable[str]] = ...) -> None: ... 16 | class Response(_message.Message): 17 | __slots__ = ["entries"] 18 | ENTRIES_FIELD_NUMBER: _ClassVar[int] 19 | entries: _containers.RepeatedCompositeFieldContainer[_v2_pb2.Entry] 20 | def __init__(self, entries: _Optional[_Iterable[_Union[_v2_pb2.Entry, _Mapping]]] = ...) -> None: ... 21 | def __init__(self) -> None: ... 22 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/reconstruction_spot.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api; 3 | 4 | import "takasho/schema/fes/resource/reconstruction_spot/v1.proto"; 5 | import "takasho/schema/common_featureset/resource/player_event_log/v1.proto"; 6 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 7 | 8 | message ReconstructionSpotGetAvailableV1 { 9 | message Request {} 10 | 11 | message Response { 12 | repeated takasho.schema.fes.resource.reconstruction_spot.v1.Spot spots = 1; 13 | } 14 | } 15 | 16 | message ReconstructionSpotReceivePrizesV1 { 17 | message Request { 18 | repeated takasho.schema.common_featureset.resource.player_event_log.v1.PlayerEventLog player_event_logs = 1; 19 | } 20 | 21 | message Response { 22 | repeated takasho.schema.common_featureset.resource.player_inventory.v1.PlayerInventory inventories = 1; 23 | } 24 | } 25 | 26 | service ReconstructionSpot { 27 | rpc GetAvailableV1(ReconstructionSpotGetAvailableV1.Request) returns (ReconstructionSpotGetAvailableV1.Response) {} 28 | rpc ReceivePrizesV1(ReconstructionSpotReceivePrizesV1.Request) returns (ReconstructionSpotReceivePrizesV1.Response) {} 29 | } 30 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_event_log.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.common_featureset.player_api import player_event_log_pb2 5 | from takasho.schema.common_featureset.player_api import player_event_log_pb2_grpc 6 | 7 | 8 | class PlayerEventLog(player_event_log_pb2_grpc.PlayerEventLogServicer): 9 | 10 | def SendV1(self, request, context): 11 | response = player_event_log_pb2.PlayerEventLogSendV1.Response() 12 | return response 13 | 14 | 15 | def add_PlayerEventLogServicer_to_server(servicer, server): 16 | rpc_method_handlers = { 17 | 'SendV1': grpc.unary_unary_rpc_method_handler( 18 | servicer.SendV1, 19 | request_deserializer=lambda x: player_event_log_pb2.PlayerEventLogSendV1.Request.FromString(packer.unpack(x)), 20 | response_serializer=lambda x: packer.pack(player_event_log_pb2.PlayerEventLogSendV1.Response.SerializeToString(x)), 21 | ), 22 | } 23 | generic_handler = grpc.method_handlers_generic_handler( 24 | 'takasho.schema.common_featureset.player_api.PlayerEventLog', rpc_method_handlers) 25 | server.add_generic_rpc_handlers((generic_handler,)) 26 | 27 | -------------------------------------------------------------------------------- /keys/lcx.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDLTCCAhWgAwIBAgIUba0cFMwQSBMn+3c0xk/meLhVa2kwDQYJKoZIhvcNAQEL 3 | BQAwJTEjMCEGA1UEAwwaZGFubWFrdWpwNC1sb2NhbC5sY3gudG9reW8wIBcNMjIx 4 | MjEyMjI1MDU5WhgPMjEyMjExMTgyMjUwNTlaMCUxIzAhBgNVBAMMGmRhbm1ha3Vq 5 | cDQtbG9jYWwubGN4LnRva3lvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC 6 | AQEAmpaK3gTN+YyXx0w1WUnlEUzOLIG5HR5eAj/y1TCuSjYMIpIng4xHI3rGxNAg 7 | 5LEnztDFIVHZcPwR3aAZUE1IWLYAuFcDiqNXgn4iYMTZdKDoPTgRdk9lbndYbjA8 8 | Zqz6ADetIrsle6SYFhwSEFc0Mgcgt8d5TxN4/2Wpcgx24HU6NteaPFvKYiMQkIR2 9 | /xcPKnlT/fVNpJXsN5MrN6HiCyRQv3HOh2zpWSeeqoZ3ExfzLBVhezUUgaI+Fb9l 10 | Oy7D38H2oVMkGxOlf5D6ELG0cnhD+qSZYASFHoQ8CBlelHrDWImpwyNkUs3quMV+ 11 | t6JEjQLOy5/CdZvV8ImnDehn3QIDAQABo1MwUTAdBgNVHQ4EFgQUjdQI0OaK2gtW 12 | Yv5y2NHjBvc2/YgwHwYDVR0jBBgwFoAUjdQI0OaK2gtWYv5y2NHjBvc2/YgwDwYD 13 | VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAXzv7bKWLdnhyEJ4IGtd/ 14 | W87c1LiGWVX3ubb3OADikUB1RcXyrrBW8Vmd39PF8DByrHrrQ1DiIqGc/B04mNol 15 | xj1zxphPzAZIyp9+MyjvUid+y4991iT0iaA8k1WRn2SwlJw8bTTNJbQ7p1FC7PwU 16 | JrokkoLp6nXbc+c6rs5OT6pu//mtouSws0QdDJH79IqkcDrbsh0vtYXsM9i3U59p 17 | UtcjfmSQWBjvCxlHkPuCKaQ1ssA627TMoQHjB3/ETHDY1AOAwgjfn/GoVdBk2hzU 18 | nkxfEY60KjQNoNdYml1WxtcY4QVi3gS2E9zdJUUE14JPQbaH9BwyjX7cMtjpwquA 19 | 3A== 20 | -----END CERTIFICATE----- 21 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/subscription/renewal_reward.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api.subscription.renewal_reward; 3 | 4 | import "takasho/schema/fes/resource/subscription/renewal_reward/v1.proto"; 5 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 6 | 7 | message RenewalRewardGetAvailableV1 { 8 | message Request {} 9 | 10 | message Response { 11 | repeated takasho.schema.fes.resource.subscription.renewal_reward.v1.RenewalReward renewal_rewards = 1; 12 | } 13 | } 14 | 15 | message RenewalRewardReceiveV1 { 16 | message Request {} 17 | 18 | message Response { 19 | repeated takasho.schema.fes.resource.subscription.renewal_reward.v1.RenewalReward renewal_rewards = 1; 20 | repeated takasho.schema.common_featureset.resource.player_inventory.v1.PlayerInventory inventories = 2; 21 | repeated takasho.schema.fes.resource.subscription.renewal_reward.v1.RenewalCount renewal_counts = 3; 22 | } 23 | } 24 | 25 | service RenewalReward { 26 | rpc GetAvailableV1(RenewalRewardGetAvailableV1.Request) returns (RenewalRewardGetAvailableV1.Response) {} 27 | rpc ReceiveV1(RenewalRewardReceiveV1.Request) returns (RenewalRewardReceiveV1.Response) {} 28 | } 29 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/game_status_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.game_status import v1_pb2 as _v1_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class GameStatusGetV1(_message.Message): 10 | __slots__ = [] 11 | class Request(_message.Message): 12 | __slots__ = ["values"] 13 | VALUES_FIELD_NUMBER: _ClassVar[int] 14 | values: _containers.RepeatedCompositeFieldContainer[_v1_pb2.Value] 15 | def __init__(self, values: _Optional[_Iterable[_Union[_v1_pb2.Value, _Mapping]]] = ...) -> None: ... 16 | class Response(_message.Message): 17 | __slots__ = ["statuses"] 18 | STATUSES_FIELD_NUMBER: _ClassVar[int] 19 | statuses: _containers.RepeatedCompositeFieldContainer[_v1_pb2.Status] 20 | def __init__(self, statuses: _Optional[_Iterable[_Union[_v1_pb2.Status, _Mapping]]] = ...) -> None: ... 21 | def __init__(self) -> None: ... 22 | -------------------------------------------------------------------------------- /keys/grpc.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDOjCCAiKgAwIBAgITP9cTB2SQPm6LBIjsengfFnncCTANBgkqhkiG9w0BAQsF 3 | ADAsMSowKAYDVQQDDCFwbGF5ZXItYXBpLWxvY2FsLmRlbmEtdGFrYXNoby5jb20w 4 | IBcNMjIxMjEyMjI0OTQxWhgPMjEyMjExMTgyMjQ5NDFaMCwxKjAoBgNVBAMMIXBs 5 | YXllci1hcGktbG9jYWwuZGVuYS10YWthc2hvLmNvbTCCASIwDQYJKoZIhvcNAQEB 6 | BQADggEPADCCAQoCggEBAKGJv515xBk0+DJ5VMa6QnUw+kbsne9gJ79qEE8rSG7B 7 | 0lrZN92GBF55GngXh06jHemavD6atzvp3uaCc3kooPhMZYNsAdyjm8J62zb3gsuz 8 | dvKQi77r2osxcdJmho5USSF5cCEKk3CYk9A2IM5AeoG81m3Ya61bYDX9geQwUmh6 9 | TApj1ChoWRkaMcDZoqo/ogyZcy5SG5APTojdEwVS3Yyblv+e8n6teTyS5rZ7XKK2 10 | 7uYeC8rp6cJPDuUXWmz8n5JSYy9aSYXJ/h863rgOXPiFrJw5Jb78eQo8MthD0/0F 11 | V/WCPiAf1HQPbUGvaP81G8xaF3F7rwDOiqBZO47ZBv8CAwEAAaNTMFEwHQYDVR0O 12 | BBYEFF4EBvtt0nyuIfp/XJuVTcQuVXSRMB8GA1UdIwQYMBaAFF4EBvtt0nyuIfp/ 13 | XJuVTcQuVXSRMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBABc1 14 | sHbv9KBsvyGUnZWYL5HG8yq3G4N8vCZI0m0li6uTC64TWtnKphqZuEOrBbkp1ASY 15 | 9rBgHFR2PCqYTvgGdmp2yAA8Df5Ca81N0+IJyYdOqQXTzNjzQkgScr3EgL5WGxx/ 16 | rplx9yTTagCLvfPPKOQt594Cp+r51s3Ha0xJJZ2hBCmg+yjwjW6zV85Qj2fnOO6I 17 | ey+j1uhci2v3Yh3JHiPrHk8vECpNFTRCi93ko7MNf00ZS8zcID2HreYhu05zECpZ 18 | ylcc8sAtKAXQSREI+bN2ZqHG2K+7g15D6lllmat7U5aDBWGrENAabQhbSxKj6hcm 19 | URp1+6ggzoublzyP6nM= 20 | -----END CERTIFICATE----- 21 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/baas_product_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.baas_product import v1_pb2 as _v1_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class BaasProductGetAvailableByIDsV1(_message.Message): 10 | __slots__ = [] 11 | class Request(_message.Message): 12 | __slots__ = ["product_ids"] 13 | PRODUCT_IDS_FIELD_NUMBER: _ClassVar[int] 14 | product_ids: _containers.RepeatedScalarFieldContainer[str] 15 | def __init__(self, product_ids: _Optional[_Iterable[str]] = ...) -> None: ... 16 | class Response(_message.Message): 17 | __slots__ = ["baas_products"] 18 | BAAS_PRODUCTS_FIELD_NUMBER: _ClassVar[int] 19 | baas_products: _containers.RepeatedCompositeFieldContainer[_v1_pb2.BaasProduct] 20 | def __init__(self, baas_products: _Optional[_Iterable[_Union[_v1_pb2.BaasProduct, _Mapping]]] = ...) -> None: ... 21 | def __init__(self) -> None: ... 22 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/game_status.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.common_featureset.player_api import game_status_pb2 5 | from takasho.schema.common_featureset.player_api import game_status_pb2_grpc 6 | 7 | 8 | class GameStatus(game_status_pb2_grpc.GameStatusServicer): 9 | 10 | def GetV1(self, request, context): 11 | response = game_status_pb2.GameStatusGetV1.Response() 12 | for v in request.values: 13 | status = response.statuses.add() 14 | status.value = v.value 15 | return response 16 | 17 | 18 | def add_GameStatusServicer_to_server(servicer, server): 19 | rpc_method_handlers = { 20 | 'GetV1': grpc.unary_unary_rpc_method_handler( 21 | servicer.GetV1, 22 | request_deserializer=lambda x: game_status_pb2.GameStatusGetV1.Request.FromString(packer.unpack(x)), 23 | response_serializer=lambda x: packer.pack(game_status_pb2.GameStatusGetV1.Response.SerializeToString(x)), 24 | ), 25 | } 26 | generic_handler = grpc.method_handlers_generic_handler( 27 | 'takasho.schema.common_featureset.player_api.GameStatus', rpc_method_handlers) 28 | server.add_generic_rpc_handlers((generic_handler,)) 29 | 30 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.fes.resource.club_preference import v1_pb2 as _v1_pb2 2 | from takasho.schema.fes.resource.club_storage import v1_pb2 as _v1_pb2_1 3 | from google.protobuf.internal import containers as _containers 4 | from google.protobuf import descriptor as _descriptor 5 | from google.protobuf import message as _message 6 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 7 | 8 | DESCRIPTOR: _descriptor.FileDescriptor 9 | 10 | class Club(_message.Message): 11 | __slots__ = ["club_id", "club_storage_entries", "organized_at", "preference"] 12 | CLUB_ID_FIELD_NUMBER: _ClassVar[int] 13 | CLUB_STORAGE_ENTRIES_FIELD_NUMBER: _ClassVar[int] 14 | ORGANIZED_AT_FIELD_NUMBER: _ClassVar[int] 15 | PREFERENCE_FIELD_NUMBER: _ClassVar[int] 16 | club_id: str 17 | club_storage_entries: _containers.RepeatedCompositeFieldContainer[_v1_pb2_1.ClubStorageEntry] 18 | organized_at: int 19 | preference: _v1_pb2.ClubPreference 20 | def __init__(self, club_id: _Optional[str] = ..., organized_at: _Optional[int] = ..., preference: _Optional[_Union[_v1_pb2.ClubPreference, _Mapping]] = ..., club_storage_entries: _Optional[_Iterable[_Union[_v1_pb2_1.ClubStorageEntry, _Mapping]]] = ...) -> None: ... 21 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/friend/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.friend.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/player_storage/v2.proto"; 5 | 6 | message Criterion { 7 | enum OrderField { 8 | UNKNOWN_ORDER_FIELD = 0; 9 | LAST_LOGGED_IN_AT = 1; 10 | PLAYER_LEVEL = 2; 11 | } 12 | 13 | enum OrderDirection { 14 | ASC = 0; 15 | DESC = 1; 16 | } 17 | 18 | message Filter { 19 | enum Follow { 20 | ALL_FOLLOW = 0; 21 | MUTUAL = 1; 22 | NOT_MUTUAL = 2; 23 | } 24 | 25 | enum Club { 26 | ALL_CLUB = 0; 27 | SAME_CLUB = 1; 28 | NOT_SAME_CLUB = 2; 29 | } 30 | 31 | Follow follow = 1; 32 | Club club = 2; 33 | } 34 | 35 | OrderField order_field = 1; 36 | OrderDirection order_direction = 2; 37 | Filter filter = 3; 38 | } 39 | 40 | message FriendPlayer { 41 | string player_id = 1; 42 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry player_storage_entries = 2; 43 | string nickname = 3; 44 | repeated string club_names = 4; 45 | bool is_following = 5; 46 | bool is_followed = 6; 47 | sint64 last_logged_in_at = 7; 48 | } 49 | 50 | message FollowStatus { 51 | string player_id = 1; 52 | bool is_following = 2; 53 | bool is_followed = 3; 54 | } 55 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/comeback_login_bonus/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.comeback_login_bonus.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/login_bonus/v1.proto"; 5 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 6 | 7 | message ComebackLoginBonus { 8 | string comeback_login_bonus_id = 1; 9 | sint64 opened_at = 2; 10 | sint64 closed_at = 3; 11 | sint64 condition_days = 4; 12 | sint64 valid_days = 5; 13 | takasho.schema.common_featureset.resource.login_bonus.v1.ResetType reset_type = 6; 14 | string date_line = 7; 15 | sint64 time_lapse = 8; 16 | repeated ComebackLoginBonusPrize comeback_login_bonus_prizes = 9; 17 | sint64 last_counted_up_at = 10; 18 | } 19 | 20 | message ComebackLoginBonusPrize { 21 | sint64 days = 1; 22 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 2; 23 | string schema_key = 3; 24 | string value = 4; 25 | string value_path = 5; 26 | string inventory_message = 6; 27 | string search_label = 7; 28 | string system_resource_name = 8; 29 | int64 system_resource_num = 9; 30 | } 31 | 32 | message ComebackLoginBonusProgress { 33 | string player_id = 1; 34 | sint64 remain_days = 2; 35 | sint64 come_backed_at = 3; 36 | sint64 expired_at = 4; 37 | } 38 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/ondemand_master/v2_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/ondemand_master/v2.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nBtakasho/schema/common_featureset/resource/ondemand_master/v2.proto\x12 None: ... 17 | 18 | class Criterion(_message.Message): 19 | __slots__ = ["key", "matching_type"] 20 | class MatchingType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 21 | __slots__ = [] 22 | EXACT: Criterion.MatchingType 23 | FORWARD: Criterion.MatchingType 24 | KEY_FIELD_NUMBER: _ClassVar[int] 25 | MATCHING_TYPE_FIELD_NUMBER: _ClassVar[int] 26 | key: str 27 | matching_type: Criterion.MatchingType 28 | def __init__(self, key: _Optional[str] = ..., matching_type: _Optional[_Union[Criterion.MatchingType, str]] = ...) -> None: ... 29 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/push_notification.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | message PushNotificationSetConfigV1 { 5 | option deprecated = true; 6 | 7 | message Request { 8 | bool receivable = 1; 9 | } 10 | 11 | message Response { 12 | bool receivable = 1; 13 | } 14 | } 15 | 16 | message PushNotificationSetConfigV2 { 17 | message Request { 18 | repeated string topic_ids = 1; 19 | } 20 | 21 | message Response {} 22 | } 23 | 24 | message PushNotificationGetConfigV1 { 25 | option deprecated = true; 26 | 27 | message Request {} 28 | 29 | message Response { 30 | bool receivable = 1; 31 | } 32 | } 33 | 34 | message PushNotificationGetConfigV2 { 35 | message Request {} 36 | 37 | message Response { 38 | repeated string topic_ids = 1; 39 | } 40 | } 41 | 42 | service PushNotification { 43 | rpc SetConfigV1(PushNotificationSetConfigV1.Request) returns (PushNotificationSetConfigV1.Response) {} 44 | rpc SetConfigV2(PushNotificationSetConfigV2.Request) returns (PushNotificationSetConfigV2.Response) {} 45 | rpc GetConfigV1(PushNotificationGetConfigV1.Request) returns (PushNotificationGetConfigV1.Response) {} 46 | rpc GetConfigV2(PushNotificationGetConfigV2.Request) returns (PushNotificationGetConfigV2.Response) {} 47 | } 48 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/player_preference/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/player_preference/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n6takasho/schema/fes/resource/player_preference/v1.proto\x12\x30takasho.schema.fes.resource.player_preference.v1\"Y\n\x10PlayerPreference\x12\x11\n\tplayer_id\x18\x01 \x01(\t\x12\x14\n\x0cplayer_level\x18\x02 \x01(\x04\x12\x1c\n\x14is_my_space_released\x18\x03 \x01(\x08\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.player_preference.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _PLAYERPREFERENCE._serialized_start=108 24 | _PLAYERPREFERENCE._serialized_end=197 25 | # @@protoc_insertion_point(module_scope) 26 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_status/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/game_status/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n>takasho/schema/common_featureset/resource/game_status/v1.proto\x12\x38takasho.schema.common_featureset.resource.game_status.v1\"\x16\n\x05Value\x12\r\n\x05value\x18\x01 \x01(\x03\"\'\n\x06Status\x12\r\n\x05value\x18\x01 \x01(\x03\x12\x0e\n\x06status\x18\x02 \x01(\x08\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.game_status.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _VALUE._serialized_start=124 24 | _VALUE._serialized_end=146 25 | _STATUS._serialized_start=148 26 | _STATUS._serialized_end=187 27 | # @@protoc_insertion_point(module_scope) 28 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/player_regular_ranking/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/player_regular_ranking/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n;takasho/schema/fes/resource/player_regular_ranking/v1.proto\x12\x35takasho.schema.fes.resource.player_regular_ranking.v1\"n\n\x14PlayerRegularRanking\x12\x13\n\x0branking_key\x18\x01 \x01(\t\x12\x11\n\tplayer_id\x18\x02 \x01(\t\x12\x11\n\tnick_name\x18\x03 \x01(\t\x12\x0c\n\x04rank\x18\x04 \x01(\x03\x12\r\n\x05score\x18\x05 \x01(\x03\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.player_regular_ranking.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _PLAYERREGULARRANKING._serialized_start=118 24 | _PLAYERREGULARRANKING._serialized_end=228 25 | # @@protoc_insertion_point(module_scope) 26 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/game_message.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | import "takasho/schema/common_featureset/resource/game_message/v1.proto"; 5 | 6 | message GameMessageGetUnreadMessageV1 { 7 | message Request { 8 | string page_token = 1; 9 | uint64 max_results = 2; 10 | } 11 | 12 | message Response { 13 | repeated takasho.schema.common_featureset.resource.game_message.v1.GameMessage messages = 1; 14 | string next_page_token = 2; 15 | string prev_page_token = 3; 16 | } 17 | } 18 | 19 | message GameMessageGetMessageV1 { 20 | message Request { 21 | string page_token = 1; 22 | uint64 max_results = 2; 23 | } 24 | 25 | message Response { 26 | repeated takasho.schema.common_featureset.resource.game_message.v1.GameMessage messages = 1; 27 | string next_page_token = 2; 28 | string prev_page_token = 3; 29 | } 30 | } 31 | 32 | message GameMessageReceiveMessageV1 { 33 | message Request { 34 | repeated string message_ids = 1; 35 | } 36 | 37 | message Response {} 38 | } 39 | 40 | service GameMessage { 41 | rpc GetUnreadMessageV1(GameMessageGetUnreadMessageV1.Request) returns (GameMessageGetUnreadMessageV1.Response) {} 42 | rpc GetMessageV1(GameMessageGetMessageV1.Request) returns (GameMessageGetMessageV1.Response) {} 43 | rpc ReceiveMessageV1(GameMessageReceiveMessageV1.Request) returns (GameMessageReceiveMessageV1.Response) {} 44 | } 45 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_message/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/game_message/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n?takasho/schema/common_featureset/resource/game_message/v1.proto\x12\x39takasho.schema.common_featureset.resource.game_message.v1\"y\n\x0bGameMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\t\x12\x13\n\x0bis_received\x18\x02 \x01(\x08\x12\r\n\x05title\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\t\x12\r\n\x05\x65xtra\x18\x05 \x01(\x0c\x12\x12\n\ncreated_at\x18\x06 \x01(\x12\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.game_message.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _GAMEMESSAGE._serialized_start=126 24 | _GAMEMESSAGE._serialized_end=247 25 | # @@protoc_insertion_point(module_scope) 26 | -------------------------------------------------------------------------------- /keys/lcx_ios.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIID9jCCAt6gAwIBAgIUDdHcwFa6fsvTb7sASWZu7z2tl+0wDQYJKoZIhvcNAQEL 3 | BQAwbTELMAkGA1UEBhMCSlAxDjAMBgNVBAgMBVRva3lvMRMwEQYDVQQHDApTaGli 4 | dXlhLWt1MRcwFQYDVQQKDA5EZU5BIENvLiwgTHRkLjEgMB4GA1UEAwwXZGFubWFr 5 | dWpwNC12MS5sY3gudG9reW8wHhcNMjIxMjE2MjEwNTE0WhcNMjMxMjE2MjEwNTE0 6 | WjBtMQswCQYDVQQGEwJKUDEOMAwGA1UECAwFVG9reW8xEzARBgNVBAcMClNoaWJ1 7 | eWEta3UxFzAVBgNVBAoMDkRlTkEgQ28uLCBMdGQuMSAwHgYDVQQDDBdkYW5tYWt1 8 | anA0LXYxLmxjeC50b2t5bzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB 9 | AKqNW0tuqsue7j4+U+O35j4/7D5B8e+SESSXRtpNIaqYrPgCfeKcOJ37PvujI8gV 10 | R4R3R1EcdFaq+whOwljBX6Vt0ffr1oc285WLdoeEsGng0GSn1emfpHS9jWlYA6os 11 | gAqJNkppoy9YKyGUjvt3xC5SgkXK1q9yanrs+h0D9/w1ZY71W9JJ/+IgmMl03CeC 12 | GElvANJ3f/dHem3OfWMBjAh3Dt0G7V+8wZ0Zn5y0MlW9f2ofcVo4yfmo+LnZGFGm 13 | q/XX+phLWf1VnD8LxsuPbfAebdw/OJGRoqlaRZQb0elZwVUNEyGjnAxtB1CJimNO 14 | +WfomQHBCYOLfwyaUMG+I6kCAwEAAaOBjTCBijAdBgNVHQ4EFgQUPgGNsupx24RL 15 | usAfp9qbsb4u9wwwHwYDVR0jBBgwFoAUPgGNsupx24RLusAfp9qbsb4u9wwwDwYD 16 | VR0TAQH/BAUwAwEB/zATBgNVHSUEDDAKBggrBgEFBQcDATAiBgNVHREEGzAZghdk 17 | YW5tYWt1anA0LXYxLmxjeC50b2t5bzANBgkqhkiG9w0BAQsFAAOCAQEAjq17AeyF 18 | QwUn3wJxu3ltqfWPvLFkh2wqQrnbnPC3dbcTp08tqrKU8/Kfc0qE0c262SuQF9Vg 19 | L5gTrSqWyvQN/i8kzY5nmO5gMzQNSszl1S+lSd9NUO4JOlc/2ZZRhqFiAfmug7AH 20 | Z93pLATXU8pC09L0JcX/dKRTpDVjL0DxM+Wmq+gStssGt6Q//04XCz50jHzIGBQU 21 | a0BTBJ4MRP6iKnIMR/SqhBlvJCdp+8xA9Ps6dsWzOjVElOhgwDGpBQmgAKRtBOAb 22 | As5r7HdyVEvImogFW+aW6J9VoYezYzEdfdIK/x1iuFS3zfdR2abiVw2Ae9Pc9lO2 23 | n3x11QEm7pRfog== 24 | -----END CERTIFICATE----- 25 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_role/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/club_role/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.takasho/schema/fes/resource/club_role/v1.proto\x12(takasho.schema.fes.resource.club_role.v1*D\n\x08\x43lubRole\x12\x10\n\x0cUNKNOWN_ROLE\x10\x00\x12\n\n\x06LEADER\x10\x01\x12\x0e\n\nSUB_LEADER\x10\x02\x12\n\n\x06MEMBER\x10\x03*o\n\x12\x43lubUpdateRoleType\x12\x17\n\x13UNKNOWN_UPDATE_TYPE\x10\x00\x12\x14\n\x10\x41SSIGN_SUBLEADER\x10\x01\x12\x16\n\x12UNASSIGN_SUBLEADER\x10\x02\x12\x12\n\x0eREPLACE_LEADER\x10\x03\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.club_role.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _CLUBROLE._serialized_start=92 24 | _CLUBROLE._serialized_end=160 25 | _CLUBUPDATEROLETYPE._serialized_start=162 26 | _CLUBUPDATEROLETYPE._serialized_end=273 27 | # @@protoc_insertion_point(module_scope) 28 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/announcement.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import grpc 4 | 5 | from takasho.packer import packer 6 | from takasho.schema.common_featureset.player_api import announcement_pb2 7 | from takasho.schema.common_featureset.player_api import announcement_pb2_grpc 8 | 9 | 10 | class Announcement(announcement_pb2_grpc.AnnouncementServicer): 11 | 12 | def GetAvailableV1(self, request, context): 13 | p = Path(__file__).with_name( 14 | 'announcement.' + str(request.max_results) + '.hex') 15 | with p.open() as f: 16 | response = announcement_pb2.AnnouncementGetAvailableV1.Response. \ 17 | FromString(bytes.fromhex(f.read())) 18 | response.base_image_url = 'https://dankagu-assets.rainbowunicorn7297.com/assets/announcements' 19 | return response 20 | 21 | 22 | def add_AnnouncementServicer_to_server(servicer, server): 23 | rpc_method_handlers = { 24 | 'GetAvailableV1': grpc.unary_unary_rpc_method_handler( 25 | servicer.GetAvailableV1, 26 | request_deserializer=lambda x: announcement_pb2.AnnouncementGetAvailableV1.Request.FromString(packer.unpack(x)), 27 | response_serializer=lambda x: packer.pack(announcement_pb2.AnnouncementGetAvailableV1.Response.SerializeToString(x)), 28 | ), 29 | } 30 | generic_handler = grpc.method_handlers_generic_handler( 31 | 'takasho.schema.common_featureset.player_api.Announcement', rpc_method_handlers) 32 | server.add_generic_rpc_handlers((generic_handler,)) 33 | 34 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_storage/v2_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union 5 | 6 | DESCRIPTOR: _descriptor.FileDescriptor 7 | 8 | class Criterion(_message.Message): 9 | __slots__ = ["key", "matching_type"] 10 | class MatchingType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 11 | __slots__ = [] 12 | EXACT: Criterion.MatchingType 13 | FORWARD: Criterion.MatchingType 14 | KEY_FIELD_NUMBER: _ClassVar[int] 15 | MATCHING_TYPE_FIELD_NUMBER: _ClassVar[int] 16 | key: str 17 | matching_type: Criterion.MatchingType 18 | def __init__(self, key: _Optional[str] = ..., matching_type: _Optional[_Union[Criterion.MatchingType, str]] = ...) -> None: ... 19 | 20 | class Entry(_message.Message): 21 | __slots__ = ["created_at", "key", "player_id", "updated_at", "value"] 22 | CREATED_AT_FIELD_NUMBER: _ClassVar[int] 23 | KEY_FIELD_NUMBER: _ClassVar[int] 24 | PLAYER_ID_FIELD_NUMBER: _ClassVar[int] 25 | UPDATED_AT_FIELD_NUMBER: _ClassVar[int] 26 | VALUE_FIELD_NUMBER: _ClassVar[int] 27 | created_at: int 28 | key: str 29 | player_id: str 30 | updated_at: int 31 | value: bytes 32 | def __init__(self, player_id: _Optional[str] = ..., key: _Optional[str] = ..., value: _Optional[bytes] = ..., created_at: _Optional[int] = ..., updated_at: _Optional[int] = ...) -> None: ... 33 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_key_value/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Optional as _Optional 5 | 6 | DECREASE: OperationType 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | INCREASE: OperationType 9 | UNKNOWN: OperationType 10 | 11 | class PlayerKeyValue(_message.Message): 12 | __slots__ = ["expired_at", "key", "value"] 13 | EXPIRED_AT_FIELD_NUMBER: _ClassVar[int] 14 | KEY_FIELD_NUMBER: _ClassVar[int] 15 | VALUE_FIELD_NUMBER: _ClassVar[int] 16 | expired_at: int 17 | key: str 18 | value: int 19 | def __init__(self, key: _Optional[str] = ..., value: _Optional[int] = ..., expired_at: _Optional[int] = ...) -> None: ... 20 | 21 | class PlayerKeyValueIncrementInfo(_message.Message): 22 | __slots__ = ["delta", "key"] 23 | DELTA_FIELD_NUMBER: _ClassVar[int] 24 | KEY_FIELD_NUMBER: _ClassVar[int] 25 | delta: int 26 | key: str 27 | def __init__(self, key: _Optional[str] = ..., delta: _Optional[int] = ...) -> None: ... 28 | 29 | class PlayerKeyValueUpdateInfo(_message.Message): 30 | __slots__ = ["amount", "key"] 31 | AMOUNT_FIELD_NUMBER: _ClassVar[int] 32 | KEY_FIELD_NUMBER: _ClassVar[int] 33 | amount: int 34 | key: str 35 | def __init__(self, key: _Optional[str] = ..., amount: _Optional[int] = ...) -> None: ... 36 | 37 | class OperationType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 38 | __slots__ = [] 39 | -------------------------------------------------------------------------------- /grpc_debug.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.common_featureset.player_api import player_key_value_store_pb2 5 | 6 | 7 | if __name__ == '__main__': 8 | # Debug packer 9 | # print(bytes.hex(packer.unpack(bytes.fromhex('')))) 10 | # Debug gRPC message 11 | print(player_key_value_store_pb2.PlayerKeyValueStoreIncrementPlayerKeyValuesAndSavePlayerStorageV1.Response.FromString(packer.unpack(bytes.fromhex('9c6dca194cce43eb275bfc9db30899b6344657e75cc3a57fd7714dafb6da5f06d34bdca421aaa59c60c5ddab6a7ec6b1b40eb6ad11e119377b169b29764c3fb24dde3460868042a4a2005f880336c3e38270bcea81de652b8057544c93f7d81b820ea8d69d7485401461b14da52dd36a8743f8c3e6ca6bdad75fee024a6118cde5c076b6c8fc7068e36b043736047c8513be10eb982b6047b3435df4eb357763a301a06751d5c68e9c65083e9ac3b9789fead4d7fd9378af5a98b6f6aba4fc7cde233358c3f551a00134c1613c1843c6dd7b5e707919cb101f56dd8a7e8be75e053ba5d6332ed52efe3f7e8f8596e512c80c3e9403713fdbc725409f4f099b813dc79edf2212f4919a85b5d0bd80db82202b9cb9969e253473')))) 12 | # response = player_storage_pb2.PlayerStorageGetEntriesV2.Response.FromString(packer.unpack(bytes.fromhex('d605708b66d809b276bf8fa0dfee542542d347695e33794efa95f2d096d76ed9f9285450083b0e3527e3110600914162d12e33f311f3132609cd26cbbb7a33475ff7b2abad9b05674f7881d95d144ef8db38dfcc8083dbfeb9fc57f963c2410ab03febe281c6cebaaf79fcd005d8a782cda706783c961140dc17b767e0b7c615c33441fd93a19891bfb78739b21f7ac45492ea47d91988b8816fb852dc1b43717bd0a8bd98a347db72dc3555a08d0f80cad1fd6c951dda715e8440495e16'))) 13 | # print(response) 14 | # for entry in response.entries: 15 | # print(bytes.hex(entry.value)) 16 | 17 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/player_preference.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api.player_preference; 3 | 4 | import "takasho/schema/fes/resource/player_preference/v1.proto"; 5 | import "takasho/schema/common_featureset/resource/player_storage/v2.proto"; 6 | import "takasho/schema/common_featureset/resource/player_event_log/v1.proto"; 7 | 8 | message FesPlayerPreferenceGetV1 { 9 | message Request {} 10 | 11 | message Response { 12 | takasho.schema.fes.resource.player_preference.v1.PlayerPreference player_preference = 1; 13 | } 14 | } 15 | 16 | message FesPlayerPreferenceSetAndSavePlayerStorageV1 { 17 | message Request { 18 | takasho.schema.fes.resource.player_preference.v1.PlayerPreference player_preference = 1; 19 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry entries = 2; 20 | string next_revision = 3; 21 | string previous_revision = 4; 22 | repeated takasho.schema.common_featureset.resource.player_event_log.v1.PlayerEventLog player_event_logs = 5; 23 | } 24 | 25 | message Response { 26 | takasho.schema.fes.resource.player_preference.v1.PlayerPreference player_preference = 1; 27 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry entries = 2; 28 | string revision = 3; 29 | } 30 | } 31 | 32 | service FesPlayerPreference { 33 | rpc GetV1(FesPlayerPreferenceGetV1.Request) returns (FesPlayerPreferenceGetV1.Response) {} 34 | rpc SetAndSavePlayerStorageV1(FesPlayerPreferenceSetAndSavePlayerStorageV1.Request) returns (FesPlayerPreferenceSetAndSavePlayerStorageV1.Response) {} 35 | } 36 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/resource/login_bonus/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.resource.login_bonus.v1; 3 | 4 | import "takasho/schema/common_featureset/resource/login_bonus/v1.proto"; 5 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 6 | 7 | message BingoLoginBonus { 8 | string bingo_login_bonus_id = 1; 9 | takasho.schema.common_featureset.resource.login_bonus.v1.ResetType reset_type = 2; 10 | string date_line = 3; 11 | sint64 time_lapse = 4; 12 | sint64 opened_at = 5; 13 | sint64 closed_at = 6; 14 | repeated BingoLoginBonusPrize bingo_prizes = 7; 15 | repeated BingoLoginBonusOmikujiPrize omikuji_prizes = 8; 16 | sint64 last_counted_up_at = 9; 17 | repeated BingoStatus bingo_statuses = 10; 18 | int64 count_bingo_rows = 11; 19 | } 20 | 21 | message BingoLoginBonusPrize { 22 | int64 row = 1; 23 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 2; 24 | string schema_key = 3; 25 | string value = 4; 26 | string value_path = 5; 27 | string inventory_message = 6; 28 | string search_label = 7; 29 | string system_resource_name = 8; 30 | int64 system_resource_num = 9; 31 | } 32 | 33 | message BingoStatus { 34 | int64 frame = 1; 35 | bool is_open = 2; 36 | } 37 | 38 | message BingoLoginBonusOmikujiPrize { 39 | int64 frame_num = 1; 40 | takasho.schema.common_featureset.resource.player_inventory.v1.ItemType item_type = 2; 41 | string schema_key = 3; 42 | string value = 4; 43 | string value_path = 5; 44 | string inventory_message = 6; 45 | string search_label = 7; 46 | string system_resource_name = 8; 47 | int64 system_resource_num = 9; 48 | } 49 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_achievement/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/player_achievement/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.achievement import v1_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_achievement_dot_v1__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nEtakasho/schema/common_featureset/resource/player_achievement/v1.proto\x12?takasho.schema.common_featureset.resource.player_achievement.v1\x1a>takasho/schema/common_featureset/resource/achievement/v1.proto\"\x89\x01\n\x11PlayerAchievement\x12Z\n\x0b\x61\x63hievement\x18\x01 \x01(\x0b\x32\x45.takasho.schema.common_featureset.resource.achievement.v1.Achievement\x12\x18\n\x10last_unlocked_at\x18\x02 \x01(\x12\x62\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.player_achievement.v1_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _PLAYERACHIEVEMENT._serialized_start=203 25 | _PLAYERACHIEVEMENT._serialized_end=340 26 | # @@protoc_insertion_point(module_scope) 27 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/club_achievement.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.fes.player_api import club_achievement_pb2 5 | from takasho.schema.fes.player_api import club_achievement_pb2_grpc 6 | 7 | 8 | class ClubAchievement(club_achievement_pb2_grpc.ClubAchievementServicer): 9 | 10 | def UnlockAndIncrementClubScalar(self, request, context): 11 | response = club_achievement_pb2.ClubAchievementUnlockAndIncrementClubScalar.Response() 12 | return response 13 | 14 | 15 | def add_ClubAchievementServicer_to_server(servicer, server): 16 | rpc_method_handlers = { 17 | 'GetAvailable': grpc.unary_unary_rpc_method_handler( 18 | servicer.GetAvailable, 19 | request_deserializer=lambda x: club_achievement_pb2.ClubAchievementGetAvailable.Request.FromString(packer.unpack(x)), 20 | response_serializer=lambda x: packer.pack(club_achievement_pb2.ClubAchievementGetAvailable.Response.SerializeToString(x)), 21 | ), 22 | 'UnlockAndIncrementClubScalar': grpc.unary_unary_rpc_method_handler( 23 | servicer.UnlockAndIncrementClubScalar, 24 | request_deserializer=lambda x: club_achievement_pb2.ClubAchievementUnlockAndIncrementClubScalar.Request.FromString(packer.unpack(x)), 25 | response_serializer=lambda x: packer.pack(club_achievement_pb2.ClubAchievementUnlockAndIncrementClubScalar.Response.SerializeToString(x)), 26 | ), 27 | } 28 | generic_handler = grpc.method_handlers_generic_handler( 29 | 'takasho.schema.fes.player_api.club_achievement.ClubAchievement', rpc_method_handlers) 30 | server.add_generic_rpc_handlers((generic_handler,)) 31 | 32 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/announcement/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import containers as _containers 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 5 | 6 | DESCRIPTOR: _descriptor.FileDescriptor 7 | 8 | class Announcement(_message.Message): 9 | __slots__ = ["closed_at", "contents", "id", "language_code", "opened_at", "title", "value"] 10 | CLOSED_AT_FIELD_NUMBER: _ClassVar[int] 11 | CONTENTS_FIELD_NUMBER: _ClassVar[int] 12 | ID_FIELD_NUMBER: _ClassVar[int] 13 | LANGUAGE_CODE_FIELD_NUMBER: _ClassVar[int] 14 | OPENED_AT_FIELD_NUMBER: _ClassVar[int] 15 | TITLE_FIELD_NUMBER: _ClassVar[int] 16 | VALUE_FIELD_NUMBER: _ClassVar[int] 17 | closed_at: int 18 | contents: _containers.RepeatedCompositeFieldContainer[AnnouncementContent] 19 | id: str 20 | language_code: str 21 | opened_at: int 22 | title: str 23 | value: bytes 24 | def __init__(self, id: _Optional[str] = ..., language_code: _Optional[str] = ..., title: _Optional[str] = ..., opened_at: _Optional[int] = ..., closed_at: _Optional[int] = ..., value: _Optional[bytes] = ..., contents: _Optional[_Iterable[_Union[AnnouncementContent, _Mapping]]] = ...) -> None: ... 25 | 26 | class AnnouncementContent(_message.Message): 27 | __slots__ = ["schema_key", "value"] 28 | SCHEMA_KEY_FIELD_NUMBER: _ClassVar[int] 29 | VALUE_FIELD_NUMBER: _ClassVar[int] 30 | schema_key: str 31 | value: bytes 32 | def __init__(self, schema_key: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ... 33 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_storage/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/club_storage/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n1takasho/schema/fes/resource/club_storage/v1.proto\x12+takasho.schema.fes.resource.club_storage.v1\"?\n\x10\x43lubStorageEntry\x12\x0f\n\x07\x63lub_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\x0c\"\x9c\x01\n\tCriterion\x12\x0b\n\x03key\x18\x01 \x01(\t\x12Z\n\rmatching_type\x18\x02 \x01(\x0e\x32\x43.takasho.schema.fes.resource.club_storage.v1.Criterion.MatchingType\"&\n\x0cMatchingType\x12\t\n\x05\x45XACT\x10\x00\x12\x0b\n\x07\x46ORWARD\x10\x01\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.club_storage.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _CLUBSTORAGEENTRY._serialized_start=98 24 | _CLUBSTORAGEENTRY._serialized_end=161 25 | _CRITERION._serialized_start=164 26 | _CRITERION._serialized_end=320 27 | _CRITERION_MATCHINGTYPE._serialized_start=282 28 | _CRITERION_MATCHINGTYPE._serialized_end=320 29 | # @@protoc_insertion_point(module_scope) 30 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/extra_announcement/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import containers as _containers 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 5 | 6 | DESCRIPTOR: _descriptor.FileDescriptor 7 | 8 | class ExtraAnnouncement(_message.Message): 9 | __slots__ = ["closed_at", "contents", "id", "language_code", "opened_at", "title", "value"] 10 | CLOSED_AT_FIELD_NUMBER: _ClassVar[int] 11 | CONTENTS_FIELD_NUMBER: _ClassVar[int] 12 | ID_FIELD_NUMBER: _ClassVar[int] 13 | LANGUAGE_CODE_FIELD_NUMBER: _ClassVar[int] 14 | OPENED_AT_FIELD_NUMBER: _ClassVar[int] 15 | TITLE_FIELD_NUMBER: _ClassVar[int] 16 | VALUE_FIELD_NUMBER: _ClassVar[int] 17 | closed_at: int 18 | contents: _containers.RepeatedCompositeFieldContainer[ExtraAnnouncementContent] 19 | id: str 20 | language_code: str 21 | opened_at: int 22 | title: str 23 | value: bytes 24 | def __init__(self, id: _Optional[str] = ..., language_code: _Optional[str] = ..., title: _Optional[str] = ..., opened_at: _Optional[int] = ..., closed_at: _Optional[int] = ..., value: _Optional[bytes] = ..., contents: _Optional[_Iterable[_Union[ExtraAnnouncementContent, _Mapping]]] = ...) -> None: ... 25 | 26 | class ExtraAnnouncementContent(_message.Message): 27 | __slots__ = ["schema_key", "value"] 28 | SCHEMA_KEY_FIELD_NUMBER: _ClassVar[int] 29 | VALUE_FIELD_NUMBER: _ClassVar[int] 30 | schema_key: str 31 | value: bytes 32 | def __init__(self, schema_key: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ... 33 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_player/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.player_storage import v2_pb2 as _v2_pb2 2 | from takasho.schema.fes.resource.club_role import v1_pb2 as _v1_pb2 3 | from google.protobuf.internal import containers as _containers 4 | from google.protobuf import descriptor as _descriptor 5 | from google.protobuf import message as _message 6 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 7 | 8 | DESCRIPTOR: _descriptor.FileDescriptor 9 | 10 | class ClubPlayer(_message.Message): 11 | __slots__ = ["frame", "joined_at", "last_logged_in_at", "nickname", "player_id", "player_short_id", "player_storage_entries", "role"] 12 | FRAME_FIELD_NUMBER: _ClassVar[int] 13 | JOINED_AT_FIELD_NUMBER: _ClassVar[int] 14 | LAST_LOGGED_IN_AT_FIELD_NUMBER: _ClassVar[int] 15 | NICKNAME_FIELD_NUMBER: _ClassVar[int] 16 | PLAYER_ID_FIELD_NUMBER: _ClassVar[int] 17 | PLAYER_SHORT_ID_FIELD_NUMBER: _ClassVar[int] 18 | PLAYER_STORAGE_ENTRIES_FIELD_NUMBER: _ClassVar[int] 19 | ROLE_FIELD_NUMBER: _ClassVar[int] 20 | frame: int 21 | joined_at: int 22 | last_logged_in_at: int 23 | nickname: str 24 | player_id: str 25 | player_short_id: str 26 | player_storage_entries: _containers.RepeatedCompositeFieldContainer[_v2_pb2.Entry] 27 | role: _v1_pb2.ClubRole 28 | def __init__(self, player_id: _Optional[str] = ..., player_storage_entries: _Optional[_Iterable[_Union[_v2_pb2.Entry, _Mapping]]] = ..., nickname: _Optional[str] = ..., frame: _Optional[int] = ..., role: _Optional[_Union[_v1_pb2.ClubRole, str]] = ..., joined_at: _Optional[int] = ..., last_logged_in_at: _Optional[int] = ..., player_short_id: _Optional[str] = ...) -> None: ... 29 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/zendesk_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/player_api/zendesk.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+takasho/schema/fes/player_api/zendesk.proto\x12\x1dtakasho.schema.fes.player_api\"F\n\x17ZendeskGetUnreadCountV1\x1a\t\n\x07Request\x1a \n\x08Response\x12\x14\n\x0cunread_count\x18\x01 \x01(\x03\x32\xa1\x01\n\x07Zendesk\x12\x95\x01\n\x10GetUnreadCountV1\x12>.takasho.schema.fes.player_api.ZendeskGetUnreadCountV1.Request\x1a?.takasho.schema.fes.player_api.ZendeskGetUnreadCountV1.Response\"\x00\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.player_api.zendesk_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _ZENDESKGETUNREADCOUNTV1._serialized_start=78 24 | _ZENDESKGETUNREADCOUNTV1._serialized_end=148 25 | _ZENDESKGETUNREADCOUNTV1_REQUEST._serialized_start=105 26 | _ZENDESKGETUNREADCOUNTV1_REQUEST._serialized_end=114 27 | _ZENDESKGETUNREADCOUNTV1_RESPONSE._serialized_start=116 28 | _ZENDESKGETUNREADCOUNTV1_RESPONSE._serialized_end=148 29 | _ZENDESK._serialized_start=151 30 | _ZENDESK._serialized_end=312 31 | # @@protoc_insertion_point(module_scope) 32 | -------------------------------------------------------------------------------- /keys/grpc.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQChib+decQZNPgy 3 | eVTGukJ1MPpG7J3vYCe/ahBPK0huwdJa2TfdhgReeRp4F4dOox3pmrw+mrc76d7m 4 | gnN5KKD4TGWDbAHco5vCets294LLs3bykIu+69qLMXHSZoaOVEkheXAhCpNwmJPQ 5 | NiDOQHqBvNZt2GutW2A1/YHkMFJoekwKY9QoaFkZGjHA2aKqP6IMmXMuUhuQD06I 6 | 3RMFUt2Mm5b/nvJ+rXk8kua2e1yitu7mHgvK6enCTw7lF1ps/J+SUmMvWkmFyf4f 7 | Ot64Dlz4haycOSW+/HkKPDLYQ9P9BVf1gj4gH9R0D21Br2j/NRvMWhdxe68Azoqg 8 | WTuO2Qb/AgMBAAECggEACwec9J4wqb3y/SiesBZeB6LJUVgXrUAQsWJcbGNwBdao 9 | dnk4IMvlTCQTDsR11y85EXnLb6+LDQVk1F1vkAQaVZ81xo70jkGs7CRiXR2c/yv+ 10 | Vlql8r/SQ3Mj//Ht2cBfNptpm2qdnZsKwLU+xoZ4Nu0+FkWoOIUxi7jcX8h9iqeZ 11 | 2ASzSn2uhwjPkrQpy+QdgIr9aiLbRGXuD6uRTIFQ+TWjiRaEh+1aIdPtmZtRNMgC 12 | lLTl/rLiH3tcEqzCWctGGgYNIeAhevKrPmt2NhUB5pcleSuHyJHgFEdCJ6K0+xCi 13 | 2wU/MYnMbU39m9J/DjbGJLuRppcwyi5VrGBKfLKRvQKBgQC4yJJWzusN21T2sZgd 14 | HUQoz6GD6mJeZGeDN8XtRL3zPrUd7OkWJrS/Fsz3cAsoIrJFBVVnLa3nuH3PVDS4 15 | En2c67fbt7wZqi90XS1qCaKGVrEOHOsDYwYwBf8mFtKgUBPprufVpkBDgwvTu5pA 16 | q+QMvF2rx8+E1H3AWtwpk3l2dQKBgQDfy7LYnYWWkDyXPcNDA4O4+CMexSVs6TmG 17 | yM1Ura1YOsbNqZYLuamQ145D2z5DT8AMqlJ3dhna3hd88vXa2o0NMsaNTobkYqVo 18 | B0EDNIGZCo7jL97bLRlTnridfZJix/Bgf6JvB3wU/hwtBNKj4m8ti3prju1LV66r 19 | KpfI+X3hIwKBgAGuMUaA0zppCDjGHLAHGBuW580fUI2zNA3JcA9cVK3loBgJk4UU 20 | DQi/2FVXu4I97okaJ1Cs5av5zYsZJPGXmXTX3/Arl5ZUKeJRBpy0QbofB7UtJiX9 21 | vIyrQUrDYl7623OAl7Mls+fpRS5Dwn9cENLc061AP+7hT9N0ABSQtsYRAoGBAJA6 22 | OtyXSAyskB/4UerSTQXcBOZDr8bs14IhzxKPi3OdDZplfKm50anjAXCBzzKaJu8C 23 | pXsPxcHj98cy3XdZ+iVTX9qZjR2K5YaRhjiGki8LOuL3auxduEDHvbrhvoGi0Suf 24 | lhNwA2uUCJyKyyWLPJNhnFfNGOjBbXQqUv/WqmV5AoGAXydqhWODVhpEqB/AUwz9 25 | /6adpX7b3hWzOCzFmes6jkAM8U9EzkciJBBk7Rsef54pGzgOjcGPSOnMHpzqrcfW 26 | zhAYHwX1ppg93kebcN8s0b+JOYFBmMI/N+yqmhI1K8x23GCf47TJkvUtQiUdhG+Q 27 | tnA17pP1xtmNd1J6GSaTAlY= 28 | -----END PRIVATE KEY----- 29 | -------------------------------------------------------------------------------- /keys/lcx.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCaloreBM35jJfH 3 | TDVZSeURTM4sgbkdHl4CP/LVMK5KNgwikieDjEcjesbE0CDksSfO0MUhUdlw/BHd 4 | oBlQTUhYtgC4VwOKo1eCfiJgxNl0oOg9OBF2T2Vud1huMDxmrPoAN60iuyV7pJgW 5 | HBIQVzQyByC3x3lPE3j/ZalyDHbgdTo215o8W8piIxCQhHb/Fw8qeVP99U2klew3 6 | kys3oeILJFC/cc6HbOlZJ56qhncTF/MsFWF7NRSBoj4Vv2U7LsPfwfahUyQbE6V/ 7 | kPoQsbRyeEP6pJlgBIUehDwIGV6UesNYianDI2RSzeq4xX63okSNAs7Ln8J1m9Xw 8 | iacN6GfdAgMBAAECggEAGIgLQXBBv3gwHdBaJvEzCKvHjAiJ97T59iFvx6USA3TQ 9 | OCw5WQbJwzeYk2Lz1VbHmmpG3iK+/s8BhsoBOl0JPgqj0pz8UuPY3zxk+DZEy908 10 | /XoIS14OGpmVzuaYrzKD+cTcFMbeC+DywY9yzmUIQ2geKQvelE3ixaS8XvzbYIL6 11 | isVb3pwpqH4SAuEnY8rketU8PIyBe7CGqNg3dG0/NfpwJIQlK/sKFfSxnvvpAwQp 12 | C8bbXTUc/XXB4zOGytc5H3KHrHhV4mrH2YVnO0Gvsv0arv5mejsYDgl0maSiNp1W 13 | ADEL4I7MQ0uLH992AMUp4ySVt8IW7sYRCBWOrh/5gQKBgQDWIzzegElRWmnjTTMi 14 | DHp0TJjjsqhWwqDkbbbdmSrvvwFYJ9cZZ/SA6aBMiHANwi01wisRBcuJnR4Z8UyX 15 | FngefHWYWZ5f9hbfQiLyLEvRMog+pyo0anviE1Rj48Cr61cQ/pr8cHlZ0ndNVs6H 16 | 2kpbaiE3D0SS0xGhAPrYOjkj2wKBgQC4zxPf3u0/af6hB8TerA6d4GT9pBg8yRhr 17 | M3BhyawGsrFkiCOHCjKMQEwOsebz+fJR5TEH5BJAZHLT+Jkn+wO+CTbs4ISotFS+ 18 | QdRpjL6gkx4oeXUjwxUvBzYUt8+9ziwM/yybj3KWQ+NBurafbNKHQghdiVuctYSy 19 | nkNqswdMpwKBgQDS1ZMCx3BopwqGf+YOahbPFvOZjLft5GchQVzAxiPeNUOPlnpU 20 | S2QS4POxJsyc30hAG9LnSbti3M1cYZY1VCwkaAooXGRwuw09+BIMOszTRluaxF/r 21 | h8Q9jSaTyxRSsL3iv6u9TMhORcis3wEuBSEc7FuTqHat0R8UVLCl4H2N7QKBgQCH 22 | TLOUNrUitAsDAZkUHIsm8l19hGFqPx9tfF9OeENFNBXDMBgyiTiwjXIhYAVhoR/S 23 | 7SSUTlk+Y0vd/CbEqnT27/ASQ91bVYqlL7S/AZeeH5b4stMbt3sOzwy85kVlBEgj 24 | y71wtfiCInmCaZvB4/3NoH5XXHSBqjLYQh3BRAiYCQKBgCJwkplHZhH4eLyfQx2K 25 | lGaRyeVoq58JC07/HjAOHmWQbGzGgqhss4YEeSIkcmBh/sAcDHwxkwkbdbpYy2Or 26 | /I9sda86QYMFS6fjRdQOOfhB8c7hel2lV59j2394XysyvJ47O2cKKS2S+ISA5Qax 27 | dxUkK9O0kQEqLluJmGrVGkDN 28 | -----END PRIVATE KEY----- 29 | -------------------------------------------------------------------------------- /keys/lcx_ios.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqjVtLbqrLnu4+ 3 | PlPjt+Y+P+w+QfHvkhEkl0baTSGqmKz4An3inDid+z77oyPIFUeEd0dRHHRWqvsI 4 | TsJYwV+lbdH369aHNvOVi3aHhLBp4NBkp9Xpn6R0vY1pWAOqLIAKiTZKaaMvWCsh 5 | lI77d8QuUoJFytavcmp67PodA/f8NWWO9VvSSf/iIJjJdNwnghhJbwDSd3/3R3pt 6 | zn1jAYwIdw7dBu1fvMGdGZ+ctDJVvX9qH3FaOMn5qPi52RhRpqv11/qYS1n9VZw/ 7 | C8bLj23wHm3cPziRkaKpWkWUG9HpWcFVDRMho5wMbQdQiYpjTvln6JkBwQmDi38M 8 | mlDBviOpAgMBAAECggEADpnEX4xNVdo4xh5a2ytSrDCXvmqx1hMYoZvLxoOE5tBk 9 | OmUoNr6uACRSq4M3XHkp4ra9Zb28XfEMRZVMgQGo+QYSTBmmB3RWXQ6P6qEa4y2K 10 | WZuerf3rO81AbmzI/4gIvB4sBinN/Q8cvia0KOYDZv3MRkJLp8BxSi3Aabx9vdsG 11 | TKk6TypRw7e5soV/epdMD/ptJdZgjQgrp6VQ9zXDg3KvJPUtPQsGQH+RJy8hnVIB 12 | JSUyPEuEPHyFO8jgcYdByyT4x2Wd4U/VP+e339yYUsgmjhLqULScA4dU10wQwX/4 13 | vYIbjoYUTLVvfaI11BXbkvfp3pdCjjZs8z9PTEusiwKBgQDuZ3wdPx0Fq5GnZrYG 14 | LbDXw6iHrflnsN38y8tamEo0vrHoViD70wTxSXP//U/dqLcOaCw7fcbIvd9B25EZ 15 | 2UMF5w6Bost5jH0smdXnnr5xztNd6tdbvCC97zErpJBTW0ACzUuCL7LyJL8mn2J9 16 | OzjddTEpfOD40NSZWX6OovkxswKBgQC3I9hKWhxwr7nWefBR98Y5x545EVmkfwzP 17 | bkVFCPdTN7EvB702AWyggb2A1aeBZO0kUlroOWcBwhWbkYF/pkhZFiqwIU7QLWtV 18 | w1OtaczwNClw/CzqVZe8f8kgkZ9XJtUVukwANGo6CHPltT/9PdHo5cIwRwUEj+aM 19 | jle2XbFPMwKBgHsxyrcqSAsID6pbrzAeKEY2+z2xrzHf+baKcTkNfTsoV7Lh3wWC 20 | lAlDlcfw1HaMmpu9RS4w3qoZQ+c6WQ7scG/6aEqhH1heOsjzbc/U/kC9Sgg8NLFY 21 | 0+qSUexli5cnjjpkb+KEV4o9ZvHEZxajpcz6pD72IyMwdswPrRB0MyV1AoGAf3l6 22 | xp4cZ69ZKlmsFlHh7zvr/Qr/m4k3sHavzpKkHI+KTBMV965cHwjPkAqnUmCe1AZi 23 | 8ntqIIYopiVMvz5N43yTcA9vHWZP7N1NtEoNdTDJm7RbyyyStok3xOy3vWDxNvN6 24 | jTXursBNc5mKlcne/z5VwWbdrkQ/lJxLn0tt7JMCgYEA4qdl44pOKfBMdXg4Qz43 25 | qGyjvjxcbVo4Z760SdLbjN7GAlVHpq1zSvTSTOfymToAncQvZvAOeglMix//D3nr 26 | QqgQRiDUHesozbiRCLGMZ7by3uZhJGC4ZNH9Jt1928qBMLj9MuA1G81GxoNuMTg3 27 | 7gWK8naLQHFc4png3a0sg9I= 28 | -----END PRIVATE KEY----- 29 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/announcement/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/announcement/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n?takasho/schema/common_featureset/resource/announcement/v1.proto\x12\x39takasho.schema.common_featureset.resource.announcement.v1\"\xd7\x01\n\x0c\x41nnouncement\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rlanguage_code\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x11\n\topened_at\x18\x04 \x01(\x12\x12\x11\n\tclosed_at\x18\x05 \x01(\x12\x12\r\n\x05value\x18\x06 \x01(\x0c\x12`\n\x08\x63ontents\x18\x07 \x03(\x0b\x32N.takasho.schema.common_featureset.resource.announcement.v1.AnnouncementContent\"8\n\x13\x41nnouncementContent\x12\x12\n\nschema_key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.announcement.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _ANNOUNCEMENT._serialized_start=127 24 | _ANNOUNCEMENT._serialized_end=342 25 | _ANNOUNCEMENTCONTENT._serialized_start=344 26 | _ANNOUNCEMENTCONTENT._serialized_end=400 27 | # @@protoc_insertion_point(module_scope) 28 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/login_bonus.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api; 3 | 4 | import "takasho/schema/fes/resource/login_bonus/v1.proto"; 5 | import "takasho/schema/common_featureset/resource/login_bonus/v1.proto"; 6 | import "takasho/schema/common_featureset/resource/player_inventory/v1.proto"; 7 | import "takasho/schema/fes/resource/comeback_login_bonus/v1.proto"; 8 | 9 | message LoginBonusCountUpProgressV1 { 10 | message Request {} 11 | 12 | message Response { 13 | repeated takasho.schema.fes.resource.login_bonus.v1.BingoLoginBonus bingo_login_bonuses = 1; 14 | repeated takasho.schema.common_featureset.resource.login_bonus.v1.LoginBonus campaign_login_bonuses = 2; 15 | repeated takasho.schema.common_featureset.resource.player_inventory.v1.PlayerInventory player_inventories = 3; 16 | repeated takasho.schema.fes.resource.comeback_login_bonus.v1.ComebackLoginBonus comeback_login_bonus = 4; 17 | repeated takasho.schema.fes.resource.comeback_login_bonus.v1.ComebackLoginBonusProgress comeback_login_bonus_progresses = 5; 18 | } 19 | } 20 | 21 | message LoginBonusGetAvailableV1 { 22 | message Request {} 23 | 24 | message Response { 25 | repeated takasho.schema.fes.resource.login_bonus.v1.BingoLoginBonus bingo_login_bonuses = 1; 26 | repeated takasho.schema.fes.resource.comeback_login_bonus.v1.ComebackLoginBonus comeback_login_bonus = 2; 27 | repeated takasho.schema.fes.resource.comeback_login_bonus.v1.ComebackLoginBonusProgress comeback_login_bonus_progresses = 3; 28 | } 29 | } 30 | 31 | service LoginBonus { 32 | rpc CountUpProgressV1(LoginBonusCountUpProgressV1.Request) returns (LoginBonusCountUpProgressV1.Response) {} 33 | rpc GetAvailableLoginBonusV1(LoginBonusGetAvailableV1.Request) returns (LoginBonusGetAvailableV1.Response) {} 34 | } 35 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/subscription/renewal_reward.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.fes.player_api.subscription import renewal_reward_pb2 5 | from takasho.schema.fes.player_api.subscription import renewal_reward_pb2_grpc 6 | 7 | 8 | class RenewalReward(renewal_reward_pb2_grpc.RenewalRewardServicer): 9 | 10 | def ReceiveV1(self, request, context): 11 | response = renewal_reward_pb2.RenewalRewardReceiveV1.Response() 12 | renewal_count = response.renewal_counts.add() 13 | renewal_count.subscription_product_id = 'subs.currency.com.dena.game.12026801.mitamaishipass370' 14 | renewal_count.count = 12 15 | return response 16 | 17 | 18 | def add_RenewalRewardServicer_to_server(servicer, server): 19 | rpc_method_handlers = { 20 | 'GetAvailableV1': grpc.unary_unary_rpc_method_handler( 21 | servicer.GetAvailableV1, 22 | request_deserializer=lambda x: renewal_reward_pb2.RenewalRewardGetAvailableV1.Request.FromString(packer.unpack(x)), 23 | response_serializer=lambda x: packer.pack(renewal_reward_pb2.RenewalRewardGetAvailableV1.Response.SerializeToString(x)), 24 | ), 25 | 'ReceiveV1': grpc.unary_unary_rpc_method_handler( 26 | servicer.ReceiveV1, 27 | request_deserializer=lambda x: renewal_reward_pb2.RenewalRewardReceiveV1.Request.FromString(packer.unpack(x)), 28 | response_serializer=lambda x: packer.pack(renewal_reward_pb2.RenewalRewardReceiveV1.Response.SerializeToString(x)), 29 | ), 30 | } 31 | generic_handler = grpc.method_handlers_generic_handler( 32 | 'takasho.schema.fes.player_api.subscription.renewal_reward.RenewalReward', rpc_method_handlers) 33 | server.add_generic_rpc_handlers((generic_handler,)) 34 | 35 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_preference/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union 5 | 6 | DESCRIPTOR: _descriptor.FileDescriptor 7 | 8 | class ClubPreference(_message.Message): 9 | __slots__ = ["approval_policy", "character_id", "name", "play_style", "profile", "searchable"] 10 | class ApprovalPolicy(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 11 | __slots__ = [] 12 | class PlayStyle(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 13 | __slots__ = [] 14 | APPROVAL_POLICY_FIELD_NUMBER: _ClassVar[int] 15 | AUTO: ClubPreference.ApprovalPolicy 16 | BEGINNER: ClubPreference.PlayStyle 17 | CHARACTER_ID_FIELD_NUMBER: _ClassVar[int] 18 | GATTSURI: ClubPreference.PlayStyle 19 | MANUAL: ClubPreference.ApprovalPolicy 20 | MATTARI: ClubPreference.PlayStyle 21 | NAME_FIELD_NUMBER: _ClassVar[int] 22 | PLAY_STYLE_FIELD_NUMBER: _ClassVar[int] 23 | PROFILE_FIELD_NUMBER: _ClassVar[int] 24 | SEARCHABLE_FIELD_NUMBER: _ClassVar[int] 25 | UNKNOWN_POLICY: ClubPreference.ApprovalPolicy 26 | UNKNOWN_STYLE: ClubPreference.PlayStyle 27 | approval_policy: ClubPreference.ApprovalPolicy 28 | character_id: str 29 | name: str 30 | play_style: ClubPreference.PlayStyle 31 | profile: str 32 | searchable: bool 33 | def __init__(self, name: _Optional[str] = ..., profile: _Optional[str] = ..., play_style: _Optional[_Union[ClubPreference.PlayStyle, str]] = ..., approval_policy: _Optional[_Union[ClubPreference.ApprovalPolicy, str]] = ..., searchable: bool = ..., character_id: _Optional[str] = ...) -> None: ... 34 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/club/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.fes.resource.club_preference import v1_pb2 as takasho_dot_schema_dot_fes_dot_resource_dot_club__preference_dot_v1__pb2 15 | from takasho.schema.fes.resource.club_storage import v1_pb2 as takasho_dot_schema_dot_fes_dot_resource_dot_club__storage_dot_v1__pb2 16 | 17 | 18 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)takasho/schema/fes/resource/club/v1.proto\x12#takasho.schema.fes.resource.club.v1\x1a\x34takasho/schema/fes/resource/club_preference/v1.proto\x1a\x31takasho/schema/fes/resource/club_storage/v1.proto\"\xde\x01\n\x04\x43lub\x12\x0f\n\x07\x63lub_id\x18\x01 \x01(\t\x12\x14\n\x0corganized_at\x18\x02 \x01(\x12\x12R\n\npreference\x18\x03 \x01(\x0b\x32>.takasho.schema.fes.resource.club_preference.v1.ClubPreference\x12[\n\x14\x63lub_storage_entries\x18\x04 \x03(\x0b\x32=.takasho.schema.fes.resource.club_storage.v1.ClubStorageEntryb\x06proto3') 19 | 20 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 21 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.club.v1_pb2', globals()) 22 | if _descriptor._USE_C_DESCRIPTORS == False: 23 | 24 | DESCRIPTOR._options = None 25 | _CLUB._serialized_start=188 26 | _CLUB._serialized_end=410 27 | # @@protoc_insertion_point(module_scope) 28 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/club_chat.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.fes.player_api import club_chat_pb2 5 | from takasho.schema.fes.player_api import club_chat_pb2_grpc 6 | 7 | 8 | class ClubChat(club_chat_pb2_grpc.ClubChatServicer): 9 | 10 | def GetMessagesCount(self, request, context): 11 | response = club_chat_pb2.ClubChatGetMessagesCount.Response() 12 | return response 13 | 14 | 15 | def add_ClubChatServicer_to_server(servicer, server): 16 | rpc_method_handlers = { 17 | 'CreateMessage': grpc.unary_unary_rpc_method_handler( 18 | servicer.CreateMessage, 19 | request_deserializer=lambda x: club_chat_pb2.ClubChatCreateMessage.Request.FromString(packer.unpack(x)), 20 | response_serializer=lambda x: packer.pack(club_chat_pb2.ClubChatCreateMessage.Response.SerializeToString(x)), 21 | ), 22 | 'Get': grpc.unary_unary_rpc_method_handler( 23 | servicer.Get, 24 | request_deserializer=lambda x: club_chat_pb2.ClubChatGet.Request.FromString(packer.unpack(x)), 25 | response_serializer=lambda x: packer.pack(club_chat_pb2.ClubChatGet.Response.SerializeToString(x)), 26 | ), 27 | 'GetMessagesCount': grpc.unary_unary_rpc_method_handler( 28 | servicer.GetMessagesCount, 29 | request_deserializer=lambda x: club_chat_pb2.ClubChatGetMessagesCount.Request.FromString(packer.unpack(x)), 30 | response_serializer=lambda x: packer.pack(club_chat_pb2.ClubChatGetMessagesCount.Response.SerializeToString(x)), 31 | ), 32 | } 33 | generic_handler = grpc.method_handlers_generic_handler( 34 | 'takasho.schema.fes.player_api.club_chat.ClubChat', rpc_method_handlers) 35 | server.add_generic_rpc_handlers((generic_handler,)) 36 | 37 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/regular_ranking.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.fes.player_api import regular_ranking_pb2 5 | from takasho.schema.fes.player_api import regular_ranking_pb2_grpc 6 | 7 | 8 | class RegularRanking(regular_ranking_pb2_grpc.RegularRankingServicer): 9 | 10 | def RegisterV1(self, request, context): 11 | response = regular_ranking_pb2.RegularRankingRegisterV1.Response() 12 | player_ranking = response.player_ranking 13 | player_ranking.ranking_key = request.ranking_key 14 | player_ranking.player_id = 'b7124b56-3fa4-427a-8dd0-64ec8830294e' 15 | player_ranking.nick_name = 'DanKagu' 16 | player_ranking.score = request.score 17 | return response 18 | 19 | 20 | def add_RegularRankingServicer_to_server(servicer, server): 21 | rpc_method_handlers = { 22 | 'RegisterV1': grpc.unary_unary_rpc_method_handler( 23 | servicer.RegisterV1, 24 | request_deserializer=lambda x: regular_ranking_pb2.RegularRankingRegisterV1.Request.FromString(packer.unpack(x)), 25 | response_serializer=lambda x: packer.pack(regular_ranking_pb2.RegularRankingRegisterV1.Response.SerializeToString(x)), 26 | ), 27 | 'GetTopRankingV1': grpc.unary_unary_rpc_method_handler( 28 | servicer.GetTopRankingV1, 29 | request_deserializer=lambda x: regular_ranking_pb2.RegularRankingGetTopRankingV1.Request.FromString(packer.unpack(x)), 30 | response_serializer=lambda x: packer.pack(regular_ranking_pb2.RegularRankingGetTopRankingV1.Response.SerializeToString(x)), 31 | ), 32 | } 33 | generic_handler = grpc.method_handlers_generic_handler( 34 | 'takasho.schema.fes.player_api.RegularRanking', rpc_method_handlers) 35 | server.add_generic_rpc_handlers((generic_handler,)) 36 | 37 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/extra_announcement/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/extra_announcement/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nEtakasho/schema/common_featureset/resource/extra_announcement/v1.proto\x12?takasho.schema.common_featureset.resource.extra_announcement.v1\"\xe7\x01\n\x11\x45xtraAnnouncement\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rlanguage_code\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x11\n\topened_at\x18\x04 \x01(\x12\x12\x11\n\tclosed_at\x18\x05 \x01(\x12\x12\r\n\x05value\x18\x06 \x01(\x0c\x12k\n\x08\x63ontents\x18\x07 \x03(\x0b\x32Y.takasho.schema.common_featureset.resource.extra_announcement.v1.ExtraAnnouncementContent\"=\n\x18\x45xtraAnnouncementContent\x12\x12\n\nschema_key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.extra_announcement.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _EXTRAANNOUNCEMENT._serialized_start=139 24 | _EXTRAANNOUNCEMENT._serialized_end=370 25 | _EXTRAANNOUNCEMENTCONTENT._serialized_start=372 26 | _EXTRAANNOUNCEMENTCONTENT._serialized_end=433 27 | # @@protoc_insertion_point(module_scope) 28 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_storage/v2_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/player_storage/v2.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nAtakasho/schema/common_featureset/resource/player_storage/v2.proto\x12;takasho.schema.common_featureset.resource.player_storage.v2\"^\n\x05\x45ntry\x12\x11\n\tplayer_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\x0c\x12\x12\n\ncreated_at\x18\x04 \x01(\x12\x12\x12\n\nupdated_at\x18\x05 \x01(\x12\"\xac\x01\n\tCriterion\x12\x0b\n\x03key\x18\x01 \x01(\t\x12j\n\rmatching_type\x18\x02 \x01(\x0e\x32S.takasho.schema.common_featureset.resource.player_storage.v2.Criterion.MatchingType\"&\n\x0cMatchingType\x12\t\n\x05\x45XACT\x10\x00\x12\x0b\n\x07\x46ORWARD\x10\x01\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.player_storage.v2_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _ENTRY._serialized_start=130 24 | _ENTRY._serialized_end=224 25 | _CRITERION._serialized_start=227 26 | _CRITERION._serialized_end=399 27 | _CRITERION_MATCHINGTYPE._serialized_start=361 28 | _CRITERION_MATCHINGTYPE._serialized_end=399 29 | # @@protoc_insertion_point(module_scope) 30 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/wallet.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import grpc 4 | 5 | from takasho.packer import packer 6 | from takasho.schema.common_featureset.player_api import wallet_pb2 7 | from takasho.schema.common_featureset.player_api import wallet_pb2_grpc 8 | 9 | 10 | class Wallet(wallet_pb2_grpc.WalletServicer): 11 | 12 | def GetBalancesV2(self, request, context): 13 | response = wallet_pb2.WalletGetBalancesV2.Response() 14 | p = Path(__file__).with_name('wallet.hex') 15 | with p.open() as f: 16 | r = wallet_pb2.WalletGetBalancesV2.Response.FromString( 17 | bytes.fromhex(f.read())) 18 | response.total.CopyFrom(r.total) 19 | response.expiration.CopyFrom(r.expiration) 20 | response.expired_at = request.expired_at 21 | return response 22 | 23 | 24 | def add_WalletServicer_to_server(servicer, server): 25 | rpc_method_handlers = { 26 | 'GetBalancesV1': grpc.unary_unary_rpc_method_handler( 27 | servicer.GetBalancesV1, 28 | request_deserializer=lambda x: wallet_pb2.WalletGetBalancesV1.Request.FromString(packer.unpack(x)), 29 | response_serializer=lambda x: packer.pack(wallet_pb2.WalletGetBalancesV1.Response.SerializeToString(x)), 30 | ), 31 | 'GetBalancesV2': grpc.unary_unary_rpc_method_handler( 32 | servicer.GetBalancesV2, 33 | request_deserializer=lambda x: wallet_pb2.WalletGetBalancesV2.Request.FromString(packer.unpack(x)), 34 | response_serializer=lambda x: packer.pack(wallet_pb2.WalletGetBalancesV2.Response.SerializeToString(x)), 35 | ), 36 | } 37 | generic_handler = grpc.method_handlers_generic_handler( 38 | 'takasho.schema.common_featureset.player_api.Wallet', rpc_method_handlers) 39 | server.add_generic_rpc_handlers((generic_handler,)) 40 | 41 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/wallet_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.wallet import v3_pb2 as _v3_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class WalletGetBalancesV1(_message.Message): 10 | __slots__ = [] 11 | class Request(_message.Message): 12 | __slots__ = [] 13 | def __init__(self) -> None: ... 14 | class Response(_message.Message): 15 | __slots__ = ["balance"] 16 | BALANCE_FIELD_NUMBER: _ClassVar[int] 17 | balance: _containers.RepeatedCompositeFieldContainer[_v3_pb2.Wallet] 18 | def __init__(self, balance: _Optional[_Iterable[_Union[_v3_pb2.Wallet, _Mapping]]] = ...) -> None: ... 19 | def __init__(self) -> None: ... 20 | 21 | class WalletGetBalancesV2(_message.Message): 22 | __slots__ = [] 23 | class Request(_message.Message): 24 | __slots__ = ["expired_at"] 25 | EXPIRED_AT_FIELD_NUMBER: _ClassVar[int] 26 | expired_at: int 27 | def __init__(self, expired_at: _Optional[int] = ...) -> None: ... 28 | class Response(_message.Message): 29 | __slots__ = ["expiration", "expired_at", "total"] 30 | EXPIRATION_FIELD_NUMBER: _ClassVar[int] 31 | EXPIRED_AT_FIELD_NUMBER: _ClassVar[int] 32 | TOTAL_FIELD_NUMBER: _ClassVar[int] 33 | expiration: _v3_pb2.Wallet 34 | expired_at: int 35 | total: _v3_pb2.Wallet 36 | def __init__(self, total: _Optional[_Union[_v3_pb2.Wallet, _Mapping]] = ..., expiration: _Optional[_Union[_v3_pb2.Wallet, _Mapping]] = ..., expired_at: _Optional[int] = ...) -> None: ... 37 | def __init__(self) -> None: ... 38 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/player_api/player_storage.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.player_api; 3 | 4 | import "takasho/schema/common_featureset/resource/player_storage/v2.proto"; 5 | import "takasho/schema/common_featureset/resource/player_event_log/v1.proto"; 6 | 7 | message PlayerStorageSetEntriesV2 { 8 | message Request { 9 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry entries = 1; 10 | string next_revision = 2; 11 | string previous_revision = 3; 12 | repeated takasho.schema.common_featureset.resource.player_event_log.v1.PlayerEventLog player_event_logs = 4; 13 | } 14 | 15 | message Response { 16 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry entries = 1; 17 | string revision = 2; 18 | } 19 | } 20 | 21 | message PlayerStorageGetEntriesV2 { 22 | message Request { 23 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Criterion criteria = 1; 24 | } 25 | 26 | message Response { 27 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry entries = 1; 28 | string revision = 2; 29 | } 30 | } 31 | 32 | message PlayerStorageGetOtherPlayerEntriesV2 { 33 | message Request { 34 | repeated string player_ids = 1; 35 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Criterion criteria = 2; 36 | } 37 | 38 | message Response { 39 | repeated takasho.schema.common_featureset.resource.player_storage.v2.Entry entries = 1; 40 | } 41 | } 42 | 43 | service PlayerStorage { 44 | rpc SetEntriesV2(PlayerStorageSetEntriesV2.Request) returns (PlayerStorageSetEntriesV2.Response) {} 45 | rpc GetEntriesV2(PlayerStorageGetEntriesV2.Request) returns (PlayerStorageGetEntriesV2.Response) {} 46 | rpc GetOtherPlayerEntriesV2(PlayerStorageGetOtherPlayerEntriesV2.Request) returns (PlayerStorageGetOtherPlayerEntriesV2.Response) {} 47 | } 48 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/player_inventory/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.player_inventory.v1; 3 | 4 | enum ItemType { 5 | GAME_RUNTIME = 0; 6 | VIRTUAL_CURRENCY = 1; 7 | PLAYER_KEY_VALUE_STORE = 2; 8 | } 9 | 10 | enum Route { 11 | UNKNOWN = 0; 12 | PURCHASE = 1; 13 | LOGIN_BONUS = 2; 14 | LOOT_BOX = 3; 15 | ACHIEVEMENT = 4; 16 | COMPENSATION = 5; 17 | GAME_PRODUCT = 6; 18 | BOX_LOOT_BOX = 7; 19 | STEP_UP_LOOT_BOX = 8; 20 | TOTAL_LOGIN_BONUS = 9; 21 | } 22 | 23 | enum OrderField { 24 | OPENED_AT = 0; 25 | EXPIRED_AT = 1; 26 | } 27 | 28 | enum OrderDirection { 29 | ASC = 0; 30 | DESC = 1; 31 | } 32 | 33 | message Criterion { 34 | sint64 count = 1; 35 | repeated Route routes = 2; 36 | repeated string search_labels = 3; 37 | string page_token = 4; 38 | sint64 expired_at_before = 5; 39 | sint64 expired_at_after = 6; 40 | Order order = 7; 41 | } 42 | 43 | message Order { 44 | OrderField field = 1; 45 | OrderDirection direction = 2; 46 | } 47 | 48 | message PlayerInventory { 49 | string id = 1; 50 | string player_id = 2; 51 | ItemType item_type = 3; 52 | string schema_key = 4; 53 | bytes value = 5; 54 | Route route = 6; 55 | string message = 7; 56 | string search_label = 8; 57 | sint64 opened_at = 9; 58 | sint64 expired_at = 10; 59 | string system_resource_name = 11; 60 | sint64 system_resource_num = 12; 61 | sint64 created_at = 13; 62 | } 63 | 64 | message ReceivedPlayerInventory { 65 | string id = 1; 66 | string original_inventory_id = 2; 67 | string player_id = 3; 68 | ItemType item_type = 4; 69 | string schema_key = 5; 70 | bytes value = 6; 71 | Route route = 7; 72 | string message = 8; 73 | string search_label = 9; 74 | sint64 opened_at = 10; 75 | sint64 expired_at = 11; 76 | string system_resource_name = 12; 77 | sint64 system_resource_num = 13; 78 | sint64 created_at = 14; 79 | sint64 received_at = 15; 80 | } 81 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/club_chat.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api.club_chat; 3 | 4 | import "takasho/schema/fes/resource/club_chat/v1.proto"; 5 | 6 | message ClubChatCreateMessage { 7 | message Message { 8 | string club_id = 1; 9 | string message_id = 2; 10 | takasho.schema.fes.resource.club_chat.v1.MessageType message_type = 3; 11 | string content = 4; 12 | } 13 | 14 | message Request { 15 | repeated Message messages = 1; 16 | } 17 | 18 | message Response { 19 | repeated takasho.schema.fes.resource.club_chat.v1.ClubChatMessage message = 1; 20 | } 21 | } 22 | 23 | message ClubChatGet { 24 | message Request { 25 | string club_id = 1; 26 | repeated takasho.schema.fes.resource.club_chat.v1.MessageType types = 2; 27 | repeated string player_storage_keys = 3; 28 | uint64 max_results = 4; 29 | string page_token = 5; 30 | } 31 | 32 | message Response { 33 | repeated takasho.schema.fes.resource.club_chat.v1.ClubChatMessage message = 1; 34 | string prev_page_token = 2; 35 | string next_page_token = 3; 36 | } 37 | } 38 | 39 | message ClubChatGetMessagesCount { 40 | message MessageID { 41 | string club_id = 1; 42 | string message_id = 2; 43 | } 44 | 45 | message Request { 46 | repeated MessageID message_ids = 1; 47 | repeated takasho.schema.fes.resource.club_chat.v1.MessageType ignore_message_types = 2; 48 | bool ignore_my_message = 3; 49 | } 50 | 51 | message MessageCount { 52 | string club_id = 1; 53 | uint64 messages_count = 2; 54 | } 55 | 56 | message Response { 57 | repeated MessageCount message_counts = 1; 58 | } 59 | } 60 | 61 | service ClubChat { 62 | rpc CreateMessage(ClubChatCreateMessage.Request) returns (ClubChatCreateMessage.Response) {} 63 | rpc Get(ClubChatGet.Request) returns (ClubChatGet.Response) {} 64 | rpc GetMessagesCount(ClubChatGetMessagesCount.Request) returns (ClubChatGetMessagesCount.Response) {} 65 | } 66 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/consume_resource_set/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import containers as _containers 2 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | NO_CONSUME: ResourceType 9 | PLAYER_KEY_VALUE: ResourceType 10 | VIRTUAL_CURRENCY: ResourceType 11 | 12 | class ConsumeResource(_message.Message): 13 | __slots__ = ["consume_resource_id", "priority", "resource_key"] 14 | CONSUME_RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] 15 | PRIORITY_FIELD_NUMBER: _ClassVar[int] 16 | RESOURCE_KEY_FIELD_NUMBER: _ClassVar[int] 17 | consume_resource_id: str 18 | priority: int 19 | resource_key: str 20 | def __init__(self, consume_resource_id: _Optional[str] = ..., resource_key: _Optional[str] = ..., priority: _Optional[int] = ...) -> None: ... 21 | 22 | class ConsumeResourceSet(_message.Message): 23 | __slots__ = ["amount", "consume_resource_set_id", "consume_resources", "resource_type"] 24 | AMOUNT_FIELD_NUMBER: _ClassVar[int] 25 | CONSUME_RESOURCES_FIELD_NUMBER: _ClassVar[int] 26 | CONSUME_RESOURCE_SET_ID_FIELD_NUMBER: _ClassVar[int] 27 | RESOURCE_TYPE_FIELD_NUMBER: _ClassVar[int] 28 | amount: int 29 | consume_resource_set_id: str 30 | consume_resources: _containers.RepeatedCompositeFieldContainer[ConsumeResource] 31 | resource_type: ResourceType 32 | def __init__(self, consume_resource_set_id: _Optional[str] = ..., resource_type: _Optional[_Union[ResourceType, str]] = ..., amount: _Optional[int] = ..., consume_resources: _Optional[_Iterable[_Union[ConsumeResource, _Mapping]]] = ...) -> None: ... 33 | 34 | class ResourceType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 35 | __slots__ = [] 36 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/game_message.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.common_featureset.player_api import game_message_pb2 5 | from takasho.schema.common_featureset.player_api import game_message_pb2_grpc 6 | 7 | 8 | class GameMessage(game_message_pb2_grpc.GameMessageServicer): 9 | 10 | def GetMessageV1(self, request, context): 11 | response = game_message_pb2.GameMessageGetMessageV1.Response() 12 | return response 13 | 14 | 15 | def add_GameMessageServicer_to_server(servicer, server): 16 | rpc_method_handlers = { 17 | 'GetUnreadMessageV1': grpc.unary_unary_rpc_method_handler( 18 | servicer.GetUnreadMessageV1, 19 | request_deserializer=lambda x: game_message_pb2.GameMessageGetUnreadMessageV1.Request.FromString(packer.unpack(x)), 20 | response_serializer=lambda x: packer.pack(game_message_pb2.GameMessageGetUnreadMessageV1.Response.SerializeToString(x)), 21 | ), 22 | 'GetMessageV1': grpc.unary_unary_rpc_method_handler( 23 | servicer.GetMessageV1, 24 | request_deserializer=lambda x: game_message_pb2.GameMessageGetMessageV1.Request.FromString(packer.unpack(x)), 25 | response_serializer=lambda x: packer.pack(game_message_pb2.GameMessageGetMessageV1.Response.SerializeToString(x)), 26 | ), 27 | 'ReceiveMessageV1': grpc.unary_unary_rpc_method_handler( 28 | servicer.ReceiveMessageV1, 29 | request_deserializer=lambda x: game_message_pb2.GameMessageReceiveMessageV1.Request.FromString(packer.unpack(x)), 30 | response_serializer=lambda x: packer.pack(game_message_pb2.GameMessageReceiveMessageV1.Response.SerializeToString(x)), 31 | ), 32 | } 33 | generic_handler = grpc.method_handlers_generic_handler( 34 | 'takasho.schema.common_featureset.player_api.GameMessage', rpc_method_handlers) 35 | server.add_generic_rpc_handlers((generic_handler,)) 36 | 37 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_achievement/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/club_achievement/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5takasho/schema/fes/resource/club_achievement/v1.proto\x12/takasho.schema.fes.resource.club_achievement.v1\"\x8f\x02\n\x0f\x43lubAchievement\x12\x1b\n\x13\x63lub_achievement_id\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x12\x11\n\topened_at\x18\x03 \x01(\x12\x12\x11\n\tclosed_at\x18\x04 \x01(\x12\x12N\n\nreset_type\x18\x05 \x01(\x0e\x32:.takasho.schema.fes.resource.club_achievement.v1.ResetType\x12\x11\n\tdate_line\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x61y_of_week\x18\x07 \x01(\x12\x12\x10\n\x08\x63\x61tegory\x18\x08 \x01(\t\x12\x0e\n\x06points\x18\t \x01(\x04\x12\x10\n\x08unlocked\x18\n \x01(\x08\"\x1c\n\x08\x43riteria\x12\x10\n\x08\x63\x61tegory\x18\x01 \x01(\t*3\n\tResetType\x12\x08\n\x04NONE\x10\x00\x12\r\n\tDATE_LINE\x10\x01\x12\r\n\tWEEK_LINE\x10\x02\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.club_achievement.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _RESETTYPE._serialized_start=410 24 | _RESETTYPE._serialized_end=461 25 | _CLUBACHIEVEMENT._serialized_start=107 26 | _CLUBACHIEVEMENT._serialized_end=378 27 | _CRITERIA._serialized_start=380 28 | _CRITERIA._serialized_end=408 29 | # @@protoc_insertion_point(module_scope) 30 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_product/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/game_product/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.consume_resource_set import v1_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_consume__resource__set_dot_v1__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n?takasho/schema/common_featureset/resource/game_product/v1.proto\x12\x39takasho.schema.common_featureset.resource.game_product.v1\x1aGtakasho/schema/common_featureset/resource/consume_resource_set/v1.proto\"\xbe\x02\n\x0bGameProduct\x12\x17\n\x0fgame_product_id\x18\x01 \x01(\t\x12\x12\n\nschema_key\x18\x06 \x01(\t\x12\r\n\x05value\x18\x07 \x01(\x0c\x12\x19\n\x11inventory_message\x18\x08 \x01(\t\x12\x11\n\topened_at\x18\t \x01(\x12\x12\x11\n\tclosed_at\x18\n \x01(\x12\x12\x16\n\x0ereceivable_sec\x18\x0b \x01(\x12\x12\x14\n\x0csearch_label\x18\x0c \x01(\t\x12t\n\x15\x63onsume_resource_sets\x18\r \x03(\x0b\x32U.takasho.schema.common_featureset.resource.consume_resource_set.v1.ConsumeResourceSet\x12\x0e\n\x06labels\x18\x0e \x03(\tb\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.game_product.v1_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _GAMEPRODUCT._serialized_start=200 25 | _GAMEPRODUCT._serialized_end=518 26 | # @@protoc_insertion_point(module_scope) 27 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_key_value/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/player_key_value/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nCtakasho/schema/common_featureset/resource/player_key_value/v1.proto\x12=takasho.schema.common_featureset.resource.player_key_value.v1\"@\n\x0ePlayerKeyValue\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x12\x12\x12\n\nexpired_at\x18\x03 \x01(\x12\"9\n\x1bPlayerKeyValueIncrementInfo\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05\x64\x65lta\x18\x02 \x01(\x12\"7\n\x18PlayerKeyValueUpdateInfo\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x12*8\n\rOperationType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08INCREASE\x10\x01\x12\x0c\n\x08\x44\x45\x43REASE\x10\x02\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.player_key_value.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _OPERATIONTYPE._serialized_start=316 24 | _OPERATIONTYPE._serialized_end=372 25 | _PLAYERKEYVALUE._serialized_start=134 26 | _PLAYERKEYVALUE._serialized_end=198 27 | _PLAYERKEYVALUEINCREMENTINFO._serialized_start=200 28 | _PLAYERKEYVALUEINCREMENTINFO._serialized_end=257 29 | _PLAYERKEYVALUEUPDATEINFO._serialized_start=259 30 | _PLAYERKEYVALUEUPDATEINFO._serialized_end=314 31 | # @@protoc_insertion_point(module_scope) 32 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/game_product/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.consume_resource_set import v1_pb2 as _v1_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class GameProduct(_message.Message): 10 | __slots__ = ["closed_at", "consume_resource_sets", "game_product_id", "inventory_message", "labels", "opened_at", "receivable_sec", "schema_key", "search_label", "value"] 11 | CLOSED_AT_FIELD_NUMBER: _ClassVar[int] 12 | CONSUME_RESOURCE_SETS_FIELD_NUMBER: _ClassVar[int] 13 | GAME_PRODUCT_ID_FIELD_NUMBER: _ClassVar[int] 14 | INVENTORY_MESSAGE_FIELD_NUMBER: _ClassVar[int] 15 | LABELS_FIELD_NUMBER: _ClassVar[int] 16 | OPENED_AT_FIELD_NUMBER: _ClassVar[int] 17 | RECEIVABLE_SEC_FIELD_NUMBER: _ClassVar[int] 18 | SCHEMA_KEY_FIELD_NUMBER: _ClassVar[int] 19 | SEARCH_LABEL_FIELD_NUMBER: _ClassVar[int] 20 | VALUE_FIELD_NUMBER: _ClassVar[int] 21 | closed_at: int 22 | consume_resource_sets: _containers.RepeatedCompositeFieldContainer[_v1_pb2.ConsumeResourceSet] 23 | game_product_id: str 24 | inventory_message: str 25 | labels: _containers.RepeatedScalarFieldContainer[str] 26 | opened_at: int 27 | receivable_sec: int 28 | schema_key: str 29 | search_label: str 30 | value: bytes 31 | def __init__(self, game_product_id: _Optional[str] = ..., schema_key: _Optional[str] = ..., value: _Optional[bytes] = ..., inventory_message: _Optional[str] = ..., opened_at: _Optional[int] = ..., closed_at: _Optional[int] = ..., receivable_sec: _Optional[int] = ..., search_label: _Optional[str] = ..., consume_resource_sets: _Optional[_Iterable[_Union[_v1_pb2.ConsumeResourceSet, _Mapping]]] = ..., labels: _Optional[_Iterable[str]] = ...) -> None: ... 32 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_achievement/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union 5 | 6 | DATE_LINE: ResetType 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | NONE: ResetType 9 | WEEK_LINE: ResetType 10 | 11 | class ClubAchievement(_message.Message): 12 | __slots__ = ["category", "closed_at", "club_achievement_id", "date_line", "day_of_week", "opened_at", "points", "reset_type", "unlocked", "value"] 13 | CATEGORY_FIELD_NUMBER: _ClassVar[int] 14 | CLOSED_AT_FIELD_NUMBER: _ClassVar[int] 15 | CLUB_ACHIEVEMENT_ID_FIELD_NUMBER: _ClassVar[int] 16 | DATE_LINE_FIELD_NUMBER: _ClassVar[int] 17 | DAY_OF_WEEK_FIELD_NUMBER: _ClassVar[int] 18 | OPENED_AT_FIELD_NUMBER: _ClassVar[int] 19 | POINTS_FIELD_NUMBER: _ClassVar[int] 20 | RESET_TYPE_FIELD_NUMBER: _ClassVar[int] 21 | UNLOCKED_FIELD_NUMBER: _ClassVar[int] 22 | VALUE_FIELD_NUMBER: _ClassVar[int] 23 | category: str 24 | closed_at: int 25 | club_achievement_id: str 26 | date_line: str 27 | day_of_week: int 28 | opened_at: int 29 | points: int 30 | reset_type: ResetType 31 | unlocked: bool 32 | value: bytes 33 | def __init__(self, club_achievement_id: _Optional[str] = ..., value: _Optional[bytes] = ..., opened_at: _Optional[int] = ..., closed_at: _Optional[int] = ..., reset_type: _Optional[_Union[ResetType, str]] = ..., date_line: _Optional[str] = ..., day_of_week: _Optional[int] = ..., category: _Optional[str] = ..., points: _Optional[int] = ..., unlocked: bool = ...) -> None: ... 34 | 35 | class Criteria(_message.Message): 36 | __slots__ = ["category"] 37 | CATEGORY_FIELD_NUMBER: _ClassVar[int] 38 | category: str 39 | def __init__(self, category: _Optional[str] = ...) -> None: ... 40 | 41 | class ResetType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 42 | __slots__ = [] 43 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_player/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/club_player/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.player_storage import v2_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_player__storage_dot_v2__pb2 15 | from takasho.schema.fes.resource.club_role import v1_pb2 as takasho_dot_schema_dot_fes_dot_resource_dot_club__role_dot_v1__pb2 16 | 17 | 18 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0takasho/schema/fes/resource/club_player/v1.proto\x12*takasho.schema.fes.resource.club_player.v1\x1a\x41takasho/schema/common_featureset/resource/player_storage/v2.proto\x1a.takasho/schema/fes/resource/club_role/v1.proto\"\xad\x02\n\nClubPlayer\x12\x11\n\tplayer_id\x18\x01 \x01(\t\x12\x62\n\x16player_storage_entries\x18\x02 \x03(\x0b\x32\x42.takasho.schema.common_featureset.resource.player_storage.v2.Entry\x12\x10\n\x08nickname\x18\x03 \x01(\t\x12\r\n\x05\x66rame\x18\x04 \x01(\x04\x12@\n\x04role\x18\x05 \x01(\x0e\x32\x32.takasho.schema.fes.resource.club_role.v1.ClubRole\x12\x11\n\tjoined_at\x18\x06 \x01(\x12\x12\x19\n\x11last_logged_in_at\x18\x07 \x01(\x12\x12\x17\n\x0fplayer_short_id\x18\x08 \x01(\tb\x06proto3') 19 | 20 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 21 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.club_player.v1_pb2', globals()) 22 | if _descriptor._USE_C_DESCRIPTORS == False: 23 | 24 | DESCRIPTOR._options = None 25 | _CLUBPLAYER._serialized_start=212 26 | _CLUBPLAYER._serialized_end=513 27 | # @@protoc_insertion_point(module_scope) 28 | -------------------------------------------------------------------------------- /protos/takasho/schema/common_featureset/resource/player_event_log/v1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.common_featureset.resource.player_event_log.v1; 3 | 4 | message PlayerEventLog { 5 | string event_category = 1; 6 | string event_id = 2; 7 | bytes payload = 3; 8 | string player_state = 4; 9 | bytes player_state_bytes = 5; 10 | } 11 | 12 | message PlayerEventLogServerPayload { 13 | bytes takasho_log = 1; 14 | } 15 | 16 | message LootBoxV3 { 17 | string transaction_id = 1; 18 | string loot_box_product_id = 2; 19 | sint64 num = 3; 20 | repeated string content_ids = 4; 21 | repeated ConsumeResource consume_resources = 5; 22 | repeated bytes content_values = 6; 23 | bytes takasho_log = 7; 24 | } 25 | 26 | message StepUpLootBoxV2 { 27 | string transaction_id = 1; 28 | string step_up_loot_box_product_id = 2; 29 | sint64 step = 3; 30 | sint64 next_step = 4; 31 | repeated string content_ids = 5; 32 | repeated ConsumeResource consume_resources = 6; 33 | repeated bytes content_values = 7; 34 | bytes takasho_log = 8; 35 | } 36 | 37 | message ConsumeResource { 38 | string consume_resource_key = 1; 39 | sint64 consume_resource_num = 2; 40 | } 41 | 42 | message FriendV1 { 43 | enum ActionType { 44 | SEND = 0; 45 | APPROVE = 1; 46 | REJECT = 2; 47 | DELETE_FRIEND = 3; 48 | DELETE_SENT_REQUEST = 4; 49 | } 50 | 51 | ActionType action_type = 1; 52 | repeated string target_player_ids = 2; 53 | sint64 friends_num = 3; 54 | sint64 max_friends_num = 4; 55 | bytes takasho_log = 5; 56 | } 57 | 58 | message ConsumeVc { 59 | message Currency { 60 | string name = 1; 61 | sint64 amonut = 2; 62 | } 63 | 64 | string id = 1; 65 | repeated Currency currencies = 2; 66 | bytes takasho_log = 3; 67 | } 68 | 69 | message BoxLootBox { 70 | string transaction_id = 1; 71 | string gacha_id = 2; 72 | sint64 exec_num = 3; 73 | repeated string get_item_ids = 4; 74 | string paid_id = 5; 75 | sint64 paid_amount = 6; 76 | sint64 af_box_remain = 7; 77 | bytes takasho_log = 8; 78 | } 79 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/reconstruction_spot.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import grpc 4 | 5 | from takasho.packer import packer 6 | from takasho.schema.fes.player_api import reconstruction_spot_pb2 7 | from takasho.schema.fes.player_api import reconstruction_spot_pb2_grpc 8 | 9 | 10 | class ReconstructionSpot(reconstruction_spot_pb2_grpc.ReconstructionSpotServicer): 11 | 12 | def GetAvailableV1(self, request, context): 13 | p = Path(__file__).with_name('reconstruction_spot.hex') 14 | with p.open() as f: 15 | response = reconstruction_spot_pb2. \ 16 | ReconstructionSpotGetAvailableV1.Response.FromString( 17 | bytes.fromhex(f.read())) 18 | return response 19 | 20 | def ReceivePrizesV1(self, request, context): 21 | response = reconstruction_spot_pb2.ReconstructionSpotReceivePrizesV1.Response() 22 | return response 23 | 24 | 25 | def add_ReconstructionSpotServicer_to_server(servicer, server): 26 | rpc_method_handlers = { 27 | 'GetAvailableV1': grpc.unary_unary_rpc_method_handler( 28 | servicer.GetAvailableV1, 29 | request_deserializer=lambda x: reconstruction_spot_pb2.ReconstructionSpotGetAvailableV1.Request.FromString(packer.unpack(x)), 30 | response_serializer=lambda x: packer.pack(reconstruction_spot_pb2.ReconstructionSpotGetAvailableV1.Response.SerializeToString(x)), 31 | ), 32 | 'ReceivePrizesV1': grpc.unary_unary_rpc_method_handler( 33 | servicer.ReceivePrizesV1, 34 | request_deserializer=lambda x: reconstruction_spot_pb2.ReconstructionSpotReceivePrizesV1.Request.FromString(packer.unpack(x)), 35 | response_serializer=lambda x: packer.pack(reconstruction_spot_pb2.ReconstructionSpotReceivePrizesV1.Response.SerializeToString(x)), 36 | ), 37 | } 38 | generic_handler = grpc.method_handlers_generic_handler( 39 | 'takasho.schema.fes.player_api.ReconstructionSpot', rpc_method_handlers) 40 | server.add_generic_rpc_handlers((generic_handler,)) 41 | 42 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/reconstruction_spot_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.fes.resource.reconstruction_spot import v1_pb2 as _v1_pb2 2 | from takasho.schema.common_featureset.resource.player_event_log import v1_pb2 as _v1_pb2_1 3 | from takasho.schema.common_featureset.resource.player_inventory import v1_pb2 as _v1_pb2_1_1 4 | from google.protobuf.internal import containers as _containers 5 | from google.protobuf import descriptor as _descriptor 6 | from google.protobuf import message as _message 7 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 8 | 9 | DESCRIPTOR: _descriptor.FileDescriptor 10 | 11 | class ReconstructionSpotGetAvailableV1(_message.Message): 12 | __slots__ = [] 13 | class Request(_message.Message): 14 | __slots__ = [] 15 | def __init__(self) -> None: ... 16 | class Response(_message.Message): 17 | __slots__ = ["spots"] 18 | SPOTS_FIELD_NUMBER: _ClassVar[int] 19 | spots: _containers.RepeatedCompositeFieldContainer[_v1_pb2.Spot] 20 | def __init__(self, spots: _Optional[_Iterable[_Union[_v1_pb2.Spot, _Mapping]]] = ...) -> None: ... 21 | def __init__(self) -> None: ... 22 | 23 | class ReconstructionSpotReceivePrizesV1(_message.Message): 24 | __slots__ = [] 25 | class Request(_message.Message): 26 | __slots__ = ["player_event_logs"] 27 | PLAYER_EVENT_LOGS_FIELD_NUMBER: _ClassVar[int] 28 | player_event_logs: _containers.RepeatedCompositeFieldContainer[_v1_pb2_1.PlayerEventLog] 29 | def __init__(self, player_event_logs: _Optional[_Iterable[_Union[_v1_pb2_1.PlayerEventLog, _Mapping]]] = ...) -> None: ... 30 | class Response(_message.Message): 31 | __slots__ = ["inventories"] 32 | INVENTORIES_FIELD_NUMBER: _ClassVar[int] 33 | inventories: _containers.RepeatedCompositeFieldContainer[_v1_pb2_1_1.PlayerInventory] 34 | def __init__(self, inventories: _Optional[_Iterable[_Union[_v1_pb2_1_1.PlayerInventory, _Mapping]]] = ...) -> None: ... 35 | def __init__(self) -> None: ... 36 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_preference/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/club_preference/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n4takasho/schema/fes/resource/club_preference/v1.proto\x12.takasho.schema.fes.resource.club_preference.v1\"\xa4\x03\n\x0e\x43lubPreference\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07profile\x18\x02 \x01(\t\x12\\\n\nplay_style\x18\x03 \x01(\x0e\x32H.takasho.schema.fes.resource.club_preference.v1.ClubPreference.PlayStyle\x12\x66\n\x0f\x61pproval_policy\x18\x04 \x01(\x0e\x32M.takasho.schema.fes.resource.club_preference.v1.ClubPreference.ApprovalPolicy\x12\x12\n\nsearchable\x18\x05 \x01(\x08\x12\x14\n\x0c\x63haracter_id\x18\x06 \x01(\t\"G\n\tPlayStyle\x12\x11\n\rUNKNOWN_STYLE\x10\x00\x12\x0b\n\x07MATTARI\x10\x01\x12\x0c\n\x08GATTSURI\x10\x02\x12\x0c\n\x08\x42\x45GINNER\x10\x03\":\n\x0e\x41pprovalPolicy\x12\x12\n\x0eUNKNOWN_POLICY\x10\x00\x12\n\n\x06MANUAL\x10\x01\x12\x08\n\x04\x41UTO\x10\x02\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.club_preference.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _CLUBPREFERENCE._serialized_start=105 24 | _CLUBPREFERENCE._serialized_end=525 25 | _CLUBPREFERENCE_PLAYSTYLE._serialized_start=394 26 | _CLUBPREFERENCE_PLAYSTYLE._serialized_end=465 27 | _CLUBPREFERENCE_APPROVALPOLICY._serialized_start=467 28 | _CLUBPREFERENCE_APPROVALPOLICY._serialized_end=525 29 | # @@protoc_insertion_point(module_scope) 30 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/system/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union 5 | 6 | APPLE: PlatformType 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | EDITOR: PlatformType 9 | GOOGLE: PlatformType 10 | LCX: BaasType 11 | NPF: BaasType 12 | UNKNOWN: PlatformType 13 | 14 | class BanStatus(_message.Message): 15 | __slots__ = ["description", "expired_at", "has_expired_at", "status"] 16 | DESCRIPTION_FIELD_NUMBER: _ClassVar[int] 17 | EXPIRED_AT_FIELD_NUMBER: _ClassVar[int] 18 | HAS_EXPIRED_AT_FIELD_NUMBER: _ClassVar[int] 19 | STATUS_FIELD_NUMBER: _ClassVar[int] 20 | description: str 21 | expired_at: int 22 | has_expired_at: bool 23 | status: int 24 | def __init__(self, status: _Optional[int] = ..., description: _Optional[str] = ..., expired_at: _Optional[int] = ..., has_expired_at: bool = ...) -> None: ... 25 | 26 | class DeviceInfo(_message.Message): 27 | __slots__ = ["platform"] 28 | PLATFORM_FIELD_NUMBER: _ClassVar[int] 29 | platform: PlatformType 30 | def __init__(self, platform: _Optional[_Union[PlatformType, str]] = ...) -> None: ... 31 | 32 | class PlayerStatus(_message.Message): 33 | __slots__ = ["description", "expired_at", "has_expired_at", "status"] 34 | DESCRIPTION_FIELD_NUMBER: _ClassVar[int] 35 | EXPIRED_AT_FIELD_NUMBER: _ClassVar[int] 36 | HAS_EXPIRED_AT_FIELD_NUMBER: _ClassVar[int] 37 | STATUS_FIELD_NUMBER: _ClassVar[int] 38 | description: str 39 | expired_at: int 40 | has_expired_at: bool 41 | status: int 42 | def __init__(self, status: _Optional[int] = ..., description: _Optional[str] = ..., expired_at: _Optional[int] = ..., has_expired_at: bool = ...) -> None: ... 43 | 44 | class PlatformType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 45 | __slots__ = [] 46 | 47 | class BaasType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 48 | __slots__ = [] 49 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/consume_resource_set/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/consume_resource_set/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nGtakasho/schema/common_featureset/resource/consume_resource_set/v1.proto\x12\x41takasho.schema.common_featureset.resource.consume_resource_set.v1\"\x9c\x02\n\x12\x43onsumeResourceSet\x12\x1f\n\x17\x63onsume_resource_set_id\x18\x01 \x01(\t\x12\x66\n\rresource_type\x18\x02 \x01(\x0e\x32O.takasho.schema.common_featureset.resource.consume_resource_set.v1.ResourceType\x12\x0e\n\x06\x61mount\x18\x03 \x01(\x12\x12m\n\x11\x63onsume_resources\x18\x04 \x03(\x0b\x32R.takasho.schema.common_featureset.resource.consume_resource_set.v1.ConsumeResource\"V\n\x0f\x43onsumeResource\x12\x1b\n\x13\x63onsume_resource_id\x18\x01 \x01(\t\x12\x14\n\x0cresource_key\x18\x02 \x01(\t\x12\x10\n\x08priority\x18\x03 \x01(\x12*J\n\x0cResourceType\x12\x14\n\x10VIRTUAL_CURRENCY\x10\x00\x12\x14\n\x10PLAYER_KEY_VALUE\x10\x01\x12\x0e\n\nNO_CONSUME\x10\x02\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.consume_resource_set.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _RESOURCETYPE._serialized_start=517 24 | _RESOURCETYPE._serialized_end=591 25 | _CONSUMERESOURCESET._serialized_start=143 26 | _CONSUMERESOURCESET._serialized_end=427 27 | _CONSUMERESOURCE._serialized_start=429 28 | _CONSUMERESOURCE._serialized_end=515 29 | # @@protoc_insertion_point(module_scope) 30 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/wallet/v3_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import containers as _containers 2 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class Wallet(_message.Message): 10 | __slots__ = ["player_key_values", "virtual_currencies"] 11 | class Platform(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 12 | __slots__ = [] 13 | class PlayerKeyValue(_message.Message): 14 | __slots__ = ["amount", "key"] 15 | AMOUNT_FIELD_NUMBER: _ClassVar[int] 16 | KEY_FIELD_NUMBER: _ClassVar[int] 17 | amount: int 18 | key: str 19 | def __init__(self, key: _Optional[str] = ..., amount: _Optional[int] = ...) -> None: ... 20 | class VirtualCurrency(_message.Message): 21 | __slots__ = ["amount", "platform", "virtual_currency_name"] 22 | AMOUNT_FIELD_NUMBER: _ClassVar[int] 23 | PLATFORM_FIELD_NUMBER: _ClassVar[int] 24 | VIRTUAL_CURRENCY_NAME_FIELD_NUMBER: _ClassVar[int] 25 | amount: int 26 | platform: Wallet.Platform 27 | virtual_currency_name: str 28 | def __init__(self, virtual_currency_name: _Optional[str] = ..., platform: _Optional[_Union[Wallet.Platform, str]] = ..., amount: _Optional[int] = ...) -> None: ... 29 | APPLE: Wallet.Platform 30 | GOOGLE: Wallet.Platform 31 | NONE: Wallet.Platform 32 | PLAYER_KEY_VALUES_FIELD_NUMBER: _ClassVar[int] 33 | VIRTUAL_CURRENCIES_FIELD_NUMBER: _ClassVar[int] 34 | player_key_values: _containers.RepeatedCompositeFieldContainer[Wallet.PlayerKeyValue] 35 | virtual_currencies: _containers.RepeatedCompositeFieldContainer[Wallet.VirtualCurrency] 36 | def __init__(self, virtual_currencies: _Optional[_Iterable[_Union[Wallet.VirtualCurrency, _Mapping]]] = ..., player_key_values: _Optional[_Iterable[_Union[Wallet.PlayerKeyValue, _Mapping]]] = ...) -> None: ... 37 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/baas_product/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.player_inventory import v1_pb2 as _v1_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class BaasProduct(_message.Message): 10 | __slots__ = ["baas_product_id", "extras", "inventory_message"] 11 | BAAS_PRODUCT_ID_FIELD_NUMBER: _ClassVar[int] 12 | EXTRAS_FIELD_NUMBER: _ClassVar[int] 13 | INVENTORY_MESSAGE_FIELD_NUMBER: _ClassVar[int] 14 | baas_product_id: str 15 | extras: _containers.RepeatedCompositeFieldContainer[BaasProductExtra] 16 | inventory_message: str 17 | def __init__(self, baas_product_id: _Optional[str] = ..., inventory_message: _Optional[str] = ..., extras: _Optional[_Iterable[_Union[BaasProductExtra, _Mapping]]] = ...) -> None: ... 18 | 19 | class BaasProductExtra(_message.Message): 20 | __slots__ = ["baas_product_extra_id", "item_type", "schema_key", "search_label", "system_resource_name", "system_resource_num", "value"] 21 | BAAS_PRODUCT_EXTRA_ID_FIELD_NUMBER: _ClassVar[int] 22 | ITEM_TYPE_FIELD_NUMBER: _ClassVar[int] 23 | SCHEMA_KEY_FIELD_NUMBER: _ClassVar[int] 24 | SEARCH_LABEL_FIELD_NUMBER: _ClassVar[int] 25 | SYSTEM_RESOURCE_NAME_FIELD_NUMBER: _ClassVar[int] 26 | SYSTEM_RESOURCE_NUM_FIELD_NUMBER: _ClassVar[int] 27 | VALUE_FIELD_NUMBER: _ClassVar[int] 28 | baas_product_extra_id: str 29 | item_type: _v1_pb2.ItemType 30 | schema_key: str 31 | search_label: str 32 | system_resource_name: str 33 | system_resource_num: int 34 | value: bytes 35 | def __init__(self, baas_product_extra_id: _Optional[str] = ..., item_type: _Optional[_Union[_v1_pb2.ItemType, str]] = ..., schema_key: _Optional[str] = ..., value: _Optional[bytes] = ..., system_resource_name: _Optional[str] = ..., system_resource_num: _Optional[int] = ..., search_label: _Optional[str] = ...) -> None: ... 36 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/wallet/v3_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/wallet/v3.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n9takasho/schema/common_featureset/resource/wallet/v3.proto\x12\x33takasho.schema.common_featureset.resource.wallet.v3\"\xcf\x03\n\x06Wallet\x12g\n\x12virtual_currencies\x18\x01 \x03(\x0b\x32K.takasho.schema.common_featureset.resource.wallet.v3.Wallet.VirtualCurrency\x12\x65\n\x11player_key_values\x18\x02 \x03(\x0b\x32J.takasho.schema.common_featureset.resource.wallet.v3.Wallet.PlayerKeyValue\x1a\x98\x01\n\x0fVirtualCurrency\x12\x1d\n\x15virtual_currency_name\x18\x01 \x01(\t\x12V\n\x08platform\x18\x02 \x01(\x0e\x32\x44.takasho.schema.common_featureset.resource.wallet.v3.Wallet.Platform\x12\x0e\n\x06\x61mount\x18\x03 \x01(\x12\x1a-\n\x0ePlayerKeyValue\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x12\"+\n\x08Platform\x12\x08\n\x04NONE\x10\x00\x12\t\n\x05\x41PPLE\x10\x01\x12\n\n\x06GOOGLE\x10\x02\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.wallet.v3_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _WALLET._serialized_start=115 24 | _WALLET._serialized_end=578 25 | _WALLET_VIRTUALCURRENCY._serialized_start=334 26 | _WALLET_VIRTUALCURRENCY._serialized_end=486 27 | _WALLET_PLAYERKEYVALUE._serialized_start=488 28 | _WALLET_PLAYERKEYVALUE._serialized_end=533 29 | _WALLET_PLATFORM._serialized_start=535 30 | _WALLET_PLATFORM._serialized_end=578 31 | # @@protoc_insertion_point(module_scope) 32 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/game_status_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/player_api/game_status.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.game_status import v1_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_game__status_dot_v1__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n=takasho/schema/common_featureset/player_api/game_status.proto\x12+takasho.schema.common_featureset.player_api\x1a>takasho/schema/common_featureset/resource/game_status/v1.proto\"\xcd\x01\n\x0fGameStatusGetV1\x1aZ\n\x07Request\x12O\n\x06values\x18\x01 \x03(\x0b\x32?.takasho.schema.common_featureset.resource.game_status.v1.Value\x1a^\n\x08Response\x12R\n\x08statuses\x18\x01 \x03(\x0b\x32@.takasho.schema.common_featureset.resource.game_status.v1.Status2\xa5\x01\n\nGameStatus\x12\x96\x01\n\x05GetV1\x12\x44.takasho.schema.common_featureset.player_api.GameStatusGetV1.Request\x1a\x45.takasho.schema.common_featureset.player_api.GameStatusGetV1.Response\"\x00\x62\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.player_api.game_status_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _GAMESTATUSGETV1._serialized_start=175 25 | _GAMESTATUSGETV1._serialized_end=380 26 | _GAMESTATUSGETV1_REQUEST._serialized_start=194 27 | _GAMESTATUSGETV1_REQUEST._serialized_end=284 28 | _GAMESTATUSGETV1_RESPONSE._serialized_start=286 29 | _GAMESTATUSGETV1_RESPONSE._serialized_end=380 30 | _GAMESTATUS._serialized_start=383 31 | _GAMESTATUS._serialized_end=548 32 | # @@protoc_insertion_point(module_scope) 33 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/player_event_log_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/player_api/player_event_log.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.player_event_log import v1_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_player__event__log_dot_v1__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nBtakasho/schema/common_featureset/player_api/player_event_log.proto\x12+takasho.schema.common_featureset.player_api\x1a\x43takasho/schema/common_featureset/resource/player_event_log/v1.proto\"\x97\x01\n\x14PlayerEventLogSendV1\x1as\n\x07Request\x12h\n\x11player_event_logs\x18\x01 \x03(\x0b\x32M.takasho.schema.common_featureset.resource.player_event_log.v1.PlayerEventLog\x1a\n\n\x08Response2\xb4\x01\n\x0ePlayerEventLog\x12\xa1\x01\n\x06SendV1\x12I.takasho.schema.common_featureset.player_api.PlayerEventLogSendV1.Request\x1aJ.takasho.schema.common_featureset.player_api.PlayerEventLogSendV1.Response\"\x00\x62\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.player_api.player_event_log_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _PLAYEREVENTLOGSENDV1._serialized_start=185 25 | _PLAYEREVENTLOGSENDV1._serialized_end=336 26 | _PLAYEREVENTLOGSENDV1_REQUEST._serialized_start=209 27 | _PLAYEREVENTLOGSENDV1_REQUEST._serialized_end=324 28 | _PLAYEREVENTLOGSENDV1_RESPONSE._serialized_start=326 29 | _PLAYEREVENTLOGSENDV1_RESPONSE._serialized_end=336 30 | _PLAYEREVENTLOG._serialized_start=339 31 | _PLAYEREVENTLOG._serialized_end=519 32 | # @@protoc_insertion_point(module_scope) 33 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/regular_ranking_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.fes.resource.player_regular_ranking import v1_pb2 as _v1_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class RegularRankingGetTopRankingV1(_message.Message): 10 | __slots__ = [] 11 | class Request(_message.Message): 12 | __slots__ = ["count", "ranking_key", "start"] 13 | COUNT_FIELD_NUMBER: _ClassVar[int] 14 | RANKING_KEY_FIELD_NUMBER: _ClassVar[int] 15 | START_FIELD_NUMBER: _ClassVar[int] 16 | count: int 17 | ranking_key: str 18 | start: int 19 | def __init__(self, ranking_key: _Optional[str] = ..., start: _Optional[int] = ..., count: _Optional[int] = ...) -> None: ... 20 | class Response(_message.Message): 21 | __slots__ = ["player_rankings"] 22 | PLAYER_RANKINGS_FIELD_NUMBER: _ClassVar[int] 23 | player_rankings: _containers.RepeatedCompositeFieldContainer[_v1_pb2.PlayerRegularRanking] 24 | def __init__(self, player_rankings: _Optional[_Iterable[_Union[_v1_pb2.PlayerRegularRanking, _Mapping]]] = ...) -> None: ... 25 | def __init__(self) -> None: ... 26 | 27 | class RegularRankingRegisterV1(_message.Message): 28 | __slots__ = [] 29 | class Request(_message.Message): 30 | __slots__ = ["ranking_key", "score"] 31 | RANKING_KEY_FIELD_NUMBER: _ClassVar[int] 32 | SCORE_FIELD_NUMBER: _ClassVar[int] 33 | ranking_key: str 34 | score: int 35 | def __init__(self, ranking_key: _Optional[str] = ..., score: _Optional[int] = ...) -> None: ... 36 | class Response(_message.Message): 37 | __slots__ = ["player_ranking"] 38 | PLAYER_RANKING_FIELD_NUMBER: _ClassVar[int] 39 | player_ranking: _v1_pb2.PlayerRegularRanking 40 | def __init__(self, player_ranking: _Optional[_Union[_v1_pb2.PlayerRegularRanking, _Mapping]] = ...) -> None: ... 41 | def __init__(self) -> None: ... 42 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/system/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/system/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n9takasho/schema/common_featureset/resource/system/v1.proto\x12\x33takasho.schema.common_featureset.resource.system.v1\"a\n\nDeviceInfo\x12S\n\x08platform\x18\x01 \x01(\x0e\x32\x41.takasho.schema.common_featureset.resource.system.v1.PlatformType\"_\n\x0cPlayerStatus\x12\x0e\n\x06status\x18\x01 \x01(\x12\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x12\n\nexpired_at\x18\x03 \x01(\x12\x12\x16\n\x0ehas_expired_at\x18\x04 \x01(\x08\"\\\n\tBanStatus\x12\x0e\n\x06status\x18\x01 \x01(\x12\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x12\n\nexpired_at\x18\x03 \x01(\x12\x12\x16\n\x0ehas_expired_at\x18\x04 \x01(\x08*>\n\x0cPlatformType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06GOOGLE\x10\x01\x12\t\n\x05\x41PPLE\x10\x02\x12\n\n\x06\x45\x44ITOR\x10\x03*\x1c\n\x08\x42\x61\x61sType\x12\x07\n\x03NPF\x10\x00\x12\x07\n\x03LCX\x10\x01\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.system.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _PLATFORMTYPE._serialized_start=404 24 | _PLATFORMTYPE._serialized_end=466 25 | _BAASTYPE._serialized_start=468 26 | _BAASTYPE._serialized_end=496 27 | _DEVICEINFO._serialized_start=114 28 | _DEVICEINFO._serialized_end=211 29 | _PLAYERSTATUS._serialized_start=213 30 | _PLAYERSTATUS._serialized_end=308 31 | _BANSTATUS._serialized_start=310 32 | _BANSTATUS._serialized_end=402 33 | # @@protoc_insertion_point(module_scope) 34 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/baas_product/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/baas_product/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.player_inventory import v1_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_player__inventory_dot_v1__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n?takasho/schema/common_featureset/resource/baas_product/v1.proto\x12\x39takasho.schema.common_featureset.resource.baas_product.v1\x1a\x43takasho/schema/common_featureset/resource/player_inventory/v1.proto\"\x9e\x01\n\x0b\x42\x61\x61sProduct\x12\x17\n\x0f\x62\x61\x61s_product_id\x18\x01 \x01(\t\x12\x19\n\x11inventory_message\x18\x02 \x01(\t\x12[\n\x06\x65xtras\x18\x03 \x03(\x0b\x32K.takasho.schema.common_featureset.resource.baas_product.v1.BaasProductExtra\"\x81\x02\n\x10\x42\x61\x61sProductExtra\x12\x1d\n\x15\x62\x61\x61s_product_extra_id\x18\x01 \x01(\t\x12Z\n\titem_type\x18\x02 \x01(\x0e\x32G.takasho.schema.common_featureset.resource.player_inventory.v1.ItemType\x12\x12\n\nschema_key\x18\x03 \x01(\t\x12\r\n\x05value\x18\x04 \x01(\x0c\x12\x1c\n\x14system_resource_name\x18\x05 \x01(\t\x12\x1b\n\x13system_resource_num\x18\x06 \x01(\x12\x12\x14\n\x0csearch_label\x18\x07 \x01(\tb\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.baas_product.v1_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _BAASPRODUCT._serialized_start=196 25 | _BAASPRODUCT._serialized_end=354 26 | _BAASPRODUCTEXTRA._serialized_start=357 27 | _BAASPRODUCTEXTRA._serialized_end=614 28 | # @@protoc_insertion_point(module_scope) 29 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/resource/player_preference/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/resource/player_preference/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | 15 | 16 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nDtakasho/schema/common_featureset/resource/player_preference/v1.proto\x12>takasho.schema.common_featureset.resource.player_preference.v1\"\xc9\x03\n\x10PlayerPreference\x12\x12\n\nbirth_year\x18\x02 \x01(\x12\x12\x13\n\x0b\x62irth_month\x18\x03 \x01(\x12\x12\x0f\n\x07\x63ountry\x18\x04 \x01(\t\x12\x10\n\x08language\x18\x05 \x01(\t\x12\x0f\n\x07opt_out\x18\x06 \x01(\x08\x12\x1d\n\x15\x63onsented_tos_version\x18\x07 \x01(\t\x12\x12\n\ncreated_at\x18\x08 \x01(\x12\x12\x12\n\nupdated_at\x18\t \x01(\x12\x12\x10\n\x08nickname\x18\n \x01(\t\x12(\n consented_privacy_policy_version\x18\x0b \x01(\t\x12\x1b\n\x13nickname_updated_at\x18\x0c \x01(\x12\x12t\n\x14\x61llow_friend_request\x18\r \x01(\x0e\x32V.takasho.schema.common_featureset.resource.player_preference.v1.AllowFriendRequestType\x12\x19\n\x11max_friend_number\x18\x0e \x01(\x12\x12\'\n\x1fmax_friend_request_queue_length\x18\x0f \x01(\x12*J\n\x16\x41llowFriendRequestType\x12\x11\n\rNO_PREFERENCE\x10\x00\x12\r\n\tALLOW_ALL\x10\x01\x12\x0e\n\nFORBID_ALL\x10\x02\x62\x06proto3') 17 | 18 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 19 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.resource.player_preference.v1_pb2', globals()) 20 | if _descriptor._USE_C_DESCRIPTORS == False: 21 | 22 | DESCRIPTOR._options = None 23 | _ALLOWFRIENDREQUESTTYPE._serialized_start=596 24 | _ALLOWFRIENDREQUESTTYPE._serialized_end=670 25 | _PLAYERPREFERENCE._serialized_start=137 26 | _PLAYERPREFERENCE._serialized_end=594 27 | # @@protoc_insertion_point(module_scope) 28 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/club_achievement_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.fes.resource.club_achievement import v1_pb2 as _v1_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf import descriptor as _descriptor 4 | from google.protobuf import message as _message 5 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 6 | 7 | DESCRIPTOR: _descriptor.FileDescriptor 8 | 9 | class ClubAchievementGetAvailable(_message.Message): 10 | __slots__ = [] 11 | class Request(_message.Message): 12 | __slots__ = ["criteria", "max_results", "page_token"] 13 | CRITERIA_FIELD_NUMBER: _ClassVar[int] 14 | MAX_RESULTS_FIELD_NUMBER: _ClassVar[int] 15 | PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] 16 | criteria: _v1_pb2.Criteria 17 | max_results: int 18 | page_token: str 19 | def __init__(self, criteria: _Optional[_Union[_v1_pb2.Criteria, _Mapping]] = ..., page_token: _Optional[str] = ..., max_results: _Optional[int] = ...) -> None: ... 20 | class Response(_message.Message): 21 | __slots__ = ["achievements", "next_page_token"] 22 | ACHIEVEMENTS_FIELD_NUMBER: _ClassVar[int] 23 | NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] 24 | achievements: _containers.RepeatedCompositeFieldContainer[_v1_pb2.ClubAchievement] 25 | next_page_token: str 26 | def __init__(self, achievements: _Optional[_Iterable[_Union[_v1_pb2.ClubAchievement, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ... 27 | def __init__(self) -> None: ... 28 | 29 | class ClubAchievementUnlockAndIncrementClubScalar(_message.Message): 30 | __slots__ = [] 31 | class Request(_message.Message): 32 | __slots__ = ["achievement_id", "scalar_key"] 33 | ACHIEVEMENT_ID_FIELD_NUMBER: _ClassVar[int] 34 | SCALAR_KEY_FIELD_NUMBER: _ClassVar[int] 35 | achievement_id: str 36 | scalar_key: str 37 | def __init__(self, achievement_id: _Optional[str] = ..., scalar_key: _Optional[str] = ...) -> None: ... 38 | class Response(_message.Message): 39 | __slots__ = [] 40 | def __init__(self) -> None: ... 41 | def __init__(self) -> None: ... 42 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_chat/v1_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.common_featureset.resource.player_storage import v2_pb2 as _v2_pb2 2 | from google.protobuf.internal import containers as _containers 3 | from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper 4 | from google.protobuf import descriptor as _descriptor 5 | from google.protobuf import message as _message 6 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 7 | 8 | ACHIEVEMENT: MessageType 9 | COMMENT: MessageType 10 | DESCRIPTOR: _descriptor.FileDescriptor 11 | NOTIFICATION: MessageType 12 | STAMP: MessageType 13 | UNKNOWN: MessageType 14 | 15 | class ClubChatMessage(_message.Message): 16 | __slots__ = ["club_id", "content", "message_id", "message_type", "player", "posted_at"] 17 | CLUB_ID_FIELD_NUMBER: _ClassVar[int] 18 | CONTENT_FIELD_NUMBER: _ClassVar[int] 19 | MESSAGE_ID_FIELD_NUMBER: _ClassVar[int] 20 | MESSAGE_TYPE_FIELD_NUMBER: _ClassVar[int] 21 | PLAYER_FIELD_NUMBER: _ClassVar[int] 22 | POSTED_AT_FIELD_NUMBER: _ClassVar[int] 23 | club_id: str 24 | content: str 25 | message_id: str 26 | message_type: MessageType 27 | player: ClubChatMessagePlayer 28 | posted_at: int 29 | def __init__(self, club_id: _Optional[str] = ..., message_id: _Optional[str] = ..., message_type: _Optional[_Union[MessageType, str]] = ..., content: _Optional[str] = ..., player: _Optional[_Union[ClubChatMessagePlayer, _Mapping]] = ..., posted_at: _Optional[int] = ...) -> None: ... 30 | 31 | class ClubChatMessagePlayer(_message.Message): 32 | __slots__ = ["nickname", "player_id", "player_storage_entries"] 33 | NICKNAME_FIELD_NUMBER: _ClassVar[int] 34 | PLAYER_ID_FIELD_NUMBER: _ClassVar[int] 35 | PLAYER_STORAGE_ENTRIES_FIELD_NUMBER: _ClassVar[int] 36 | nickname: str 37 | player_id: str 38 | player_storage_entries: _containers.RepeatedCompositeFieldContainer[_v2_pb2.Entry] 39 | def __init__(self, player_id: _Optional[str] = ..., nickname: _Optional[str] = ..., player_storage_entries: _Optional[_Iterable[_Union[_v2_pb2.Entry, _Mapping]]] = ...) -> None: ... 40 | 41 | class MessageType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): 42 | __slots__ = [] 43 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/login_bonus.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import grpc 4 | 5 | from takasho.packer import packer 6 | from takasho.schema.fes.player_api import login_bonus_pb2 7 | from takasho.schema.fes.player_api import login_bonus_pb2_grpc 8 | 9 | 10 | class LoginBonus(login_bonus_pb2_grpc.LoginBonusServicer): 11 | 12 | def GetAvailableLoginBonusV1(self, request, context): 13 | response = login_bonus_pb2.LoginBonusGetAvailableV1.Response() 14 | # p = Path(__file__).with_name('login_bonus.GetAvailableV1.hex') 15 | # with p.open() as f: 16 | # response = login_bonus_pb2.LoginBonusGetAvailableV1.Response. \ 17 | # FromString(bytes.fromhex(f.read())) 18 | return response 19 | 20 | def CountUpProgressV1(self, request, context): 21 | response = login_bonus_pb2.LoginBonusCountUpProgressV1.Response() 22 | # p = Path(__file__).with_name('login_bouns.CountUpProgressV1.hex') 23 | # with p.open() as f: 24 | # response = login_bonus_pb2.LoginBonusCountUpProgressV1.Response. \ 25 | # FromString(bytes.fromhex(f.read())) 26 | return response 27 | 28 | 29 | def add_LoginBonusServicer_to_server(servicer, server): 30 | rpc_method_handlers = { 31 | 'CountUpProgressV1': grpc.unary_unary_rpc_method_handler( 32 | servicer.CountUpProgressV1, 33 | request_deserializer=lambda x: login_bonus_pb2.LoginBonusCountUpProgressV1.Request.FromString(packer.unpack(x)), 34 | response_serializer=lambda x: packer.pack(login_bonus_pb2.LoginBonusCountUpProgressV1.Response.SerializeToString(x)), 35 | ), 36 | 'GetAvailableLoginBonusV1': grpc.unary_unary_rpc_method_handler( 37 | servicer.GetAvailableLoginBonusV1, 38 | request_deserializer=lambda x: login_bonus_pb2.LoginBonusGetAvailableV1.Request.FromString(packer.unpack(x)), 39 | response_serializer=lambda x: packer.pack(login_bonus_pb2.LoginBonusGetAvailableV1.Response.SerializeToString(x)), 40 | ), 41 | } 42 | generic_handler = grpc.method_handlers_generic_handler( 43 | 'takasho.schema.fes.player_api.LoginBonus', rpc_method_handlers) 44 | server.add_generic_rpc_handlers((generic_handler,)) 45 | 46 | -------------------------------------------------------------------------------- /takasho/schema/fes/player_api/subscription/renewal_reward_pb2.pyi: -------------------------------------------------------------------------------- 1 | from takasho.schema.fes.resource.subscription.renewal_reward import v1_pb2 as _v1_pb2 2 | from takasho.schema.common_featureset.resource.player_inventory import v1_pb2 as _v1_pb2_1 3 | from google.protobuf.internal import containers as _containers 4 | from google.protobuf import descriptor as _descriptor 5 | from google.protobuf import message as _message 6 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union 7 | 8 | DESCRIPTOR: _descriptor.FileDescriptor 9 | 10 | class RenewalRewardGetAvailableV1(_message.Message): 11 | __slots__ = [] 12 | class Request(_message.Message): 13 | __slots__ = [] 14 | def __init__(self) -> None: ... 15 | class Response(_message.Message): 16 | __slots__ = ["renewal_rewards"] 17 | RENEWAL_REWARDS_FIELD_NUMBER: _ClassVar[int] 18 | renewal_rewards: _containers.RepeatedCompositeFieldContainer[_v1_pb2.RenewalReward] 19 | def __init__(self, renewal_rewards: _Optional[_Iterable[_Union[_v1_pb2.RenewalReward, _Mapping]]] = ...) -> None: ... 20 | def __init__(self) -> None: ... 21 | 22 | class RenewalRewardReceiveV1(_message.Message): 23 | __slots__ = [] 24 | class Request(_message.Message): 25 | __slots__ = [] 26 | def __init__(self) -> None: ... 27 | class Response(_message.Message): 28 | __slots__ = ["inventories", "renewal_counts", "renewal_rewards"] 29 | INVENTORIES_FIELD_NUMBER: _ClassVar[int] 30 | RENEWAL_COUNTS_FIELD_NUMBER: _ClassVar[int] 31 | RENEWAL_REWARDS_FIELD_NUMBER: _ClassVar[int] 32 | inventories: _containers.RepeatedCompositeFieldContainer[_v1_pb2_1.PlayerInventory] 33 | renewal_counts: _containers.RepeatedCompositeFieldContainer[_v1_pb2.RenewalCount] 34 | renewal_rewards: _containers.RepeatedCompositeFieldContainer[_v1_pb2.RenewalReward] 35 | def __init__(self, renewal_rewards: _Optional[_Iterable[_Union[_v1_pb2.RenewalReward, _Mapping]]] = ..., inventories: _Optional[_Iterable[_Union[_v1_pb2_1.PlayerInventory, _Mapping]]] = ..., renewal_counts: _Optional[_Iterable[_Union[_v1_pb2.RenewalCount, _Mapping]]] = ...) -> None: ... 36 | def __init__(self) -> None: ... 37 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/ondemand_master_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/player_api/ondemand_master.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.ondemand_master import v2_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_ondemand__master_dot_v2__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nAtakasho/schema/common_featureset/player_api/ondemand_master.proto\x12+takasho.schema.common_featureset.player_api\x1a\x42takasho/schema/common_featureset/resource/ondemand_master/v2.proto\"\x97\x01\n\x1aOndemandMasterGetEntriesV2\x1a\x17\n\x07Request\x12\x0c\n\x04keys\x18\x01 \x03(\t\x1a`\n\x08Response\x12T\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x43.takasho.schema.common_featureset.resource.ondemand_master.v2.Entry2\xc6\x01\n\x0eOndemandMaster\x12\xb3\x01\n\x0cGetEntriesV1\x12O.takasho.schema.common_featureset.player_api.OndemandMasterGetEntriesV2.Request\x1aP.takasho.schema.common_featureset.player_api.OndemandMasterGetEntriesV2.Response\"\x00\x62\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.player_api.ondemand_master_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _ONDEMANDMASTERGETENTRIESV2._serialized_start=183 25 | _ONDEMANDMASTERGETENTRIESV2._serialized_end=334 26 | _ONDEMANDMASTERGETENTRIESV2_REQUEST._serialized_start=213 27 | _ONDEMANDMASTERGETENTRIESV2_REQUEST._serialized_end=236 28 | _ONDEMANDMASTERGETENTRIESV2_RESPONSE._serialized_start=238 29 | _ONDEMANDMASTERGETENTRIESV2_RESPONSE._serialized_end=334 30 | _ONDEMANDMASTER._serialized_start=337 31 | _ONDEMANDMASTER._serialized_end=535 32 | # @@protoc_insertion_point(module_scope) 33 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/baas_product_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/common_featureset/player_api/baas_product.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.baas_product import v1_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_baas__product_dot_v1__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n>takasho/schema/common_featureset/player_api/baas_product.proto\x12+takasho.schema.common_featureset.player_api\x1a?takasho/schema/common_featureset/resource/baas_product/v1.proto\"\xab\x01\n\x1e\x42\x61\x61sProductGetAvailableByIDsV1\x1a\x1e\n\x07Request\x12\x13\n\x0bproduct_ids\x18\x01 \x03(\t\x1ai\n\x08Response\x12]\n\rbaas_products\x18\x01 \x03(\x0b\x32\x46.takasho.schema.common_featureset.resource.baas_product.v1.BaasProduct2\xd2\x01\n\x0b\x42\x61\x61sProduct\x12\xc2\x01\n\x13GetAvailableByIDsV1\x12S.takasho.schema.common_featureset.player_api.BaasProductGetAvailableByIDsV1.Request\x1aT.takasho.schema.common_featureset.player_api.BaasProductGetAvailableByIDsV1.Response\"\x00\x62\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.common_featureset.player_api.baas_product_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _BAASPRODUCTGETAVAILABLEBYIDSV1._serialized_start=177 25 | _BAASPRODUCTGETAVAILABLEBYIDSV1._serialized_end=348 26 | _BAASPRODUCTGETAVAILABLEBYIDSV1_REQUEST._serialized_start=211 27 | _BAASPRODUCTGETAVAILABLEBYIDSV1_REQUEST._serialized_end=241 28 | _BAASPRODUCTGETAVAILABLEBYIDSV1_RESPONSE._serialized_start=243 29 | _BAASPRODUCTGETAVAILABLEBYIDSV1_RESPONSE._serialized_end=348 30 | _BAASPRODUCT._serialized_start=351 31 | _BAASPRODUCT._serialized_end=561 32 | # @@protoc_insertion_point(module_scope) 33 | -------------------------------------------------------------------------------- /takasho/schema/fes/resource/club_chat/v1_pb2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by the protocol buffer compiler. DO NOT EDIT! 3 | # source: takasho/schema/fes/resource/club_chat/v1.proto 4 | """Generated protocol buffer code.""" 5 | from google.protobuf.internal import builder as _builder 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import descriptor_pool as _descriptor_pool 8 | from google.protobuf import symbol_database as _symbol_database 9 | # @@protoc_insertion_point(imports) 10 | 11 | _sym_db = _symbol_database.Default() 12 | 13 | 14 | from takasho.schema.common_featureset.resource.player_storage import v2_pb2 as takasho_dot_schema_dot_common__featureset_dot_resource_dot_player__storage_dot_v2__pb2 15 | 16 | 17 | DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.takasho/schema/fes/resource/club_chat/v1.proto\x12(takasho.schema.fes.resource.club_chat.v1\x1a\x41takasho/schema/common_featureset/resource/player_storage/v2.proto\"\xf8\x01\n\x0f\x43lubChatMessage\x12\x0f\n\x07\x63lub_id\x18\x01 \x01(\t\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12K\n\x0cmessage_type\x18\x03 \x01(\x0e\x32\x35.takasho.schema.fes.resource.club_chat.v1.MessageType\x12\x0f\n\x07\x63ontent\x18\x04 \x01(\t\x12O\n\x06player\x18\x05 \x01(\x0b\x32?.takasho.schema.fes.resource.club_chat.v1.ClubChatMessagePlayer\x12\x11\n\tposted_at\x18\x06 \x01(\x12\"\xa0\x01\n\x15\x43lubChatMessagePlayer\x12\x11\n\tplayer_id\x18\x01 \x01(\t\x12\x10\n\x08nickname\x18\x02 \x01(\t\x12\x62\n\x16player_storage_entries\x18\x03 \x03(\x0b\x32\x42.takasho.schema.common_featureset.resource.player_storage.v2.Entry*U\n\x0bMessageType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07\x43OMMENT\x10\x01\x12\x10\n\x0cNOTIFICATION\x10\x02\x12\x0f\n\x0b\x41\x43HIEVEMENT\x10\x03\x12\t\n\x05STAMP\x10\x04\x62\x06proto3') 18 | 19 | _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) 20 | _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'takasho.schema.fes.resource.club_chat.v1_pb2', globals()) 21 | if _descriptor._USE_C_DESCRIPTORS == False: 22 | 23 | DESCRIPTOR._options = None 24 | _MESSAGETYPE._serialized_start=573 25 | _MESSAGETYPE._serialized_end=658 26 | _CLUBCHATMESSAGE._serialized_start=160 27 | _CLUBCHATMESSAGE._serialized_end=408 28 | _CLUBCHATMESSAGEPLAYER._serialized_start=411 29 | _CLUBCHATMESSAGEPLAYER._serialized_end=571 30 | # @@protoc_insertion_point(module_scope) 31 | -------------------------------------------------------------------------------- /protos/takasho/schema/fes/player_api/club_player.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package takasho.schema.fes.player_api.club_player; 3 | 4 | import "takasho/schema/fes/resource/club_storage/v1.proto"; 5 | import "takasho/schema/fes/resource/club/v1.proto"; 6 | import "takasho/schema/fes/resource/club_player/v1.proto"; 7 | import "takasho/schema/fes/resource/club_role/v1.proto"; 8 | 9 | message ClubPlayerGetClubs { 10 | message Request { 11 | string player_id = 1; 12 | repeated takasho.schema.fes.resource.club_storage.v1.Criterion criteria = 2; 13 | } 14 | 15 | message ClubWithFrame { 16 | takasho.schema.fes.resource.club.v1.Club club = 1; 17 | uint64 frame = 2; 18 | } 19 | 20 | message Response { 21 | repeated ClubWithFrame clubs = 1; 22 | } 23 | } 24 | 25 | message ClubPlayerGetPlayers { 26 | message Request { 27 | string club_id = 1; 28 | repeated string player_storage_keys = 2; 29 | } 30 | 31 | message Response { 32 | repeated takasho.schema.fes.resource.club_player.v1.ClubPlayer club_players = 1; 33 | } 34 | } 35 | 36 | message ClubPlayerGetPlayersCount { 37 | message Request { 38 | string club_id = 1; 39 | } 40 | 41 | message Response { 42 | uint64 players_count = 1; 43 | } 44 | } 45 | 46 | message ClubPlayerKickPlayer { 47 | message Request { 48 | string club_id = 1; 49 | string player_id = 2; 50 | } 51 | 52 | message Response {} 53 | } 54 | 55 | message ClubPlayerLeave { 56 | message Request { 57 | string club_id = 1; 58 | } 59 | 60 | message Response {} 61 | } 62 | 63 | message ClubPlayerUpdateRole { 64 | message Request { 65 | string club_id = 1; 66 | string player_id = 2; 67 | takasho.schema.fes.resource.club_role.v1.ClubUpdateRoleType type = 3; 68 | } 69 | 70 | message Response {} 71 | } 72 | 73 | service ClubPlayer { 74 | rpc GetClubs(ClubPlayerGetClubs.Request) returns (ClubPlayerGetClubs.Response) {} 75 | rpc GetPlayers(ClubPlayerGetPlayers.Request) returns (ClubPlayerGetPlayers.Response) {} 76 | rpc GetPlayersCount(ClubPlayerGetPlayersCount.Request) returns (ClubPlayerGetPlayersCount.Response) {} 77 | rpc KickPlayer(ClubPlayerKickPlayer.Request) returns (ClubPlayerKickPlayer.Response) {} 78 | rpc Leave(ClubPlayerLeave.Request) returns (ClubPlayerLeave.Response) {} 79 | rpc UpdateRole(ClubPlayerUpdateRole.Request) returns (ClubPlayerUpdateRole.Response) {} 80 | } 81 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/step_up_loot_box.py: -------------------------------------------------------------------------------- 1 | import grpc 2 | 3 | from takasho.packer import packer 4 | from takasho.schema.common_featureset.player_api import step_up_loot_box_pb2 5 | from takasho.schema.common_featureset.player_api import step_up_loot_box_pb2_grpc 6 | 7 | 8 | class StepUpLootBoxV2(step_up_loot_box_pb2_grpc.StepUpLootBoxV2Servicer): 9 | 10 | def GetAvailableV1(self, request, context): 11 | response = step_up_loot_box_pb2.StepUpLootBoxV2GetAvailableV1.Response() 12 | return response 13 | 14 | 15 | def add_StepUpLootBoxV2Servicer_to_server(servicer, server): 16 | rpc_method_handlers = { 17 | 'GetAvailableV1': grpc.unary_unary_rpc_method_handler( 18 | servicer.GetAvailableV1, 19 | request_deserializer=lambda x: step_up_loot_box_pb2.StepUpLootBoxV2GetAvailableV1.Request.FromString(packer.unpack(x)), 20 | response_serializer=lambda x: packer.pack(step_up_loot_box_pb2.StepUpLootBoxV2GetAvailableV1.Response.SerializeToString(x)), 21 | ), 22 | 'PurchaseV1': grpc.unary_unary_rpc_method_handler( 23 | servicer.PurchaseV1, 24 | request_deserializer=lambda x: step_up_loot_box_pb2.StepUpLootBoxV2PurchaseV1.Request.FromString(packer.unpack(x)), 25 | response_serializer=lambda x: packer.pack(step_up_loot_box_pb2.StepUpLootBoxV2PurchaseV1.Response.SerializeToString(x)), 26 | ), 27 | 'GetProbabilityV1': grpc.unary_unary_rpc_method_handler( 28 | servicer.GetProbabilityV1, 29 | request_deserializer=lambda x: step_up_loot_box_pb2.StepUpLootBoxV2GetProbabilityV1.Request.FromString(packer.unpack(x)), 30 | response_serializer=lambda x: packer.pack(step_up_loot_box_pb2.StepUpLootBoxV2GetProbabilityV1.Response.SerializeToString(x)), 31 | ), 32 | 'GetDetailV1': grpc.unary_unary_rpc_method_handler( 33 | servicer.GetDetailV1, 34 | request_deserializer=lambda x: step_up_loot_box_pb2.StepUpLootBoxV2GetDetailV1.Request.FromString(packer.unpack(x)), 35 | response_serializer=lambda x: packer.pack(step_up_loot_box_pb2.StepUpLootBoxV2GetDetailV1.Response.SerializeToString(x)), 36 | ), 37 | } 38 | generic_handler = grpc.method_handlers_generic_handler( 39 | 'takasho.schema.common_featureset.player_api.StepUpLootBoxV2', rpc_method_handlers) 40 | server.add_generic_rpc_handlers((generic_handler,)) 41 | 42 | -------------------------------------------------------------------------------- /takasho/schema/common_featureset/player_api/push_notification_pb2.pyi: -------------------------------------------------------------------------------- 1 | from google.protobuf.internal import containers as _containers 2 | from google.protobuf import descriptor as _descriptor 3 | from google.protobuf import message as _message 4 | from typing import ClassVar as _ClassVar, Iterable as _Iterable, Optional as _Optional 5 | 6 | DESCRIPTOR: _descriptor.FileDescriptor 7 | 8 | class PushNotificationGetConfigV1(_message.Message): 9 | __slots__ = [] 10 | class Request(_message.Message): 11 | __slots__ = [] 12 | def __init__(self) -> None: ... 13 | class Response(_message.Message): 14 | __slots__ = ["receivable"] 15 | RECEIVABLE_FIELD_NUMBER: _ClassVar[int] 16 | receivable: bool 17 | def __init__(self, receivable: bool = ...) -> None: ... 18 | def __init__(self) -> None: ... 19 | 20 | class PushNotificationGetConfigV2(_message.Message): 21 | __slots__ = [] 22 | class Request(_message.Message): 23 | __slots__ = [] 24 | def __init__(self) -> None: ... 25 | class Response(_message.Message): 26 | __slots__ = ["topic_ids"] 27 | TOPIC_IDS_FIELD_NUMBER: _ClassVar[int] 28 | topic_ids: _containers.RepeatedScalarFieldContainer[str] 29 | def __init__(self, topic_ids: _Optional[_Iterable[str]] = ...) -> None: ... 30 | def __init__(self) -> None: ... 31 | 32 | class PushNotificationSetConfigV1(_message.Message): 33 | __slots__ = [] 34 | class Request(_message.Message): 35 | __slots__ = ["receivable"] 36 | RECEIVABLE_FIELD_NUMBER: _ClassVar[int] 37 | receivable: bool 38 | def __init__(self, receivable: bool = ...) -> None: ... 39 | class Response(_message.Message): 40 | __slots__ = ["receivable"] 41 | RECEIVABLE_FIELD_NUMBER: _ClassVar[int] 42 | receivable: bool 43 | def __init__(self, receivable: bool = ...) -> None: ... 44 | def __init__(self) -> None: ... 45 | 46 | class PushNotificationSetConfigV2(_message.Message): 47 | __slots__ = [] 48 | class Request(_message.Message): 49 | __slots__ = ["topic_ids"] 50 | TOPIC_IDS_FIELD_NUMBER: _ClassVar[int] 51 | topic_ids: _containers.RepeatedScalarFieldContainer[str] 52 | def __init__(self, topic_ids: _Optional[_Iterable[str]] = ...) -> None: ... 53 | class Response(_message.Message): 54 | __slots__ = [] 55 | def __init__(self) -> None: ... 56 | def __init__(self) -> None: ... 57 | --------------------------------------------------------------------------------