Copy disabled (too large)
Download .txt
Showing preview only (13,858K chars total). Download the full file to get everything.
Repository: heroiclabs/nakama-dotnet
Branch: master
Commit: 6a51c8fd90a7
Files: 1862
Total size: 12.8 MB
Directory structure:
gitextract_98wg7jk9/
├── .editorconfig
├── .github/
│ └── workflows/
│ ├── doxygen.yml
│ └── pr.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── Nakama/
│ ├── ApiClient.gen.cs
│ ├── ChannelJoinMessage.cs
│ ├── ChannelLeaveMessage.cs
│ ├── ChannelRemoveMessage.cs
│ ├── ChannelSendMessage.cs
│ ├── ChannelUpdateMessage.cs
│ ├── Client.cs
│ ├── Console/
│ │ └── ConsoleClient.gen.cs
│ ├── GZipHttpClientHandler.cs
│ ├── HttpRequestAdapter.cs
│ ├── IChannel.cs
│ ├── IChannelMessageAck.cs
│ ├── IChannelPresenceEvent.cs
│ ├── IClient.cs
│ ├── IHttpAdapter.cs
│ ├── IHttpAdapterUtil.cs
│ ├── ILogger.cs
│ ├── IMatch.cs
│ ├── IMatchPresenceEvent.cs
│ ├── IMatchState.cs
│ ├── IMatchmakerMatched.cs
│ ├── IMatchmakerTicket.cs
│ ├── IParty.cs
│ ├── IPartyClose.cs
│ ├── IPartyData.cs
│ ├── IPartyJoinRequest.cs
│ ├── IPartyLeader.cs
│ ├── IPartyMatchmakerTicket.cs
│ ├── IPartyPresenceEvent.cs
│ ├── IPartyUpdate.cs
│ ├── ISession.cs
│ ├── ISocket.cs
│ ├── ISocketAdapter.cs
│ ├── IStatus.cs
│ ├── IStatusPresenceEvent.cs
│ ├── IStreamPresenceEvent.cs
│ ├── IUserPresence.cs
│ ├── MatchCreateMessage.cs
│ ├── MatchJoinMessage.cs
│ ├── MatchLeaveMessage.cs
│ ├── MatchSendMessage.cs
│ ├── MatchmakerAddMessage.cs
│ ├── MatchmakerRemoveMessage.cs
│ ├── Nakama.csproj
│ ├── Ninja.WebSockets/
│ │ ├── BufferPool.cs
│ │ ├── Exceptions/
│ │ │ ├── EntityTooLargeException.cs
│ │ │ ├── InvalidHttpResponseCodeException.cs
│ │ │ ├── README.txt
│ │ │ ├── SecWebSocketKeyMissingException.cs
│ │ │ ├── ServerListenerSocketException.cs
│ │ │ ├── WebSocketBufferOverflowException.cs
│ │ │ ├── WebSocketHandshakeFailedException.cs
│ │ │ └── WebSocketVersionNotSupportedException.cs
│ │ ├── HttpHelper.cs
│ │ ├── IBufferPool.cs
│ │ ├── IPingPongManager.cs
│ │ ├── IWebSocketClientFactory.cs
│ │ ├── IWebSocketServerFactory.cs
│ │ ├── Internal/
│ │ │ ├── BinaryReaderWriter.cs
│ │ │ ├── WebSocketFrame.cs
│ │ │ ├── WebSocketFrameCommon.cs
│ │ │ ├── WebSocketFrameReader.cs
│ │ │ ├── WebSocketFrameWriter.cs
│ │ │ ├── WebSocketImplementation.cs
│ │ │ ├── WebSocketOpCode.cs
│ │ │ └── WebSocketReadCursor.cs
│ │ ├── LICENCE
│ │ ├── PingPongManager.cs
│ │ ├── PongEventArgs.cs
│ │ ├── WebSocketClientFactory.cs
│ │ ├── WebSocketClientOptions.cs
│ │ ├── WebSocketHttpContext.cs
│ │ ├── WebSocketServerFactory.cs
│ │ └── WebSocketServerOptions.cs
│ ├── NullLogger.cs
│ ├── Party.cs
│ ├── PartyAccept.cs
│ ├── PartyClose.cs
│ ├── PartyCreate.cs
│ ├── PartyData.cs
│ ├── PartyDataSend.cs
│ ├── PartyJoin.cs
│ ├── PartyJoinRequest.cs
│ ├── PartyJoinRequestList.cs
│ ├── PartyLeader.cs
│ ├── PartyLeave.cs
│ ├── PartyMatchmakerAdd.cs
│ ├── PartyMatchmakerRemove.cs
│ ├── PartyMatchmakerTicket.cs
│ ├── PartyMemberRemove.cs
│ ├── PartyPresenceEvent.cs
│ ├── PartyPromote.cs
│ ├── PartyUpdate.cs
│ ├── PresenceUtil.cs
│ ├── PreserveAttribute.cs
│ ├── Retry.cs
│ ├── RetryConfiguration.cs
│ ├── RetryHistory.cs
│ ├── RetryInvoker.cs
│ ├── RetryJitter.cs
│ ├── RetryListener.cs
│ ├── Session.cs
│ ├── Socket.cs
│ ├── StatusFollowMessage.cs
│ ├── StatusUnfollowMessage.cs
│ ├── StatusUpdateMessage.cs
│ ├── StorageObjectId.cs
│ ├── TinyJson/
│ │ ├── JsonParser.cs
│ │ ├── JsonWriter.cs
│ │ └── LICENSE
│ ├── TransientExceptionDelegate.cs
│ ├── WebSocketAdapter.cs
│ ├── WebSocketErrorMessage.cs
│ ├── WebSocketMessageEnvelope.cs
│ ├── WebSocketStdlibAdapter.cs
│ └── WriteStorageObject.cs
├── Nakama.Tests/
│ ├── AssemblyInfo.cs
│ ├── AuthenticateTest.cs
│ ├── AwaitedSocketTaskTest.cs
│ ├── CancelTest.cs
│ ├── FriendTest.cs
│ ├── GroupTest.cs
│ ├── HttpErrorTest.cs
│ ├── LeaderboardAroundOwnerTest.cs
│ ├── LeaderboardTest.cs
│ ├── LinkUnlinkTest.cs
│ ├── Nakama.Tests.csproj
│ ├── PresenceUtilTest.cs
│ ├── RetryTest.cs
│ ├── RpcTest.cs
│ ├── SessionTest.cs
│ ├── Socket/
│ │ ├── WebSocketChannelTest.cs
│ │ ├── WebSocketMatchTest.cs
│ │ ├── WebSocketMatchmakerTest.cs
│ │ ├── WebSocketNotificationTest.cs
│ │ ├── WebSocketPartyTest.cs
│ │ ├── WebSocketRpcTest.cs
│ │ ├── WebSocketTest.cs
│ │ └── WebSocketUserStatusTest.cs
│ ├── StdoutLogger.cs
│ ├── TestsUtil.cs
│ ├── TinyJsonParserTest.cs
│ ├── TransientExceptionHttpAdapter.cs
│ └── settings.json
├── Nakama.sln
├── README.md
├── RELEASEINST.md
├── Satori/
│ ├── ApiClient.gen.cs
│ ├── Client.cs
│ ├── Console/
│ │ └── ConsoleClient.gen.cs
│ ├── Event.cs
│ ├── GZipHttpClientHandler.cs
│ ├── HttpRequestAdapter.cs
│ ├── IClient.cs
│ ├── IHttpAdapter.cs
│ ├── IHttpAdapterUtil.cs
│ ├── ILogger.cs
│ ├── ISession.cs
│ ├── NullLogger.cs
│ ├── PreserveAttribute.cs
│ ├── Retry.cs
│ ├── RetryConfiguration.cs
│ ├── RetryHistory.cs
│ ├── RetryInvoker.cs
│ ├── RetryJitter.cs
│ ├── RetryListener.cs
│ ├── Satori.csproj
│ ├── Session.cs
│ ├── TinyJson/
│ │ ├── JsonParser.cs
│ │ ├── JsonWriter.cs
│ │ └── LICENSE
│ └── TransientExceptionDelegate.cs
├── Satori.Tests/
│ ├── ClientIdentifyTest.cs
│ ├── ClientTest.cs
│ ├── README.md
│ └── Satori.Tests.csproj
├── Taskfile.dist.yml
├── codegen/
│ ├── README.md
│ ├── go.mod
│ ├── go.sum
│ └── main.go
└── docs/
├── .nojekyll
├── CNAME
├── Doxyfile
├── html/
│ ├── _api_client_8gen_8cs.html
│ ├── _api_client_8gen_8cs.js
│ ├── _binary_reader_writer_8cs.html
│ ├── _buffer_pool_8cs.html
│ ├── _buffer_pool_8cs.js
│ ├── _c_h_a_n_g_e_l_o_g_8md.html
│ ├── _channel_join_message_8cs.html
│ ├── _channel_join_message_8cs.js
│ ├── _channel_leave_message_8cs.html
│ ├── _channel_remove_message_8cs.html
│ ├── _channel_send_message_8cs.html
│ ├── _channel_update_message_8cs.html
│ ├── _client_8cs.html
│ ├── _client_8cs.js
│ ├── _console_client_8gen_8cs.html
│ ├── _console_client_8gen_8cs.js
│ ├── _debug_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _debug_2net46_2_nakama_8_assembly_info_8cs.html
│ ├── _debug_2net46_2_satori_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _debug_2netstandard2_80_2_nakama_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_80_2_satori_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_81_2_nakama_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_81_2_satori_8_assembly_info_8cs.html
│ ├── _entity_too_large_exception_8cs.html
│ ├── _entity_too_large_exception_8cs.js
│ ├── _event_8cs.html
│ ├── _event_8cs.js
│ ├── _g_zip_http_client_handler_8cs.html
│ ├── _http_helper_8cs.html
│ ├── _http_helper_8cs.js
│ ├── _http_request_adapter_8cs.html
│ ├── _http_request_adapter_8cs.js
│ ├── _i_buffer_pool_8cs.html
│ ├── _i_buffer_pool_8cs.js
│ ├── _i_channel_8cs.html
│ ├── _i_channel_8cs.js
│ ├── _i_channel_message_ack_8cs.html
│ ├── _i_channel_message_ack_8cs.js
│ ├── _i_channel_presence_event_8cs.html
│ ├── _i_channel_presence_event_8cs.js
│ ├── _i_client_8cs.html
│ ├── _i_client_8cs.js
│ ├── _i_http_adapter_8cs.html
│ ├── _i_http_adapter_8cs.js
│ ├── _i_http_adapter_util_8cs.html
│ ├── _i_logger_8cs.html
│ ├── _i_logger_8cs.js
│ ├── _i_match_8cs.html
│ ├── _i_match_8cs.js
│ ├── _i_match_presence_event_8cs.html
│ ├── _i_match_presence_event_8cs.js
│ ├── _i_match_state_8cs.html
│ ├── _i_match_state_8cs.js
│ ├── _i_matchmaker_matched_8cs.html
│ ├── _i_matchmaker_matched_8cs.js
│ ├── _i_matchmaker_ticket_8cs.html
│ ├── _i_matchmaker_ticket_8cs.js
│ ├── _i_party_8cs.html
│ ├── _i_party_8cs.js
│ ├── _i_party_close_8cs.html
│ ├── _i_party_close_8cs.js
│ ├── _i_party_data_8cs.html
│ ├── _i_party_data_8cs.js
│ ├── _i_party_join_request_8cs.html
│ ├── _i_party_join_request_8cs.js
│ ├── _i_party_leader_8cs.html
│ ├── _i_party_leader_8cs.js
│ ├── _i_party_matchmaker_ticket_8cs.html
│ ├── _i_party_matchmaker_ticket_8cs.js
│ ├── _i_party_presence_event_8cs.html
│ ├── _i_party_presence_event_8cs.js
│ ├── _i_party_update_8cs.html
│ ├── _i_party_update_8cs.js
│ ├── _i_ping_pong_manager_8cs.html
│ ├── _i_ping_pong_manager_8cs.js
│ ├── _i_session_8cs.html
│ ├── _i_session_8cs.js
│ ├── _i_socket_8cs.html
│ ├── _i_socket_8cs.js
│ ├── _i_socket_adapter_8cs.html
│ ├── _i_socket_adapter_8cs.js
│ ├── _i_status_8cs.html
│ ├── _i_status_8cs.js
│ ├── _i_status_presence_event_8cs.html
│ ├── _i_status_presence_event_8cs.js
│ ├── _i_stream_presence_event_8cs.html
│ ├── _i_stream_presence_event_8cs.js
│ ├── _i_user_presence_8cs.html
│ ├── _i_user_presence_8cs.js
│ ├── _i_web_socket_client_factory_8cs.html
│ ├── _i_web_socket_client_factory_8cs.js
│ ├── _i_web_socket_server_factory_8cs.html
│ ├── _i_web_socket_server_factory_8cs.js
│ ├── _invalid_http_response_code_exception_8cs.html
│ ├── _invalid_http_response_code_exception_8cs.js
│ ├── _json_parser_8cs.html
│ ├── _json_writer_8cs.html
│ ├── _match_create_message_8cs.html
│ ├── _match_join_message_8cs.html
│ ├── _match_leave_message_8cs.html
│ ├── _match_send_message_8cs.html
│ ├── _matchmaker_add_message_8cs.html
│ ├── _matchmaker_remove_message_8cs.html
│ ├── _nakama_2_api_client_8gen_8cs.html
│ ├── _nakama_2_api_client_8gen_8cs.js
│ ├── _nakama_2_client_8cs.html
│ ├── _nakama_2_client_8cs.js
│ ├── _nakama_2_g_zip_http_client_handler_8cs.html
│ ├── _nakama_2_http_request_adapter_8cs.html
│ ├── _nakama_2_http_request_adapter_8cs.js
│ ├── _nakama_2_i_client_8cs.html
│ ├── _nakama_2_i_client_8cs.js
│ ├── _nakama_2_i_http_adapter_8cs.html
│ ├── _nakama_2_i_http_adapter_8cs.js
│ ├── _nakama_2_i_http_adapter_util_8cs.html
│ ├── _nakama_2_i_logger_8cs.html
│ ├── _nakama_2_i_logger_8cs.js
│ ├── _nakama_2_i_session_8cs.html
│ ├── _nakama_2_i_session_8cs.js
│ ├── _nakama_2_preserve_attribute_8cs.html
│ ├── _nakama_2_retry_8cs.html
│ ├── _nakama_2_retry_8cs.js
│ ├── _nakama_2_retry_configuration_8cs.html
│ ├── _nakama_2_retry_configuration_8cs.js
│ ├── _nakama_2_retry_history_8cs.html
│ ├── _nakama_2_retry_invoker_8cs.html
│ ├── _nakama_2_retry_jitter_8cs.html
│ ├── _nakama_2_retry_jitter_8cs.js
│ ├── _nakama_2_retry_listener_8cs.html
│ ├── _nakama_2_retry_listener_8cs.js
│ ├── _nakama_2_session_8cs.html
│ ├── _nakama_2_session_8cs.js
│ ├── _nakama_2_tiny_json_2_json_parser_8cs.html
│ ├── _nakama_2_tiny_json_2_json_writer_8cs.html
│ ├── _nakama_2_transient_exception_delegate_8cs.html
│ ├── _nakama_2_transient_exception_delegate_8cs.js
│ ├── _nakama_2obj_2_debug_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_debug_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_debug_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_release_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_release_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_release_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _null_logger_8cs.html
│ ├── _party_8cs.html
│ ├── _party_accept_8cs.html
│ ├── _party_close_8cs.html
│ ├── _party_create_8cs.html
│ ├── _party_data_8cs.html
│ ├── _party_data_send_8cs.html
│ ├── _party_join_8cs.html
│ ├── _party_join_request_8cs.html
│ ├── _party_join_request_list_8cs.html
│ ├── _party_leader_8cs.html
│ ├── _party_leave_8cs.html
│ ├── _party_matchmaker_add_8cs.html
│ ├── _party_matchmaker_remove_8cs.html
│ ├── _party_matchmaker_ticket_8cs.html
│ ├── _party_member_remove_8cs.html
│ ├── _party_presence_event_8cs.html
│ ├── _party_promote_8cs.html
│ ├── _party_update_8cs.html
│ ├── _ping_pong_manager_8cs.html
│ ├── _ping_pong_manager_8cs.js
│ ├── _pong_event_args_8cs.html
│ ├── _pong_event_args_8cs.js
│ ├── _presence_util_8cs.html
│ ├── _preserve_attribute_8cs.html
│ ├── _r_e_a_d_m_e_8md.html
│ ├── _release_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _release_2net46_2_nakama_8_assembly_info_8cs.html
│ ├── _release_2net46_2_satori_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _release_2netstandard2_80_2_nakama_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_80_2_satori_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_81_2_nakama_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_81_2_satori_8_assembly_info_8cs.html
│ ├── _retry_8cs.html
│ ├── _retry_8cs.js
│ ├── _retry_configuration_8cs.html
│ ├── _retry_configuration_8cs.js
│ ├── _retry_history_8cs.html
│ ├── _retry_invoker_8cs.html
│ ├── _retry_jitter_8cs.html
│ ├── _retry_jitter_8cs.js
│ ├── _retry_listener_8cs.html
│ ├── _retry_listener_8cs.js
│ ├── _satori_2_api_client_8gen_8cs.html
│ ├── _satori_2_api_client_8gen_8cs.js
│ ├── _satori_2_client_8cs.html
│ ├── _satori_2_client_8cs.js
│ ├── _satori_2_g_zip_http_client_handler_8cs.html
│ ├── _satori_2_http_request_adapter_8cs.html
│ ├── _satori_2_http_request_adapter_8cs.js
│ ├── _satori_2_i_client_8cs.html
│ ├── _satori_2_i_client_8cs.js
│ ├── _satori_2_i_http_adapter_8cs.html
│ ├── _satori_2_i_http_adapter_8cs.js
│ ├── _satori_2_i_http_adapter_util_8cs.html
│ ├── _satori_2_i_logger_8cs.html
│ ├── _satori_2_i_logger_8cs.js
│ ├── _satori_2_i_session_8cs.html
│ ├── _satori_2_i_session_8cs.js
│ ├── _satori_2_preserve_attribute_8cs.html
│ ├── _satori_2_retry_8cs.html
│ ├── _satori_2_retry_8cs.js
│ ├── _satori_2_retry_configuration_8cs.html
│ ├── _satori_2_retry_configuration_8cs.js
│ ├── _satori_2_retry_history_8cs.html
│ ├── _satori_2_retry_invoker_8cs.html
│ ├── _satori_2_retry_jitter_8cs.html
│ ├── _satori_2_retry_jitter_8cs.js
│ ├── _satori_2_retry_listener_8cs.html
│ ├── _satori_2_retry_listener_8cs.js
│ ├── _satori_2_session_8cs.html
│ ├── _satori_2_session_8cs.js
│ ├── _satori_2_tiny_json_2_json_parser_8cs.html
│ ├── _satori_2_tiny_json_2_json_writer_8cs.html
│ ├── _satori_2_transient_exception_delegate_8cs.html
│ ├── _satori_2_transient_exception_delegate_8cs.js
│ ├── _satori_2obj_2_debug_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_debug_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_debug_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_release_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_release_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_release_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _sec_web_socket_key_missing_exception_8cs.html
│ ├── _sec_web_socket_key_missing_exception_8cs.js
│ ├── _server_listener_socket_exception_8cs.html
│ ├── _server_listener_socket_exception_8cs.js
│ ├── _session_8cs.html
│ ├── _session_8cs.js
│ ├── _socket_8cs.html
│ ├── _socket_8cs.js
│ ├── _status_follow_message_8cs.html
│ ├── _status_unfollow_message_8cs.html
│ ├── _status_update_message_8cs.html
│ ├── _storage_object_id_8cs.html
│ ├── _storage_object_id_8cs.js
│ ├── _transient_exception_delegate_8cs.html
│ ├── _transient_exception_delegate_8cs.js
│ ├── _web_socket_adapter_8cs.html
│ ├── _web_socket_adapter_8cs.js
│ ├── _web_socket_buffer_overflow_exception_8cs.html
│ ├── _web_socket_buffer_overflow_exception_8cs.js
│ ├── _web_socket_client_factory_8cs.html
│ ├── _web_socket_client_factory_8cs.js
│ ├── _web_socket_client_options_8cs.html
│ ├── _web_socket_client_options_8cs.js
│ ├── _web_socket_error_message_8cs.html
│ ├── _web_socket_frame_8cs.html
│ ├── _web_socket_frame_common_8cs.html
│ ├── _web_socket_frame_reader_8cs.html
│ ├── _web_socket_frame_writer_8cs.html
│ ├── _web_socket_handshake_failed_exception_8cs.html
│ ├── _web_socket_handshake_failed_exception_8cs.js
│ ├── _web_socket_http_context_8cs.html
│ ├── _web_socket_http_context_8cs.js
│ ├── _web_socket_implementation_8cs.html
│ ├── _web_socket_message_envelope_8cs.html
│ ├── _web_socket_op_code_8cs.html
│ ├── _web_socket_read_cursor_8cs.html
│ ├── _web_socket_server_factory_8cs.html
│ ├── _web_socket_server_factory_8cs.js
│ ├── _web_socket_server_options_8cs.html
│ ├── _web_socket_server_options_8cs.js
│ ├── _web_socket_stdlib_adapter_8cs.html
│ ├── _web_socket_stdlib_adapter_8cs.js
│ ├── _web_socket_version_not_supported_exception_8cs.html
│ ├── _web_socket_version_not_supported_exception_8cs.js
│ ├── _write_storage_object_8cs.html
│ ├── _write_storage_object_8cs.js
│ ├── annotated.html
│ ├── annotated_dup.js
│ ├── class_nakama_1_1_api_response_exception-members.html
│ ├── class_nakama_1_1_api_response_exception.html
│ ├── class_nakama_1_1_api_response_exception.js
│ ├── class_nakama_1_1_client-members.html
│ ├── class_nakama_1_1_client.html
│ ├── class_nakama_1_1_client.js
│ ├── class_nakama_1_1_console_1_1_api_response_exception-members.html
│ ├── class_nakama_1_1_console_1_1_api_response_exception.html
│ ├── class_nakama_1_1_console_1_1_api_response_exception.js
│ ├── class_nakama_1_1_http_request_adapter-members.html
│ ├── class_nakama_1_1_http_request_adapter.html
│ ├── class_nakama_1_1_http_request_adapter.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_http_helper-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_http_helper.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options.js
│ ├── class_nakama_1_1_retry-members.html
│ ├── class_nakama_1_1_retry.html
│ ├── class_nakama_1_1_retry.js
│ ├── class_nakama_1_1_retry_configuration-members.html
│ ├── class_nakama_1_1_retry_configuration.html
│ ├── class_nakama_1_1_retry_configuration.js
│ ├── class_nakama_1_1_session-members.html
│ ├── class_nakama_1_1_session.html
│ ├── class_nakama_1_1_session.js
│ ├── class_nakama_1_1_socket-members.html
│ ├── class_nakama_1_1_socket.html
│ ├── class_nakama_1_1_socket.js
│ ├── class_nakama_1_1_storage_object_id-members.html
│ ├── class_nakama_1_1_storage_object_id.html
│ ├── class_nakama_1_1_storage_object_id.js
│ ├── class_nakama_1_1_tests_1_1_api_1_1_authenticate_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_authenticate_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_group_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_group_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_http_error_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_http_error_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_link_unlink_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_link_unlink_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_rpc_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_rpc_test.html
│ ├── class_nakama_1_1_tests_1_1_awaited_socket_task_test-members.html
│ ├── class_nakama_1_1_tests_1_1_awaited_socket_task_test.html
│ ├── class_nakama_1_1_tests_1_1_cancel_test-members.html
│ ├── class_nakama_1_1_tests_1_1_cancel_test.html
│ ├── class_nakama_1_1_tests_1_1_retry_test-members.html
│ ├── class_nakama_1_1_tests_1_1_retry_test.html
│ ├── class_nakama_1_1_tests_1_1_session_test-members.html
│ ├── class_nakama_1_1_tests_1_1_session_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_party_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_party_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_user_status_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_user_status_test.html
│ ├── class_nakama_1_1_tests_1_1_stdout_logger-members.html
│ ├── class_nakama_1_1_tests_1_1_stdout_logger.html
│ ├── class_nakama_1_1_tests_1_1_stdout_logger.js
│ ├── class_nakama_1_1_tests_1_1_tiny_json_parser_test-members.html
│ ├── class_nakama_1_1_tests_1_1_tiny_json_parser_test.html
│ ├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter-members.html
│ ├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.html
│ ├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.js
│ ├── class_nakama_1_1_web_socket_adapter-members.html
│ ├── class_nakama_1_1_web_socket_adapter.html
│ ├── class_nakama_1_1_web_socket_adapter.js
│ ├── class_nakama_1_1_web_socket_stdlib_adapter-members.html
│ ├── class_nakama_1_1_web_socket_stdlib_adapter.html
│ ├── class_nakama_1_1_web_socket_stdlib_adapter.js
│ ├── class_nakama_1_1_write_storage_object-members.html
│ ├── class_nakama_1_1_write_storage_object.html
│ ├── class_nakama_1_1_write_storage_object.js
│ ├── class_satori_1_1_api_response_exception-members.html
│ ├── class_satori_1_1_api_response_exception.html
│ ├── class_satori_1_1_api_response_exception.js
│ ├── class_satori_1_1_client-members.html
│ ├── class_satori_1_1_client.html
│ ├── class_satori_1_1_client.js
│ ├── class_satori_1_1_event-members.html
│ ├── class_satori_1_1_event.html
│ ├── class_satori_1_1_event.js
│ ├── class_satori_1_1_http_request_adapter-members.html
│ ├── class_satori_1_1_http_request_adapter.html
│ ├── class_satori_1_1_http_request_adapter.js
│ ├── class_satori_1_1_retry-members.html
│ ├── class_satori_1_1_retry.html
│ ├── class_satori_1_1_retry.js
│ ├── class_satori_1_1_retry_configuration-members.html
│ ├── class_satori_1_1_retry_configuration.html
│ ├── class_satori_1_1_retry_configuration.js
│ ├── class_satori_1_1_session-members.html
│ ├── class_satori_1_1_session.html
│ ├── class_satori_1_1_session.js
│ ├── class_satori_1_1_tests_1_1_client_test-members.html
│ ├── class_satori_1_1_tests_1_1_client_test.html
│ ├── classes.html
│ ├── clipboard.js
│ ├── cookie.js
│ ├── dir_00db1776877a30bd47a3324e3b896815.html
│ ├── dir_00db1776877a30bd47a3324e3b896815.js
│ ├── dir_0255d041b3ce7964bcd7b11954959c22.html
│ ├── dir_0385b7cc93c13096276fd0475bf94138.html
│ ├── dir_0385b7cc93c13096276fd0475bf94138.js
│ ├── dir_07d4e60c212e220cb70fd11bc65ff95e.html
│ ├── dir_0a71ed179ba9d4357fa1a0aa4e188f77.html
│ ├── dir_0a71ed179ba9d4357fa1a0aa4e188f77.js
│ ├── dir_0acaa047c55e3bbc2ca6716743379b50.html
│ ├── dir_104e9d364d598921197c06c38fc2275c.html
│ ├── dir_1c3008a3c461c137d9f062e2a28e5366.html
│ ├── dir_1c3008a3c461c137d9f062e2a28e5366.js
│ ├── dir_2024f50217af71df819eb31c540cc957.html
│ ├── dir_2024f50217af71df819eb31c540cc957.js
│ ├── dir_223f41b9d4a3aed2d0cd2a771bf2b672.html
│ ├── dir_29bd9dc1cd33dca2d02be697ebc424d5.html
│ ├── dir_29bd9dc1cd33dca2d02be697ebc424d5.js
│ ├── dir_2c78f4ea1566149e6f1239d9a2bbc92d.html
│ ├── dir_2c78f4ea1566149e6f1239d9a2bbc92d.js
│ ├── dir_3771c35781cb72be820bcf0859828876.html
│ ├── dir_40821ca9aa8b0024c09c9271c75bfc8d.html
│ ├── dir_4aba2f75ac06c997db6dcdd45b346bfc.html
│ ├── dir_4aba2f75ac06c997db6dcdd45b346bfc.js
│ ├── dir_4d6966d1911ef40af05228884f817f01.html
│ ├── dir_509efb472faf656a1f9c1c002f3dfbd0.html
│ ├── dir_59425e443f801f1f2fd8bbe4959a3ccf.html
│ ├── dir_5986fb63ee1c250c22ec7255d2796bed.html
│ ├── dir_5986fb63ee1c250c22ec7255d2796bed.js
│ ├── dir_5a43296f26836228c3ddbf8578e994aa.html
│ ├── dir_5a43296f26836228c3ddbf8578e994aa.js
│ ├── dir_5c537d2b32ff2d13d00336fbe6131750.html
│ ├── dir_5c537d2b32ff2d13d00336fbe6131750.js
│ ├── dir_5d1450713377add98c1180fe0eb2f9ae.html
│ ├── dir_5d1450713377add98c1180fe0eb2f9ae.js
│ ├── dir_5eb17383be0272b71916d4988c97ae3c.html
│ ├── dir_5eb17383be0272b71916d4988c97ae3c.js
│ ├── dir_64302e4ed8e680c5e7832e1b7ea09baa.html
│ ├── dir_64302e4ed8e680c5e7832e1b7ea09baa.js
│ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html
│ ├── dir_6c5dd7babc86647cb00b5f49e0afc051.html
│ ├── dir_6c5dd7babc86647cb00b5f49e0afc051.js
│ ├── dir_717cf8a47ded45e56c3041f98a9ca441.html
│ ├── dir_75202c243db9baf385df0aac94b0acc0.html
│ ├── dir_75202c243db9baf385df0aac94b0acc0.js
│ ├── dir_79e598b17822ac3218a31651fbd84230.html
│ ├── dir_7a595d23279f99f2e5346245557e8271.html
│ ├── dir_7a595d23279f99f2e5346245557e8271.js
│ ├── dir_7b1b4a986f21cd07a017e6cd0f74eec4.html
│ ├── dir_81ad01bee8ed91a16e2e56d92ae48530.html
│ ├── dir_82823cd98c87c4bb1483bb7f879dfe68.html
│ ├── dir_87bdc2ec3fb2fe36f0442c7b9fa8c83c.html
│ ├── dir_87bdc2ec3fb2fe36f0442c7b9fa8c83c.js
│ ├── dir_93c065d202f1b2ae4be97868117427d8.html
│ ├── dir_93c065d202f1b2ae4be97868117427d8.js
│ ├── dir_94394ac86fa77e96e8d4c3af72ed61db.html
│ ├── dir_9ded64b83b3f5b23c7937ebd8f5ce2f1.html
│ ├── dir_a159881d357f96df4223872fd74cca14.html
│ ├── dir_aa00dbe797bd24fe05814e1a03a446ba.html
│ ├── dir_b668d86527323370c4668cb8bf07410d.html
│ ├── dir_ba769f4416b2c074a28c6130af43e345.html
│ ├── dir_ba769f4416b2c074a28c6130af43e345.js
│ ├── dir_c0ea682cca75c87761dacf1668992820.html
│ ├── dir_c0ea682cca75c87761dacf1668992820.js
│ ├── dir_c7fa37d54586c2d4e1bdb0bf9742bd86.html
│ ├── dir_c7fa37d54586c2d4e1bdb0bf9742bd86.js
│ ├── dir_ca7d207afbe6ec834644d82c9da0e27f.html
│ ├── dir_ca7d207afbe6ec834644d82c9da0e27f.js
│ ├── dir_cbab373848d17bb13c8f8154bda6a142.html
│ ├── dir_cde5b50139b2efdd71913c8f6e2f5b92.html
│ ├── dir_d0af3520e52159625e5c54b0a0666246.html
│ ├── dir_d0af3520e52159625e5c54b0a0666246.js
│ ├── dir_d28a4824dc47e487b107a5db32ef43c4.html
│ ├── dir_dbdb02b1c6a463d71690e5d1f101f3be.html
│ ├── dir_dbdb02b1c6a463d71690e5d1f101f3be.js
│ ├── dir_e0a5a45ea46034a62177509fd4cc477b.html
│ ├── dir_e55adf3e55c0cf2ab15afcf2abaa2799.html
│ ├── dir_e8b3846043ed55e70c4740c96c71631d.html
│ ├── dir_ec82c3f1a2edb4d01443ada27de98406.html
│ ├── dir_ec82c3f1a2edb4d01443ada27de98406.js
│ ├── dir_f5a6105ca7ea82175c57b6cc08e28f9f.html
│ ├── dir_f82b846bb6a413b95a3fa0edffb6464f.html
│ ├── doxygen.css
│ ├── doxygen_crawl.html
│ ├── dynsections.js
│ ├── files.html
│ ├── files_dup.js
│ ├── functions.html
│ ├── functions_b.html
│ ├── functions_c.html
│ ├── functions_d.html
│ ├── functions_dup.js
│ ├── functions_e.html
│ ├── functions_evnt.html
│ ├── functions_f.html
│ ├── functions_func.html
│ ├── functions_func.js
│ ├── functions_func_b.html
│ ├── functions_func_c.html
│ ├── functions_func_d.html
│ ├── functions_func_e.html
│ ├── functions_func_f.html
│ ├── functions_func_g.html
│ ├── functions_func_h.html
│ ├── functions_func_i.html
│ ├── functions_func_j.html
│ ├── functions_func_k.html
│ ├── functions_func_l.html
│ ├── functions_func_o.html
│ ├── functions_func_p.html
│ ├── functions_func_r.html
│ ├── functions_func_s.html
│ ├── functions_func_t.html
│ ├── functions_func_u.html
│ ├── functions_func_v.html
│ ├── functions_func_w.html
│ ├── functions_g.html
│ ├── functions_h.html
│ ├── functions_i.html
│ ├── functions_j.html
│ ├── functions_k.html
│ ├── functions_l.html
│ ├── functions_m.html
│ ├── functions_n.html
│ ├── functions_o.html
│ ├── functions_p.html
│ ├── functions_prop.html
│ ├── functions_prop.js
│ ├── functions_prop_b.html
│ ├── functions_prop_c.html
│ ├── functions_prop_d.html
│ ├── functions_prop_e.html
│ ├── functions_prop_f.html
│ ├── functions_prop_g.html
│ ├── functions_prop_h.html
│ ├── functions_prop_i.html
│ ├── functions_prop_j.html
│ ├── functions_prop_k.html
│ ├── functions_prop_l.html
│ ├── functions_prop_m.html
│ ├── functions_prop_n.html
│ ├── functions_prop_o.html
│ ├── functions_prop_p.html
│ ├── functions_prop_r.html
│ ├── functions_prop_s.html
│ ├── functions_prop_t.html
│ ├── functions_prop_u.html
│ ├── functions_prop_v.html
│ ├── functions_prop_w.html
│ ├── functions_r.html
│ ├── functions_s.html
│ ├── functions_t.html
│ ├── functions_u.html
│ ├── functions_v.html
│ ├── functions_vars.html
│ ├── functions_w.html
│ ├── hierarchy.html
│ ├── hierarchy.js
│ ├── index.html
│ ├── interface_nakama_1_1_console_1_1_i_api_account_device-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_account_device.html
│ ├── interface_nakama_1_1_console_1_1_i_api_account_device.js
│ ├── interface_nakama_1_1_console_1_1_i_api_channel_message-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_channel_message.html
│ ├── interface_nakama_1_1_console_1_1_i_api_channel_message.js
│ ├── interface_nakama_1_1_console_1_1_i_api_friend-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend.js
│ ├── interface_nakama_1_1_console_1_1_i_api_friend_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend_list.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend_list.js
│ ├── interface_nakama_1_1_console_1_1_i_api_group-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_group.html
│ ├── interface_nakama_1_1_console_1_1_i_api_group.js
│ ├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record.html
│ ├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record.js
│ ├── interface_nakama_1_1_console_1_1_i_api_notification-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_notification.html
│ ├── interface_nakama_1_1_console_1_1_i_api_notification.js
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object.js
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack.js
│ ├── interface_nakama_1_1_console_1_1_i_api_user-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user.js
│ ├── interface_nakama_1_1_console_1_1_i_api_user_group_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user_group_list.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user_group_list.js
│ ├── interface_nakama_1_1_console_1_1_i_config_warning-members.html
│ ├── interface_nakama_1_1_console_1_1_i_config_warning.html
│ ├── interface_nakama_1_1_console_1_1_i_config_warning.js
│ ├── interface_nakama_1_1_console_1_1_i_console_account_export-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_account_export.html
│ ├── interface_nakama_1_1_console_1_1_i_console_account_export.js
│ ├── interface_nakama_1_1_console_1_1_i_console_authenticate_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_authenticate_request.html
│ ├── interface_nakama_1_1_console_1_1_i_console_authenticate_request.js
│ ├── interface_nakama_1_1_console_1_1_i_console_config-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_config.html
│ ├── interface_nakama_1_1_console_1_1_i_console_config.js
│ ├── interface_nakama_1_1_console_1_1_i_console_console_session-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_console_session.html
│ ├── interface_nakama_1_1_console_1_1_i_console_console_session.js
│ ├── interface_nakama_1_1_console_1_1_i_console_status_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_status_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_status_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_storage_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_storage_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_storage_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request.html
│ ├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request.js
│ ├── interface_nakama_1_1_console_1_1_i_console_user_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_user_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_user_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger.js
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request.html
│ ├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request.js
│ ├── interface_nakama_1_1_console_1_1_i_nakamaapi_account-members.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaapi_account.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaapi_account.js
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account-members.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account.js
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request.js
│ ├── interface_nakama_1_1_console_1_1_i_protobuf_any-members.html
│ ├── interface_nakama_1_1_console_1_1_i_protobuf_any.html
│ ├── interface_nakama_1_1_console_1_1_i_protobuf_any.js
│ ├── interface_nakama_1_1_console_1_1_i_runtime_error-members.html
│ ├── interface_nakama_1_1_console_1_1_i_runtime_error.html
│ ├── interface_nakama_1_1_console_1_1_i_runtime_error.js
│ ├── interface_nakama_1_1_console_1_1_i_status_list_status-members.html
│ ├── interface_nakama_1_1_console_1_1_i_status_list_status.html
│ ├── interface_nakama_1_1_console_1_1_i_status_list_status.js
│ ├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group-members.html
│ ├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group.html
│ ├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group.js
│ ├── interface_nakama_1_1_i_api_account-members.html
│ ├── interface_nakama_1_1_i_api_account.html
│ ├── interface_nakama_1_1_i_api_account.js
│ ├── interface_nakama_1_1_i_api_account_apple-members.html
│ ├── interface_nakama_1_1_i_api_account_apple.html
│ ├── interface_nakama_1_1_i_api_account_apple.js
│ ├── interface_nakama_1_1_i_api_account_custom-members.html
│ ├── interface_nakama_1_1_i_api_account_custom.html
│ ├── interface_nakama_1_1_i_api_account_custom.js
│ ├── interface_nakama_1_1_i_api_account_device-members.html
│ ├── interface_nakama_1_1_i_api_account_device.html
│ ├── interface_nakama_1_1_i_api_account_device.js
│ ├── interface_nakama_1_1_i_api_account_email-members.html
│ ├── interface_nakama_1_1_i_api_account_email.html
│ ├── interface_nakama_1_1_i_api_account_email.js
│ ├── interface_nakama_1_1_i_api_account_facebook-members.html
│ ├── interface_nakama_1_1_i_api_account_facebook.html
│ ├── interface_nakama_1_1_i_api_account_facebook.js
│ ├── interface_nakama_1_1_i_api_account_facebook_instant_game-members.html
│ ├── interface_nakama_1_1_i_api_account_facebook_instant_game.html
│ ├── interface_nakama_1_1_i_api_account_facebook_instant_game.js
│ ├── interface_nakama_1_1_i_api_account_game_center-members.html
│ ├── interface_nakama_1_1_i_api_account_game_center.html
│ ├── interface_nakama_1_1_i_api_account_game_center.js
│ ├── interface_nakama_1_1_i_api_account_google-members.html
│ ├── interface_nakama_1_1_i_api_account_google.html
│ ├── interface_nakama_1_1_i_api_account_google.js
│ ├── interface_nakama_1_1_i_api_account_steam-members.html
│ ├── interface_nakama_1_1_i_api_account_steam.html
│ ├── interface_nakama_1_1_i_api_account_steam.js
│ ├── interface_nakama_1_1_i_api_channel_message-members.html
│ ├── interface_nakama_1_1_i_api_channel_message.html
│ ├── interface_nakama_1_1_i_api_channel_message.js
│ ├── interface_nakama_1_1_i_api_channel_message_list-members.html
│ ├── interface_nakama_1_1_i_api_channel_message_list.html
│ ├── interface_nakama_1_1_i_api_channel_message_list.js
│ ├── interface_nakama_1_1_i_api_create_group_request-members.html
│ ├── interface_nakama_1_1_i_api_create_group_request.html
│ ├── interface_nakama_1_1_i_api_create_group_request.js
│ ├── interface_nakama_1_1_i_api_delete_storage_object_id-members.html
│ ├── interface_nakama_1_1_i_api_delete_storage_object_id.html
│ ├── interface_nakama_1_1_i_api_delete_storage_object_id.js
│ ├── interface_nakama_1_1_i_api_delete_storage_objects_request-members.html
│ ├── interface_nakama_1_1_i_api_delete_storage_objects_request.html
│ ├── interface_nakama_1_1_i_api_delete_storage_objects_request.js
│ ├── interface_nakama_1_1_i_api_event-members.html
│ ├── interface_nakama_1_1_i_api_event.html
│ ├── interface_nakama_1_1_i_api_event.js
│ ├── interface_nakama_1_1_i_api_friend-members.html
│ ├── interface_nakama_1_1_i_api_friend.html
│ ├── interface_nakama_1_1_i_api_friend.js
│ ├── interface_nakama_1_1_i_api_friend_list-members.html
│ ├── interface_nakama_1_1_i_api_friend_list.html
│ ├── interface_nakama_1_1_i_api_friend_list.js
│ ├── interface_nakama_1_1_i_api_friends_of_friends_list-members.html
│ ├── interface_nakama_1_1_i_api_friends_of_friends_list.html
│ ├── interface_nakama_1_1_i_api_friends_of_friends_list.js
│ ├── interface_nakama_1_1_i_api_group-members.html
│ ├── interface_nakama_1_1_i_api_group.html
│ ├── interface_nakama_1_1_i_api_group.js
│ ├── interface_nakama_1_1_i_api_group_list-members.html
│ ├── interface_nakama_1_1_i_api_group_list.html
│ ├── interface_nakama_1_1_i_api_group_list.js
│ ├── interface_nakama_1_1_i_api_group_user_list-members.html
│ ├── interface_nakama_1_1_i_api_group_user_list.html
│ ├── interface_nakama_1_1_i_api_group_user_list.js
│ ├── interface_nakama_1_1_i_api_leaderboard_record-members.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record.js
│ ├── interface_nakama_1_1_i_api_leaderboard_record_list-members.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record_list.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record_list.js
│ ├── interface_nakama_1_1_i_api_link_steam_request-members.html
│ ├── interface_nakama_1_1_i_api_link_steam_request.html
│ ├── interface_nakama_1_1_i_api_link_steam_request.js
│ ├── interface_nakama_1_1_i_api_list_subscriptions_request-members.html
│ ├── interface_nakama_1_1_i_api_list_subscriptions_request.html
│ ├── interface_nakama_1_1_i_api_list_subscriptions_request.js
│ ├── interface_nakama_1_1_i_api_match-members.html
│ ├── interface_nakama_1_1_i_api_match.html
│ ├── interface_nakama_1_1_i_api_match.js
│ ├── interface_nakama_1_1_i_api_match_list-members.html
│ ├── interface_nakama_1_1_i_api_match_list.html
│ ├── interface_nakama_1_1_i_api_match_list.js
│ ├── interface_nakama_1_1_i_api_matchmaker_completion_stats-members.html
│ ├── interface_nakama_1_1_i_api_matchmaker_completion_stats.html
│ ├── interface_nakama_1_1_i_api_matchmaker_completion_stats.js
│ ├── interface_nakama_1_1_i_api_matchmaker_stats-members.html
│ ├── interface_nakama_1_1_i_api_matchmaker_stats.html
│ ├── interface_nakama_1_1_i_api_matchmaker_stats.js
│ ├── interface_nakama_1_1_i_api_notification-members.html
│ ├── interface_nakama_1_1_i_api_notification.html
│ ├── interface_nakama_1_1_i_api_notification.js
│ ├── interface_nakama_1_1_i_api_notification_list-members.html
│ ├── interface_nakama_1_1_i_api_notification_list.html
│ ├── interface_nakama_1_1_i_api_notification_list.js
│ ├── interface_nakama_1_1_i_api_party-members.html
│ ├── interface_nakama_1_1_i_api_party.html
│ ├── interface_nakama_1_1_i_api_party.js
│ ├── interface_nakama_1_1_i_api_party_list-members.html
│ ├── interface_nakama_1_1_i_api_party_list.html
│ ├── interface_nakama_1_1_i_api_party_list.js
│ ├── interface_nakama_1_1_i_api_read_storage_object_id-members.html
│ ├── interface_nakama_1_1_i_api_read_storage_object_id.html
│ ├── interface_nakama_1_1_i_api_read_storage_object_id.js
│ ├── interface_nakama_1_1_i_api_read_storage_objects_request-members.html
│ ├── interface_nakama_1_1_i_api_read_storage_objects_request.html
│ ├── interface_nakama_1_1_i_api_read_storage_objects_request.js
│ ├── interface_nakama_1_1_i_api_rpc-members.html
│ ├── interface_nakama_1_1_i_api_rpc.html
│ ├── interface_nakama_1_1_i_api_rpc.js
│ ├── interface_nakama_1_1_i_api_session-members.html
│ ├── interface_nakama_1_1_i_api_session.html
│ ├── interface_nakama_1_1_i_api_session.js
│ ├── interface_nakama_1_1_i_api_session_logout_request-members.html
│ ├── interface_nakama_1_1_i_api_session_logout_request.html
│ ├── interface_nakama_1_1_i_api_session_logout_request.js
│ ├── interface_nakama_1_1_i_api_session_refresh_request-members.html
│ ├── interface_nakama_1_1_i_api_session_refresh_request.html
│ ├── interface_nakama_1_1_i_api_session_refresh_request.js
│ ├── interface_nakama_1_1_i_api_storage_object-members.html
│ ├── interface_nakama_1_1_i_api_storage_object.html
│ ├── interface_nakama_1_1_i_api_storage_object.js
│ ├── interface_nakama_1_1_i_api_storage_object_ack-members.html
│ ├── interface_nakama_1_1_i_api_storage_object_ack.html
│ ├── interface_nakama_1_1_i_api_storage_object_ack.js
│ ├── interface_nakama_1_1_i_api_storage_object_acks-members.html
│ ├── interface_nakama_1_1_i_api_storage_object_acks.html
│ ├── interface_nakama_1_1_i_api_storage_object_acks.js
│ ├── interface_nakama_1_1_i_api_storage_object_list-members.html
│ ├── interface_nakama_1_1_i_api_storage_object_list.html
│ ├── interface_nakama_1_1_i_api_storage_object_list.js
│ ├── interface_nakama_1_1_i_api_storage_objects-members.html
│ ├── interface_nakama_1_1_i_api_storage_objects.html
│ ├── interface_nakama_1_1_i_api_storage_objects.js
│ ├── interface_nakama_1_1_i_api_subscription_list-members.html
│ ├── interface_nakama_1_1_i_api_subscription_list.html
│ ├── interface_nakama_1_1_i_api_subscription_list.js
│ ├── interface_nakama_1_1_i_api_tournament-members.html
│ ├── interface_nakama_1_1_i_api_tournament.html
│ ├── interface_nakama_1_1_i_api_tournament.js
│ ├── interface_nakama_1_1_i_api_tournament_list-members.html
│ ├── interface_nakama_1_1_i_api_tournament_list.html
│ ├── interface_nakama_1_1_i_api_tournament_list.js
│ ├── interface_nakama_1_1_i_api_tournament_record_list-members.html
│ ├── interface_nakama_1_1_i_api_tournament_record_list.html
│ ├── interface_nakama_1_1_i_api_tournament_record_list.js
│ ├── interface_nakama_1_1_i_api_update_account_request-members.html
│ ├── interface_nakama_1_1_i_api_update_account_request.html
│ ├── interface_nakama_1_1_i_api_update_account_request.js
│ ├── interface_nakama_1_1_i_api_update_group_request-members.html
│ ├── interface_nakama_1_1_i_api_update_group_request.html
│ ├── interface_nakama_1_1_i_api_update_group_request.js
│ ├── interface_nakama_1_1_i_api_user-members.html
│ ├── interface_nakama_1_1_i_api_user.html
│ ├── interface_nakama_1_1_i_api_user.js
│ ├── interface_nakama_1_1_i_api_user_group_list-members.html
│ ├── interface_nakama_1_1_i_api_user_group_list.html
│ ├── interface_nakama_1_1_i_api_user_group_list.js
│ ├── interface_nakama_1_1_i_api_users-members.html
│ ├── interface_nakama_1_1_i_api_users.html
│ ├── interface_nakama_1_1_i_api_users.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_apple_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_apple_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_apple_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_facebook_instant_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_facebook_instant_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_facebook_instant_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_google_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_google_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_google_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_huawei_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_huawei_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_huawei_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_response-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_response.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_response.js
│ ├── interface_nakama_1_1_i_api_validate_subscription_apple_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_apple_request.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_apple_request.js
│ ├── interface_nakama_1_1_i_api_validate_subscription_google_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_google_request.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_google_request.js
│ ├── interface_nakama_1_1_i_api_validate_subscription_response-members.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_response.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_response.js
│ ├── interface_nakama_1_1_i_api_validated_purchase-members.html
│ ├── interface_nakama_1_1_i_api_validated_purchase.html
│ ├── interface_nakama_1_1_i_api_validated_purchase.js
│ ├── interface_nakama_1_1_i_api_validated_subscription-members.html
│ ├── interface_nakama_1_1_i_api_validated_subscription.html
│ ├── interface_nakama_1_1_i_api_validated_subscription.js
│ ├── interface_nakama_1_1_i_api_write_storage_object-members.html
│ ├── interface_nakama_1_1_i_api_write_storage_object.html
│ ├── interface_nakama_1_1_i_api_write_storage_object.js
│ ├── interface_nakama_1_1_i_api_write_storage_objects_request-members.html
│ ├── interface_nakama_1_1_i_api_write_storage_objects_request.html
│ ├── interface_nakama_1_1_i_api_write_storage_objects_request.js
│ ├── interface_nakama_1_1_i_channel-members.html
│ ├── interface_nakama_1_1_i_channel.html
│ ├── interface_nakama_1_1_i_channel.js
│ ├── interface_nakama_1_1_i_channel_message_ack-members.html
│ ├── interface_nakama_1_1_i_channel_message_ack.html
│ ├── interface_nakama_1_1_i_channel_message_ack.js
│ ├── interface_nakama_1_1_i_channel_presence_event-members.html
│ ├── interface_nakama_1_1_i_channel_presence_event.html
│ ├── interface_nakama_1_1_i_channel_presence_event.js
│ ├── interface_nakama_1_1_i_client-members.html
│ ├── interface_nakama_1_1_i_client.html
│ ├── interface_nakama_1_1_i_client.js
│ ├── interface_nakama_1_1_i_friends_of_friends_list_friend_of_friend-members.html
│ ├── interface_nakama_1_1_i_friends_of_friends_list_friend_of_friend.html
│ ├── interface_nakama_1_1_i_friends_of_friends_list_friend_of_friend.js
│ ├── interface_nakama_1_1_i_group_user_list_group_user-members.html
│ ├── interface_nakama_1_1_i_group_user_list_group_user.html
│ ├── interface_nakama_1_1_i_group_user_list_group_user.js
│ ├── interface_nakama_1_1_i_http_adapter-members.html
│ ├── interface_nakama_1_1_i_http_adapter.html
│ ├── interface_nakama_1_1_i_http_adapter.js
│ ├── interface_nakama_1_1_i_logger-members.html
│ ├── interface_nakama_1_1_i_logger.html
│ ├── interface_nakama_1_1_i_logger.js
│ ├── interface_nakama_1_1_i_match-members.html
│ ├── interface_nakama_1_1_i_match.html
│ ├── interface_nakama_1_1_i_match.js
│ ├── interface_nakama_1_1_i_match_presence_event-members.html
│ ├── interface_nakama_1_1_i_match_presence_event.html
│ ├── interface_nakama_1_1_i_match_presence_event.js
│ ├── interface_nakama_1_1_i_match_state-members.html
│ ├── interface_nakama_1_1_i_match_state.html
│ ├── interface_nakama_1_1_i_match_state.js
│ ├── interface_nakama_1_1_i_matchmaker_matched-members.html
│ ├── interface_nakama_1_1_i_matchmaker_matched.html
│ ├── interface_nakama_1_1_i_matchmaker_matched.js
│ ├── interface_nakama_1_1_i_matchmaker_ticket-members.html
│ ├── interface_nakama_1_1_i_matchmaker_ticket.html
│ ├── interface_nakama_1_1_i_matchmaker_ticket.js
│ ├── interface_nakama_1_1_i_matchmaker_user-members.html
│ ├── interface_nakama_1_1_i_matchmaker_user.html
│ ├── interface_nakama_1_1_i_matchmaker_user.js
│ ├── interface_nakama_1_1_i_party-members.html
│ ├── interface_nakama_1_1_i_party.html
│ ├── interface_nakama_1_1_i_party.js
│ ├── interface_nakama_1_1_i_party_close-members.html
│ ├── interface_nakama_1_1_i_party_close.html
│ ├── interface_nakama_1_1_i_party_close.js
│ ├── interface_nakama_1_1_i_party_data-members.html
│ ├── interface_nakama_1_1_i_party_data.html
│ ├── interface_nakama_1_1_i_party_data.js
│ ├── interface_nakama_1_1_i_party_join_request-members.html
│ ├── interface_nakama_1_1_i_party_join_request.html
│ ├── interface_nakama_1_1_i_party_join_request.js
│ ├── interface_nakama_1_1_i_party_leader-members.html
│ ├── interface_nakama_1_1_i_party_leader.html
│ ├── interface_nakama_1_1_i_party_leader.js
│ ├── interface_nakama_1_1_i_party_matchmaker_ticket-members.html
│ ├── interface_nakama_1_1_i_party_matchmaker_ticket.html
│ ├── interface_nakama_1_1_i_party_matchmaker_ticket.js
│ ├── interface_nakama_1_1_i_party_presence_event-members.html
│ ├── interface_nakama_1_1_i_party_presence_event.html
│ ├── interface_nakama_1_1_i_party_presence_event.js
│ ├── interface_nakama_1_1_i_party_update-members.html
│ ├── interface_nakama_1_1_i_party_update.html
│ ├── interface_nakama_1_1_i_party_update.js
│ ├── interface_nakama_1_1_i_protobuf_any-members.html
│ ├── interface_nakama_1_1_i_protobuf_any.html
│ ├── interface_nakama_1_1_i_protobuf_any.js
│ ├── interface_nakama_1_1_i_rpc_status-members.html
│ ├── interface_nakama_1_1_i_rpc_status.html
│ ├── interface_nakama_1_1_i_rpc_status.js
│ ├── interface_nakama_1_1_i_session-members.html
│ ├── interface_nakama_1_1_i_session.html
│ ├── interface_nakama_1_1_i_session.js
│ ├── interface_nakama_1_1_i_socket-members.html
│ ├── interface_nakama_1_1_i_socket.html
│ ├── interface_nakama_1_1_i_socket.js
│ ├── interface_nakama_1_1_i_socket_adapter-members.html
│ ├── interface_nakama_1_1_i_socket_adapter.html
│ ├── interface_nakama_1_1_i_socket_adapter.js
│ ├── interface_nakama_1_1_i_status-members.html
│ ├── interface_nakama_1_1_i_status.html
│ ├── interface_nakama_1_1_i_status.js
│ ├── interface_nakama_1_1_i_status_presence_event-members.html
│ ├── interface_nakama_1_1_i_status_presence_event.html
│ ├── interface_nakama_1_1_i_status_presence_event.js
│ ├── interface_nakama_1_1_i_stream-members.html
│ ├── interface_nakama_1_1_i_stream.html
│ ├── interface_nakama_1_1_i_stream.js
│ ├── interface_nakama_1_1_i_stream_presence_event-members.html
│ ├── interface_nakama_1_1_i_stream_presence_event.html
│ ├── interface_nakama_1_1_i_stream_presence_event.js
│ ├── interface_nakama_1_1_i_stream_state-members.html
│ ├── interface_nakama_1_1_i_stream_state.html
│ ├── interface_nakama_1_1_i_stream_state.js
│ ├── interface_nakama_1_1_i_user_group_list_user_group-members.html
│ ├── interface_nakama_1_1_i_user_group_list_user_group.html
│ ├── interface_nakama_1_1_i_user_group_list_user_group.js
│ ├── interface_nakama_1_1_i_user_presence-members.html
│ ├── interface_nakama_1_1_i_user_presence.html
│ ├── interface_nakama_1_1_i_user_presence.js
│ ├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write-members.html
│ ├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write.html
│ ├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write.js
│ ├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write-members.html
│ ├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write.html
│ ├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.js
│ ├── interface_nakama_1_1_tests_1_1_i_nested_test_object-members.html
│ ├── interface_nakama_1_1_tests_1_1_i_nested_test_object.html
│ ├── interface_nakama_1_1_tests_1_1_i_test_object-members.html
│ ├── interface_nakama_1_1_tests_1_1_i_test_object.html
│ ├── interface_satori_1_1_i_api_authenticate_logout_request-members.html
│ ├── interface_satori_1_1_i_api_authenticate_logout_request.html
│ ├── interface_satori_1_1_i_api_authenticate_logout_request.js
│ ├── interface_satori_1_1_i_api_authenticate_refresh_request-members.html
│ ├── interface_satori_1_1_i_api_authenticate_refresh_request.html
│ ├── interface_satori_1_1_i_api_authenticate_refresh_request.js
│ ├── interface_satori_1_1_i_api_authenticate_request-members.html
│ ├── interface_satori_1_1_i_api_authenticate_request.html
│ ├── interface_satori_1_1_i_api_authenticate_request.js
│ ├── interface_satori_1_1_i_api_event-members.html
│ ├── interface_satori_1_1_i_api_event.html
│ ├── interface_satori_1_1_i_api_event.js
│ ├── interface_satori_1_1_i_api_event_request-members.html
│ ├── interface_satori_1_1_i_api_event_request.html
│ ├── interface_satori_1_1_i_api_event_request.js
│ ├── interface_satori_1_1_i_api_experiment-members.html
│ ├── interface_satori_1_1_i_api_experiment.html
│ ├── interface_satori_1_1_i_api_experiment.js
│ ├── interface_satori_1_1_i_api_experiment_list-members.html
│ ├── interface_satori_1_1_i_api_experiment_list.html
│ ├── interface_satori_1_1_i_api_experiment_list.js
│ ├── interface_satori_1_1_i_api_flag-members.html
│ ├── interface_satori_1_1_i_api_flag.html
│ ├── interface_satori_1_1_i_api_flag.js
│ ├── interface_satori_1_1_i_api_flag_list-members.html
│ ├── interface_satori_1_1_i_api_flag_list.html
│ ├── interface_satori_1_1_i_api_flag_list.js
│ ├── interface_satori_1_1_i_api_flag_override-members.html
│ ├── interface_satori_1_1_i_api_flag_override.html
│ ├── interface_satori_1_1_i_api_flag_override.js
│ ├── interface_satori_1_1_i_api_flag_override_list-members.html
│ ├── interface_satori_1_1_i_api_flag_override_list.html
│ ├── interface_satori_1_1_i_api_flag_override_list.js
│ ├── interface_satori_1_1_i_api_flag_override_value-members.html
│ ├── interface_satori_1_1_i_api_flag_override_value.html
│ ├── interface_satori_1_1_i_api_flag_override_value.js
│ ├── interface_satori_1_1_i_api_get_message_list_response-members.html
│ ├── interface_satori_1_1_i_api_get_message_list_response.html
│ ├── interface_satori_1_1_i_api_get_message_list_response.js
│ ├── interface_satori_1_1_i_api_identify_request-members.html
│ ├── interface_satori_1_1_i_api_identify_request.html
│ ├── interface_satori_1_1_i_api_identify_request.js
│ ├── interface_satori_1_1_i_api_live_event-members.html
│ ├── interface_satori_1_1_i_api_live_event.html
│ ├── interface_satori_1_1_i_api_live_event.js
│ ├── interface_satori_1_1_i_api_live_event_list-members.html
│ ├── interface_satori_1_1_i_api_live_event_list.html
│ ├── interface_satori_1_1_i_api_live_event_list.js
│ ├── interface_satori_1_1_i_api_message-members.html
│ ├── interface_satori_1_1_i_api_message.html
│ ├── interface_satori_1_1_i_api_message.js
│ ├── interface_satori_1_1_i_api_properties-members.html
│ ├── interface_satori_1_1_i_api_properties.html
│ ├── interface_satori_1_1_i_api_properties.js
│ ├── interface_satori_1_1_i_api_session-members.html
│ ├── interface_satori_1_1_i_api_session.html
│ ├── interface_satori_1_1_i_api_session.js
│ ├── interface_satori_1_1_i_api_update_message_request-members.html
│ ├── interface_satori_1_1_i_api_update_message_request.html
│ ├── interface_satori_1_1_i_api_update_message_request.js
│ ├── interface_satori_1_1_i_api_update_properties_request-members.html
│ ├── interface_satori_1_1_i_api_update_properties_request.html
│ ├── interface_satori_1_1_i_api_update_properties_request.js
│ ├── interface_satori_1_1_i_client-members.html
│ ├── interface_satori_1_1_i_client.html
│ ├── interface_satori_1_1_i_client.js
│ ├── interface_satori_1_1_i_flag_value_change_reason-members.html
│ ├── interface_satori_1_1_i_flag_value_change_reason.html
│ ├── interface_satori_1_1_i_flag_value_change_reason.js
│ ├── interface_satori_1_1_i_http_adapter-members.html
│ ├── interface_satori_1_1_i_http_adapter.html
│ ├── interface_satori_1_1_i_http_adapter.js
│ ├── interface_satori_1_1_i_logger-members.html
│ ├── interface_satori_1_1_i_logger.html
│ ├── interface_satori_1_1_i_logger.js
│ ├── interface_satori_1_1_i_protobuf_any-members.html
│ ├── interface_satori_1_1_i_protobuf_any.html
│ ├── interface_satori_1_1_i_protobuf_any.js
│ ├── interface_satori_1_1_i_rpc_status-members.html
│ ├── interface_satori_1_1_i_rpc_status.html
│ ├── interface_satori_1_1_i_rpc_status.js
│ ├── interface_satori_1_1_i_session-members.html
│ ├── interface_satori_1_1_i_session.html
│ ├── interface_satori_1_1_i_session.js
│ ├── jquery.js
│ ├── md__2_users_2flavio_2_projects_2heroiclabs_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2gp_2_documents_2_git_hub_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2gp_2_git_hub_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2joao_2_projects_2heroic_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2novabyte_2_heroic-_labs_2_projects_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md___users_sean__documents__git_hub_nakama_dotnet__c_h_a_n_g_e_l_o_g.html
│ ├── md___users_tom_heroic_projects_nakama_dotnet__c_h_a_n_g_e_l_o_g.html
│ ├── md__c_h_a_n_g_e_l_o_g.html
│ ├── md__r_e_a_d_m_e.html
│ ├── md__r_e_l_e_a_s_e_i_n_s_t.html
│ ├── md__satori__tests__r_e_a_d_m_e.html
│ ├── md_codegen__r_e_a_d_m_e.html
│ ├── menu.js
│ ├── menudata.js
│ ├── namespace_nakama.html
│ ├── namespace_nakama.js
│ ├── namespace_nakama_1_1_console.html
│ ├── namespace_nakama_1_1_console.js
│ ├── namespace_nakama_1_1_ninja.html
│ ├── namespace_nakama_1_1_ninja.js
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets.html
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets.js
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions.html
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions.js
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_internal.html
│ ├── namespace_nakama_1_1_tests.html
│ ├── namespace_nakama_1_1_tests.js
│ ├── namespace_nakama_1_1_tests_1_1_api.html
│ ├── namespace_nakama_1_1_tests_1_1_api.js
│ ├── namespace_nakama_1_1_tests_1_1_socket.html
│ ├── namespace_nakama_1_1_tests_1_1_socket.js
│ ├── namespace_nakama_1_1_tiny_json.html
│ ├── namespace_satori.html
│ ├── namespace_satori.js
│ ├── namespace_satori_1_1_tests.html
│ ├── namespace_satori_1_1_tests.js
│ ├── namespace_satori_1_1_tiny_json.html
│ ├── namespacemembers.html
│ ├── namespacemembers_enum.html
│ ├── namespacemembers_func.html
│ ├── namespaces.html
│ ├── namespaces_dup.js
│ ├── navtree.css
│ ├── navtree.js
│ ├── navtreedata.js
│ ├── navtreeindex0.js
│ ├── navtreeindex1.js
│ ├── navtreeindex10.js
│ ├── navtreeindex11.js
│ ├── navtreeindex12.js
│ ├── navtreeindex13.js
│ ├── navtreeindex2.js
│ ├── navtreeindex3.js
│ ├── navtreeindex4.js
│ ├── navtreeindex5.js
│ ├── navtreeindex6.js
│ ├── navtreeindex7.js
│ ├── navtreeindex8.js
│ ├── navtreeindex9.js
│ ├── net46_2_nakama_8_assembly_info_8cs.html
│ ├── net46_2_satori_8_assembly_info_8cs.html
│ ├── netstandard2_80_2_nakama_8_assembly_info_8cs.html
│ ├── netstandard2_80_2_satori_8_assembly_info_8cs.html
│ ├── pages.html
│ ├── resize.js
│ ├── search/
│ │ ├── all_0.html
│ │ ├── all_0.js
│ │ ├── all_1.html
│ │ ├── all_1.js
│ │ ├── all_10.html
│ │ ├── all_10.js
│ │ ├── all_11.html
│ │ ├── all_11.js
│ │ ├── all_12.html
│ │ ├── all_12.js
│ │ ├── all_13.html
│ │ ├── all_13.js
│ │ ├── all_14.html
│ │ ├── all_14.js
│ │ ├── all_15.html
│ │ ├── all_15.js
│ │ ├── all_2.html
│ │ ├── all_2.js
│ │ ├── all_3.html
│ │ ├── all_3.js
│ │ ├── all_4.html
│ │ ├── all_4.js
│ │ ├── all_5.html
│ │ ├── all_5.js
│ │ ├── all_6.html
│ │ ├── all_6.js
│ │ ├── all_7.html
│ │ ├── all_7.js
│ │ ├── all_8.html
│ │ ├── all_8.js
│ │ ├── all_9.html
│ │ ├── all_9.js
│ │ ├── all_a.html
│ │ ├── all_a.js
│ │ ├── all_b.html
│ │ ├── all_b.js
│ │ ├── all_c.html
│ │ ├── all_c.js
│ │ ├── all_d.html
│ │ ├── all_d.js
│ │ ├── all_e.html
│ │ ├── all_e.js
│ │ ├── all_f.html
│ │ ├── all_f.js
│ │ ├── classes_0.html
│ │ ├── classes_0.js
│ │ ├── classes_1.html
│ │ ├── classes_1.js
│ │ ├── classes_2.html
│ │ ├── classes_2.js
│ │ ├── classes_3.html
│ │ ├── classes_3.js
│ │ ├── classes_4.html
│ │ ├── classes_4.js
│ │ ├── classes_5.html
│ │ ├── classes_5.js
│ │ ├── classes_6.html
│ │ ├── classes_6.js
│ │ ├── classes_7.html
│ │ ├── classes_7.js
│ │ ├── classes_8.html
│ │ ├── classes_8.js
│ │ ├── classes_9.html
│ │ ├── classes_9.js
│ │ ├── classes_a.js
│ │ ├── classes_b.js
│ │ ├── classes_c.js
│ │ ├── enums_0.html
│ │ ├── enums_0.js
│ │ ├── enums_1.html
│ │ ├── enums_1.js
│ │ ├── enums_2.js
│ │ ├── enumvalues_0.html
│ │ ├── enumvalues_0.js
│ │ ├── enumvalues_1.html
│ │ ├── enumvalues_1.js
│ │ ├── enumvalues_2.html
│ │ ├── enumvalues_2.js
│ │ ├── enumvalues_3.html
│ │ ├── enumvalues_3.js
│ │ ├── enumvalues_4.html
│ │ ├── enumvalues_4.js
│ │ ├── enumvalues_5.html
│ │ ├── enumvalues_5.js
│ │ ├── enumvalues_6.html
│ │ ├── enumvalues_6.js
│ │ ├── enumvalues_7.html
│ │ ├── enumvalues_7.js
│ │ ├── enumvalues_8.js
│ │ ├── enumvalues_9.js
│ │ ├── enumvalues_a.js
│ │ ├── enumvalues_b.js
│ │ ├── enumvalues_c.js
│ │ ├── enumvalues_d.js
│ │ ├── events_0.html
│ │ ├── events_0.js
│ │ ├── events_1.html
│ │ ├── events_1.js
│ │ ├── events_2.html
│ │ ├── events_2.js
│ │ ├── files_0.html
│ │ ├── files_0.js
│ │ ├── files_1.html
│ │ ├── files_1.js
│ │ ├── files_2.html
│ │ ├── files_2.js
│ │ ├── files_3.html
│ │ ├── files_3.js
│ │ ├── files_4.html
│ │ ├── files_4.js
│ │ ├── files_5.html
│ │ ├── files_5.js
│ │ ├── files_6.html
│ │ ├── files_6.js
│ │ ├── files_7.html
│ │ ├── files_7.js
│ │ ├── files_8.html
│ │ ├── files_8.js
│ │ ├── files_9.html
│ │ ├── files_9.js
│ │ ├── files_a.html
│ │ ├── files_a.js
│ │ ├── files_b.html
│ │ ├── files_b.js
│ │ ├── files_c.html
│ │ ├── files_c.js
│ │ ├── files_d.html
│ │ ├── files_d.js
│ │ ├── files_e.js
│ │ ├── files_f.js
│ │ ├── functions_0.html
│ │ ├── functions_0.js
│ │ ├── functions_1.html
│ │ ├── functions_1.js
│ │ ├── functions_10.html
│ │ ├── functions_10.js
│ │ ├── functions_11.html
│ │ ├── functions_11.js
│ │ ├── functions_12.html
│ │ ├── functions_12.js
│ │ ├── functions_13.html
│ │ ├── functions_13.js
│ │ ├── functions_2.html
│ │ ├── functions_2.js
│ │ ├── functions_3.html
│ │ ├── functions_3.js
│ │ ├── functions_4.html
│ │ ├── functions_4.js
│ │ ├── functions_5.html
│ │ ├── functions_5.js
│ │ ├── functions_6.html
│ │ ├── functions_6.js
│ │ ├── functions_7.html
│ │ ├── functions_7.js
│ │ ├── functions_8.html
│ │ ├── functions_8.js
│ │ ├── functions_9.html
│ │ ├── functions_9.js
│ │ ├── functions_a.html
│ │ ├── functions_a.js
│ │ ├── functions_b.html
│ │ ├── functions_b.js
│ │ ├── functions_c.html
│ │ ├── functions_c.js
│ │ ├── functions_d.html
│ │ ├── functions_d.js
│ │ ├── functions_e.html
│ │ ├── functions_e.js
│ │ ├── functions_f.html
│ │ ├── functions_f.js
│ │ ├── namespaces_0.html
│ │ ├── namespaces_0.js
│ │ ├── namespaces_1.js
│ │ ├── nomatches.html
│ │ ├── pages_0.html
│ │ ├── pages_0.js
│ │ ├── pages_1.html
│ │ ├── pages_1.js
│ │ ├── pages_2.js
│ │ ├── properties_0.html
│ │ ├── properties_0.js
│ │ ├── properties_1.html
│ │ ├── properties_1.js
│ │ ├── properties_10.html
│ │ ├── properties_10.js
│ │ ├── properties_11.html
│ │ ├── properties_11.js
│ │ ├── properties_12.html
│ │ ├── properties_12.js
│ │ ├── properties_13.html
│ │ ├── properties_13.js
│ │ ├── properties_14.html
│ │ ├── properties_14.js
│ │ ├── properties_15.html
│ │ ├── properties_15.js
│ │ ├── properties_2.html
│ │ ├── properties_2.js
│ │ ├── properties_3.html
│ │ ├── properties_3.js
│ │ ├── properties_4.html
│ │ ├── properties_4.js
│ │ ├── properties_5.html
│ │ ├── properties_5.js
│ │ ├── properties_6.html
│ │ ├── properties_6.js
│ │ ├── properties_7.html
│ │ ├── properties_7.js
│ │ ├── properties_8.html
│ │ ├── properties_8.js
│ │ ├── properties_9.html
│ │ ├── properties_9.js
│ │ ├── properties_a.html
│ │ ├── properties_a.js
│ │ ├── properties_b.html
│ │ ├── properties_b.js
│ │ ├── properties_c.html
│ │ ├── properties_c.js
│ │ ├── properties_d.html
│ │ ├── properties_d.js
│ │ ├── properties_e.html
│ │ ├── properties_e.js
│ │ ├── properties_f.html
│ │ ├── properties_f.js
│ │ ├── search.css
│ │ ├── search.js
│ │ ├── searchdata.js
│ │ ├── variables_0.html
│ │ ├── variables_0.js
│ │ ├── variables_1.html
│ │ └── variables_1.js
│ └── tabs.css
├── index.html
└── latex/
├── Makefile
├── annotated.tex
├── class_nakama_1_1_api_response_exception.eps
├── class_nakama_1_1_api_response_exception.tex
├── class_nakama_1_1_client.eps
├── class_nakama_1_1_client.tex
├── class_nakama_1_1_console_1_1_api_response_exception.eps
├── class_nakama_1_1_console_1_1_api_response_exception.tex
├── class_nakama_1_1_http_request_adapter.eps
├── class_nakama_1_1_http_request_adapter.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_http_helper.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options.tex
├── class_nakama_1_1_retry.tex
├── class_nakama_1_1_retry_configuration.tex
├── class_nakama_1_1_session.eps
├── class_nakama_1_1_session.tex
├── class_nakama_1_1_socket.eps
├── class_nakama_1_1_socket.tex
├── class_nakama_1_1_storage_object_id.eps
├── class_nakama_1_1_storage_object_id.tex
├── class_nakama_1_1_tests_1_1_api_1_1_authenticate_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_group_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_http_error_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test.eps
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test.eps
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_link_unlink_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_rpc_test.tex
├── class_nakama_1_1_tests_1_1_awaited_socket_task_test.eps
├── class_nakama_1_1_tests_1_1_awaited_socket_task_test.tex
├── class_nakama_1_1_tests_1_1_cancel_test.tex
├── class_nakama_1_1_tests_1_1_retry_test.tex
├── class_nakama_1_1_tests_1_1_session_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_party_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_user_status_test.tex
├── class_nakama_1_1_tests_1_1_stdout_logger.eps
├── class_nakama_1_1_tests_1_1_stdout_logger.tex
├── class_nakama_1_1_tests_1_1_tiny_json_parser_test.tex
├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.eps
├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.tex
├── class_nakama_1_1_web_socket_adapter.eps
├── class_nakama_1_1_web_socket_adapter.tex
├── class_nakama_1_1_web_socket_stdlib_adapter.eps
├── class_nakama_1_1_web_socket_stdlib_adapter.tex
├── class_nakama_1_1_write_storage_object.eps
├── class_nakama_1_1_write_storage_object.tex
├── class_satori_1_1_api_response_exception.eps
├── class_satori_1_1_api_response_exception.tex
├── class_satori_1_1_client.eps
├── class_satori_1_1_client.tex
├── class_satori_1_1_event.tex
├── class_satori_1_1_http_request_adapter.eps
├── class_satori_1_1_http_request_adapter.tex
├── class_satori_1_1_session.eps
├── class_satori_1_1_session.tex
├── class_satori_1_1_tests_1_1_client_test.tex
├── doxygen.sty
├── hierarchy.tex
├── index.tex
├── interface_nakama_1_1_console_1_1_i_api_account_device.tex
├── interface_nakama_1_1_console_1_1_i_api_channel_message.tex
├── interface_nakama_1_1_console_1_1_i_api_friend.tex
├── interface_nakama_1_1_console_1_1_i_api_friend_list.tex
├── interface_nakama_1_1_console_1_1_i_api_group.tex
├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record.tex
├── interface_nakama_1_1_console_1_1_i_api_notification.tex
├── interface_nakama_1_1_console_1_1_i_api_storage_object.tex
├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack.tex
├── interface_nakama_1_1_console_1_1_i_api_user.tex
├── interface_nakama_1_1_console_1_1_i_api_user_group_list.tex
├── interface_nakama_1_1_console_1_1_i_config_warning.tex
├── interface_nakama_1_1_console_1_1_i_console_account_export.tex
├── interface_nakama_1_1_console_1_1_i_console_authenticate_request.tex
├── interface_nakama_1_1_console_1_1_i_console_config.tex
├── interface_nakama_1_1_console_1_1_i_console_console_session.tex
├── interface_nakama_1_1_console_1_1_i_console_status_list.tex
├── interface_nakama_1_1_console_1_1_i_console_storage_list.tex
├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request.tex
├── interface_nakama_1_1_console_1_1_i_console_user_list.tex
├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger.tex
├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list.tex
├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request.tex
├── interface_nakama_1_1_console_1_1_i_nakamaapi_account.tex
├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account.tex
├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request.tex
├── interface_nakama_1_1_console_1_1_i_protobuf_any.tex
├── interface_nakama_1_1_console_1_1_i_runtime_error.tex
├── interface_nakama_1_1_console_1_1_i_status_list_status.tex
├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group.tex
├── interface_nakama_1_1_i_api_account.tex
├── interface_nakama_1_1_i_api_account_apple.tex
├── interface_nakama_1_1_i_api_account_custom.tex
├── interface_nakama_1_1_i_api_account_device.tex
├── interface_nakama_1_1_i_api_account_email.tex
├── interface_nakama_1_1_i_api_account_facebook.tex
├── interface_nakama_1_1_i_api_account_facebook_instant_game.tex
├── interface_nakama_1_1_i_api_account_game_center.tex
├── interface_nakama_1_1_i_api_account_google.tex
├── interface_nakama_1_1_i_api_account_steam.tex
├── interface_nakama_1_1_i_api_channel_message.tex
├── interface_nakama_1_1_i_api_channel_message_list.tex
├── interface_nakama_1_1_i_api_create_group_request.tex
├── interface_nakama_1_1_i_api_delete_storage_object_id.eps
├── interface_nakama_1_1_i_api_delete_storage_object_id.tex
├── interface_nakama_1_1_i_api_delete_storage_objects_request.tex
├── interface_nakama_1_1_i_api_event.tex
├── interface_nakama_1_1_i_api_friend.tex
├── interface_nakama_1_1_i_api_friend_list.tex
├── interface_nakama_1_1_i_api_group.tex
├── interface_nakama_1_1_i_api_group_list.tex
├── interface_nakama_1_1_i_api_group_user_list.tex
├── interface_nakama_1_1_i_api_leaderboard_record.tex
├── interface_nakama_1_1_i_api_leaderboard_record_list.tex
├── interface_nakama_1_1_i_api_link_steam_request.tex
├── interface_nakama_1_1_i_api_list_subscriptions_request.tex
├── interface_nakama_1_1_i_api_match.tex
├── interface_nakama_1_1_i_api_match_list.tex
├── interface_nakama_1_1_i_api_notification.tex
├── interface_nakama_1_1_i_api_notification_list.tex
├── interface_nakama_1_1_i_api_read_storage_object_id.eps
├── interface_nakama_1_1_i_api_read_storage_object_id.tex
├── interface_nakama_1_1_i_api_read_storage_objects_request.tex
├── interface_nakama_1_1_i_api_rpc.tex
├── interface_nakama_1_1_i_api_session.tex
├── interface_nakama_1_1_i_api_session_logout_request.tex
├── interface_nakama_1_1_i_api_session_refresh_request.tex
├── interface_nakama_1_1_i_api_storage_object.tex
├── interface_nakama_1_1_i_api_storage_object_ack.tex
├── interface_nakama_1_1_i_api_storage_object_acks.tex
├── interface_nakama_1_1_i_api_storage_object_list.tex
├── interface_nakama_1_1_i_api_storage_objects.tex
├── interface_nakama_1_1_i_api_subscription_list.tex
├── interface_nakama_1_1_i_api_tournament.tex
├── interface_nakama_1_1_i_api_tournament_list.tex
├── interface_nakama_1_1_i_api_tournament_record_list.tex
├── interface_nakama_1_1_i_api_update_account_request.tex
├── interface_nakama_1_1_i_api_update_group_request.tex
├── interface_nakama_1_1_i_api_user.tex
├── interface_nakama_1_1_i_api_user_group_list.tex
├── interface_nakama_1_1_i_api_users.tex
├── interface_nakama_1_1_i_api_validate_purchase_apple_request.tex
├── interface_nakama_1_1_i_api_validate_purchase_google_request.tex
├── interface_nakama_1_1_i_api_validate_purchase_huawei_request.tex
├── interface_nakama_1_1_i_api_validate_purchase_response.tex
├── interface_nakama_1_1_i_api_validate_subscription_apple_request.tex
├── interface_nakama_1_1_i_api_validate_subscription_google_request.tex
├── interface_nakama_1_1_i_api_validate_subscription_response.tex
├── interface_nakama_1_1_i_api_validated_purchase.tex
├── interface_nakama_1_1_i_api_validated_subscription.tex
├── interface_nakama_1_1_i_api_write_storage_object.eps
├── interface_nakama_1_1_i_api_write_storage_object.tex
├── interface_nakama_1_1_i_api_write_storage_objects_request.tex
├── interface_nakama_1_1_i_channel.tex
├── interface_nakama_1_1_i_channel_message_ack.tex
├── interface_nakama_1_1_i_channel_presence_event.tex
├── interface_nakama_1_1_i_client.eps
├── interface_nakama_1_1_i_client.tex
├── interface_nakama_1_1_i_group_user_list_group_user.tex
├── interface_nakama_1_1_i_http_adapter.eps
├── interface_nakama_1_1_i_http_adapter.tex
├── interface_nakama_1_1_i_logger.eps
├── interface_nakama_1_1_i_logger.tex
├── interface_nakama_1_1_i_match.tex
├── interface_nakama_1_1_i_match_presence_event.tex
├── interface_nakama_1_1_i_match_state.tex
├── interface_nakama_1_1_i_matchmaker_matched.tex
├── interface_nakama_1_1_i_matchmaker_ticket.tex
├── interface_nakama_1_1_i_matchmaker_user.tex
├── interface_nakama_1_1_i_party.tex
├── interface_nakama_1_1_i_party_close.tex
├── interface_nakama_1_1_i_party_data.tex
├── interface_nakama_1_1_i_party_join_request.tex
├── interface_nakama_1_1_i_party_leader.tex
├── interface_nakama_1_1_i_party_matchmaker_ticket.tex
├── interface_nakama_1_1_i_party_presence_event.tex
├── interface_nakama_1_1_i_protobuf_any.tex
├── interface_nakama_1_1_i_rpc_status.tex
├── interface_nakama_1_1_i_session.eps
├── interface_nakama_1_1_i_session.tex
├── interface_nakama_1_1_i_socket.eps
├── interface_nakama_1_1_i_socket.tex
├── interface_nakama_1_1_i_socket_adapter.eps
├── interface_nakama_1_1_i_socket_adapter.tex
├── interface_nakama_1_1_i_status.tex
├── interface_nakama_1_1_i_status_presence_event.tex
├── interface_nakama_1_1_i_stream.tex
├── interface_nakama_1_1_i_stream_presence_event.tex
├── interface_nakama_1_1_i_stream_state.tex
├── interface_nakama_1_1_i_user_group_list_user_group.tex
├── interface_nakama_1_1_i_user_presence.tex
├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write.tex
├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.tex
├── interface_nakama_1_1_tests_1_1_i_nested_test_object.tex
├── interface_nakama_1_1_tests_1_1_i_test_object.tex
├── interface_satori_1_1_i_api_authenticate_logout_request.tex
├── interface_satori_1_1_i_api_authenticate_refresh_request.tex
├── interface_satori_1_1_i_api_authenticate_request.tex
├── interface_satori_1_1_i_api_event.tex
├── interface_satori_1_1_i_api_event_request.tex
├── interface_satori_1_1_i_api_experiment.tex
├── interface_satori_1_1_i_api_experiment_list.tex
├── interface_satori_1_1_i_api_flag.tex
├── interface_satori_1_1_i_api_flag_list.tex
├── interface_satori_1_1_i_api_identify_request.tex
├── interface_satori_1_1_i_api_live_event.tex
├── interface_satori_1_1_i_api_live_event_list.tex
├── interface_satori_1_1_i_api_properties.tex
├── interface_satori_1_1_i_api_session.tex
├── interface_satori_1_1_i_api_update_properties_request.tex
├── interface_satori_1_1_i_client.eps
├── interface_satori_1_1_i_client.tex
├── interface_satori_1_1_i_http_adapter.eps
├── interface_satori_1_1_i_http_adapter.tex
├── interface_satori_1_1_i_logger.tex
├── interface_satori_1_1_i_protobuf_any.tex
├── interface_satori_1_1_i_rpc_status.tex
├── interface_satori_1_1_i_session.eps
├── interface_satori_1_1_i_session.tex
├── longtable_doxygen.sty
├── md__c_h_a_n_g_e_l_o_g.tex
├── md__r_e_a_d_m_e.tex
├── md__r_e_l_e_a_s_e_i_n_s_t.tex
├── md__satori__tests__r_e_a_d_m_e.tex
├── md_codegen__r_e_a_d_m_e.tex
├── namespace_nakama.tex
├── namespace_nakama_1_1_console.tex
├── namespace_nakama_1_1_ninja.tex
├── namespace_nakama_1_1_ninja_1_1_web_sockets.tex
├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions.tex
├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_internal.tex
├── namespace_nakama_1_1_tests.tex
├── namespace_nakama_1_1_tests_1_1_api.tex
├── namespace_nakama_1_1_tests_1_1_socket.tex
├── namespace_nakama_1_1_tiny_json.tex
├── namespace_satori.tex
├── namespace_satori_1_1_tests.tex
├── namespace_satori_1_1_tiny_json.tex
├── namespaces.tex
├── refman.tex
└── tabu_doxygen.sty
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# EditorConfig, options: https://editorconfig.org
root = true
[*]
end_of_line = lf
insert_final_newline = true
[*.{yml,yaml}]
charset = utf-8
indent_style = space
indent_size = 4
================================================
FILE: .github/workflows/doxygen.yml
================================================
name: Generate Doxygen Docs
on:
push:
branches:
- master
jobs:
doxygen:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: mattnotmitt/doxygen-action@1.9.4
with:
working-directory: './docs'
doxyfile-path: 'Doxyfile'
- uses: stefanzweifel/git-auto-commit-action@v4.15.1
with:
commit_message: Update Doxygen docs
================================================
FILE: .github/workflows/pr.yml
================================================
name: Checkout and Test
on:
pull_request:
jobs:
test:
# disabled
if: false
runs-on: ubuntu-latest
steps:
- name: Checkout nakama-dotnet
uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}
repository: heroiclabs/nakama-dotnet
- name: Checkout nakama-client-testrunner
uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}
repository: heroiclabs/nakama-client-testrunner
- name: Start docker containers for nakama-client-testrunner
working-directory: nakama-client-testrunner
run: ./docker-compose up -d --wait
- name: Run tests for nakama-dotnet
working-directory: nakama-dotnet
run: dotnet test Nakama.Tests
================================================
FILE: .gitignore
================================================
Nakama.sln.DotSettings
.env
.task/
# Created by https://www.gitignore.io/api/cake,linux,macos,csharp,windows,monodevelop,intellij+all,visualstudio,visualstudiocode
# Edit at https://www.gitignore.io/?templates=cake,linux,macos,csharp,windows,monodevelop,intellij+all,visualstudio,visualstudiocode
### Cake ###
tools/*
!tools/packages.config
### Csharp ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# JetBrains templates
**___jb_tmp___
### Intellij+all Patch ###
# Ignores the whole .idea folder and all .iml files
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
.idea/
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
# Sonarlint plugin
.idea/sonarlint
### Linux ###
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### MonoDevelop ###
#User Specific
*.usertasks
#Mono Project Files
*.resources
test-results/
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
### Windows ###
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
### VisualStudio ###
# User-specific files
# User-specific files (MonoDevelop/Xamarin Studio)
# Mono auto generated files
# Build results
# Visual Studio 2015/2017 cache/options directory
# Uncomment if you have tasks that create the project's static files in wwwroot
# Visual Studio 2017 auto generated files
# MSTest test Results
# NUNIT
# Build Results of an ATL Project
# Benchmark Results
# .NET Core
# StyleCop
# Files built by Visual Studio
# Chutzpah Test files
# Visual C++ cache files
# Visual Studio profiler
# Visual Studio Trace Files
# TFS 2012 Local Workspace
# Guidance Automation Toolkit
# ReSharper is a .NET coding add-in
# JustCode is a .NET coding add-in
# TeamCity is a build add-in
# DotCover is a Code Coverage Tool
# AxoCover is a Code Coverage Tool
# Visual Studio code coverage results
# NCrunch
# MightyMoose
# Web workbench (sass)
# Installshield output folder
# DocProject is a documentation generator add-in
# Click-Once directory
# Publish Web Output
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
# NuGet Packages
# The packages folder can be ignored because of Package Restore
# except build/, which is used as an MSBuild target.
# Uncomment if necessary however generally it will be regenerated when needed
# NuGet v3's project.json files produces more ignorable files
# Microsoft Azure Build Output
# Microsoft Azure Emulator
# Windows Store app package directories and files
# Visual Studio cache files
# files ending in .cache can be ignored
# but keep track of directories ending in .cache
# Others
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
# RIA/Silverlight projects
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
# SQL Server files
# Business Intelligence projects
# Microsoft Fakes
# GhostDoc plugin setting file
# Node.js Tools for Visual Studio
# Visual Studio 6 build log
# Visual Studio 6 workspace options file
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
# Visual Studio LightSwitch build output
# Paket dependency manager
# FAKE - F# Make
# CodeRush personal settings
# Python Tools for Visual Studio (PTVS)
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
# Telerik's JustMock configuration file
# BizTalk build output
# OpenCover UI analysis results
# Azure Stream Analytics local run output
# MSBuild Binary and Structured Log
# NVidia Nsight GPU debugger configuration file
# MFractors (Xamarin productivity tool) working folder
# Local History for Visual Studio
# BeatPulse healthcheck temp database
# Backup folder for Package Reference Convert tool in Visual Studio 2017
# End of https://www.gitignore.io/api/cake,linux,macos,csharp,windows,monodevelop,intellij+all,visualstudio,visualstudiocode
================================================
FILE: CHANGELOG.md
================================================
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [3.21.2] - 2026-02-13
### Changed
- Nakama+Satori: Improve how HTTP requests are logged in the request adapter.
### Fixed
- Satori: Fix argument order to client "GetFlagOverrides" function.
- Nakama+Satori: Fix proto dependency resolver within build task.
## [3.21.1] - 2025-12-21
### Fixed
- Embed README into Nuget package distribution with correct file path.
- Satori: Use correct argument order with GetFlags after code generator changes.
## [3.21.0] - 2025-12-07
### Added
- Satori: Add phase name and phase variant info to Experiment return types.
- Satori: Add message IDs as optional filter input when Messages are listed.
### Changed
- Nakama: Suppress WebSocket exception race condition on graceful socket closure with Unity/Mono runtime.
- Nakama+Satori: Update various Nuget dependencies used in Test profile.
### Fixed
- Nakama: Work around issue in Unity IL2CPP with broader use of Preserve annotation on stream types.
## [3.20.0] - 2025-10-01
### Added
- Nakama: New "ConsoleClient" functions to make HTTP requests to the Nakama Console.
### Fixed
- Satori: Avoid recursive calls to GetFlags overload functions.
## [3.19.0] - 2025-09-29
### Added
- Satori: Enable logger to be passed into the "HttpRequestAdapter."
- Satori: Update client with latest "JoinLiveEventAsync" feature.
### Changed
- Use [Task](https://taskfile.dev/) as the task runner for codegen, build, and publish commands.
- Pin the Protobuf plugins used to generate the Swagger spec used by the codegen tool.
## [3.18.0] - 2025-09-01
### Changed
- Nakama: If the server sends a close frame control message, gracefully respond with close output from the socket.
- Satori: Make "Update" method public in Satori "Session" type.
- Nakama+Satori: Expose "TimeoutException" when CTS timeout occurs within "HttpRequestAdapter."
## [3.17.0] - 2025-07-16
### Added
- Nakama: New Realtime Parties search feature which allows open parties to be discovered by users.
### Changed
- Nakama+Satori: TinyJson will now encode any "IDictionary<,>" type.
### Fixed
- Nakama: "ListStorageObjectsAsync" can use a user ID as input to fetch public storage objects for that user. Thanks @chrisanicolaou.
- Nakama+Satori: Fix how issue at time is decoded from Session token.
## [3.16.0] - 2025-02-13
### Added
- Satori: Update the Client type with the newest Satori API. See [release notes](https://heroiclabs.com/docs/satori/concepts/introduction/release-notes/).
### Changed
- Nakama+Satori: Embed version information based on Git describe into builds.
### Fixed
- Nakama+Satori: Use formatted arguments with all logger lines in request adapters.
- Satori: Use session token as jitter seed for randomized backoff with retries.
- Nakama: "ISession.CreateTime" now accurately represents Unix time in seconds since the "ISession" object was created.
## [3.15.0] - 2025-01-28
### Added
- Satori: Add retry attempts to "Client" type.
### Changed
- Nakama: Improve how cancellation is handled in HTTP requests.
- Satori: Improve how cancellation is handled in HTTP requests.
- Satori: Timeouts set in "Client" are now propagated to the underlying "ApiClient" type.
### Fixed
- GitHub Pages documentation no longer uses Jekyll transform.
## [3.14.0] - 2024-10-20
### Added
- Satori: New "IClient" event called "ReceivedSessionUpdated" when session expires and is refreshed.
### Changed
- Satori: The new session returned by "IdentifyAsync" is merged into the input "Session" type.
## [3.13.0] - 2024-07-10
### Added
- Satori: Added "ImageUrl" and "Title" to "IApiMessage".
## [3.12.1] - 2024-05-30
### Fixed
- Nakama: Fixed an issue where notifications from other users could appear as if they were sent by the recipient user.
- Nakama: Fixed a potential "NullReferenceException" that could occur when passing a "null" username to "IClient.UpdateAccountAsync".
## [3.12.0] - 2024-04-08
### Added
- Satori: Added "IApiLiveEvent.Id" for accessing live event identifiers.
- Satori: Added support for new Satori Messages API: "IClient.GetMessageListAsync", "IClient.UpdateMessageAsync" and "IClient.DeleteMessageAsync".
## [3.11.0] - 2024-03-08
### Added
- Nakama: New "IClient" event called "ReceivedSessionUpdated" when session expires and is refreshed.
- Nakama: New "Session.Update" method to allow for in-place updates to the session object.
### Changed
- Nakama: "IsConnected" and "IsConnecting" will now read directly from the underlying .NET socket status. This will allow application code to more quickly and easily detect connectivity loss arising from a lack of internet access.
- Nakama: Default socket adapter changed from "WebSocketAdapter" to "WebSocketStdlibAdapter". This was done to utilize the native .NET Websocket library for improved stability and maintenance.
### Fixed
- Nakama: Trying to connect a socket that is already connecting now results in a no-op instead of an error.
## [3.10.0] - 2023-11-21
### Changed
- Nakama: Mark socket as connected before event handler is called.
- Nakama: Limited scope of retry logic to very specific 500-level codes from the server.
### Added
- Nakama: Rank count is now returned with tournament record listings.
- Nakama: Added ability to delete tournament records with "DeleteTournamentRecordAsync".
- Nakama: Hostnames passed to the client now preserve their hardcoded paths.
- Nakama: Create and update times are now returned with notifications.
- Nakama: Added Facebook Instant Games purchase validation.
## [3.9.0]
### Added
- Satori: Added "recompute" option to "UpdatePropertiesAsync" which allows audiences to be recalculated on property update.
### Changed
- Satori: Decreased size of JSON payloads.
### Fixed
- Satori: "DeleteIdentityAsync" no longer accepts an explicit ID.
## [3.8.0]
### Added
- Nakama: Added "Authoritative" flag to tournaments returned from the server.
- Nakama: Added "RefundTime" and "UserId" to purchases and subscriptions returned from the server.
- Nakama: Added raw subscription provider information.
- Nakama: Added "DeleteAccountAsync" for deleting user accounts.
- Satori: Added "DeleteIdentityAsync" for deleting user identities.
### Changed
- Nakama: Used "session.Username" wherever outdated state might be returned.
### Fixed
- Nakama: Fixed issue where outgoing payloads could include unnecessary JSON.
## [3.7.0]
### Added
- Nakama: Added a "UpdatePresences" utility to "IMatch" and "IParty". Use this method to maintain the presences in your matches and parties
when an "IMatchPresenceEvent" or "IPartyPresenceEvent" is dispatched.
- Satori: Added optional default and custom properties that can be attached to authentication requests.
### Changed
- Satori: "GetFlagDefault" and "GetFlagsDefault" now use the "apiKey" passed to the client constructor rather than accepting it as a unique parameter.
## [3.6.0]
### Added
- Satori: Adds the Satori .NET SDK. Satori is our liveops server for game studios. Please read more about it on the Heroic Labs website.
- Nakama: Adds support for calling RPCs with a HTTP key via POST when a payload is provided.
- Nakama: Expose the "Logger" object on "IClient".
- Nakama: Adds support for POST RPC requests when using HTTP key with a payload
### Fixed
- Nakama: Prevent race condition when "Close" is called while receive loop has an incomplete read buffer.
- Nakama: Fixed an issue where 500 errors could cause parsing issues on the client.
- Nakama: Added ability to specify "path" parameter to client urls.
### Changed
- Nakama: Fixed an issue where our websocket would throw an exception on "CloseAsync()" in certain situations.
## [3.5.0] - 2022-09-06
### Added
- Ability to "persist" Apple, Huawei, and Google purchase receipts in the Nakama database. This is set to "true" by default in order to allow the server to detect replay attacks.
- Added a "SeenBefore" property to "IApiValidatedPurchase".
- Added "ListSubscriptionsAsync" which returns a list of the user's subscriptions.
- Added "ValidateSubscriptionAppleAsync" which returns details about a user's Apple subscription.
- Added "ValidateSubscriptionGoogleAsync" which returns details about a user's Google subscription.
- Added "GetSubscriptionAsync" which returns a subscription for the provided product id.
- Added support for "countMultiple" in "AddMatchmakerAsync" and "AddMatchmakerPartyAsync".
### Changed
- "ValidatedPurchaseEnvironment" has been renamed to "ApiStoreEnvironment".
- "ValidatedPurchaseStore" has been renamed to "ApiStoreProvider".
- Removed obsolete client methods that accept a "CancellationTokenSource". These have been replaced in favor of methods that accept a "CancellationToken" that were added in v3.3.
### Fixed
- Fixed an issue with Socket Closed event taking a significant length of time or not firing at all when internet connection is lost.
- Fixed an issue with "SocketClosed" event taking a significant length of time or not firing at all when internet connection is lost.
- Fixed an issue that would occur when sending messages over the socket from multiple threads.
- Fixed automatic retry seeding to be random across devices.
- Fixed an issue when parsing unquoted numbers as strings in TinyJson.
## [3.4.0] - 2022-04-28
### Added
- Allow max message size limit with socket messages to be overridden in the adapter.
- Relayed multiplayer matches can now be created with a custom name (i.e. room name).
### Fixed
- Fix background read loop to update 'IsConnecting' and 'IsConnected' when close is detected.
## [3.3.0] - 2022-01-24
### Added
- Add overload methods in Client which take a CancellationToken. Thanks @gamecentric.
- Add WebSocketStdlibAdapter allows the codebase to be used in WASM and Blazor projects. Thanks @mattkanwisher.
### Changed
- Use DualMode in TcpClient to handle NAT64 overlay networks (some mobile carriers).
- Refactor the socket adapter design to use Tasks (previously avoided for Unity WebGL compat.).
- Socket messages which exceed the internal buffer size now generate an "InternalBufferOverflowException" type.
- A socket connect made on an already connected socket will no longer raise an exception.
- Propagate up the "WebSocketException" type thrown on socket messages sent over a disconnected socket.
- Update bundled "Ninja.WebSockets" library to commit 0b698a733f0e8711da7a5854154fe7d8a01fbd06.
### Fixed
- Expose base exception if retry handler fails.
## [3.2.0] - 2021-10-11
### Added
- Added additional group listing filters.
- Added ability to overwrite leaderboard/tournament ranking operators from the client.
### Fixed
- Fixed url-safe encoding of query params that were passed to the client as arrays of strings.
## [3.1.1] - 2021-08-19
### Changed
- Removed "autoRefreshSession" from overloaded "Client" constructors. This can still be customized with the base "Client" constructor. This is a workaround for an internal compiler error in Unity's WebGL toolchain.
## [3.1.0] - 2021-08-11
### Added
- Added ability for user to retry requests if they fail due to a transient network error.
- Added ability for user to cancel requests that are in-flight.
## [3.0.0] - 2021-07-14
### Added
- The language tag for the user can be configured with the socket on connect.
### Changed
- An "IPartyMatchmakerTicket" is now received by the party leader when they add their party to the matchmaker via "AddMatchmakerPartyAsync".
- Renamed "PromotePartyMember" to "PromotePartyMemberAsync".
## [2.9.3] - 2021-06-17
### Fixed
- Fixed issue where refreshing a session with metadata threw an exception due to the key already existing.
## [2.9.2] - 2021-05-21
### Fixed
- Fixed issue where "IUserPresence" objects were not being deserialized properly by the client as part of the "IParty" object.
### Changed
- AddMatchmakerPartyAsync now returns an IPartyMatchmakerTicket.
- Renamed PromotePartyMember to PromotePartyMemberAsync.
## [2.9.1] - 2021-05-19
### Added
- The "Socket.ReceivedParty" event can now be subscribed to in order to listen for acceptance events from the leader of a closed party.
## [2.9.0] - 2021-05-15
### Added
- A session can be refreshed on demand with "SessionRefreshAsync" method.
- Session and/or refresh tokens can now be disabled with a client logout.
- The client now supports session auto-refresh using refresh tokens. This is enabled by default.
- New socket RPC and MatchSend methods using ArraySegment to allow developers to manage memory re-use.
- Add IAP validation APIs for purchase receipts with Apple App Store, Google Play Store, and Huawei AppGallery.
- Add Realtime Parties feature.
### Changed
- Use lock object with socket operations instead of ConcurrentDictionary as a workaround for a Unity engine WebGL regression.
- Avoid use of extension methods as a workaround for a Unity engine WebGL regression.
### Fixed
- Parse HTTP responses defensively in case of bad load balancer configurations.
## [2.8.0] - 2020-02-19
### Changed
- Listing tournaments can now be done without providing start or end time filters.
- Can now import Steam friends after authenticating or linking to a Steam account.
## [2.7.1] - 2020-02-1
### Fixed
- HTTP Client now properly reads off timeout value.
## [2.7.0] - 2020-10-19
### Changed
- Upgrade code generator to new Swagger format.
### Fixed
- Properly pass server key to Apple auth calls.
## [2.6.0] - 2020-09-21
### Added
- Added Apple single sign-on support.
- Added Steam single sign-on support.
### Fixed
- Fixed serialization of HTTP API error messages.
### Changed
- Silenced a noisy but benign exception related to web socket connections.
## [2.5.0] - 2020-08-12
### Added
- Add parsing support for the Nakama Console API to the code generator.
- Add support for emitting custom events to the Nakama server.
- Add ban and demote API to the client.
### Changed
- Update TinyJson packaged dependency to the '01c586d' commit.
- Remove usage of "System.Diagnostic.Tracing" from the codebase. This improves compatibility with Unity engine.
- Use a Preserve annotation to mark fields which should not be code stripped at build time. This improves compatibility with Unity engine.
## [2.4.0] - 2020-05-04 :star:
### Added
- New ListStorageObjectsAsync method and marked ListStorageObjects as obsolete.
### Changed
- ListUsersStorageObjectsAsync now uses default arguments for optional inputs.
### Fixed
- Prevent InvalidOperationException caused when socket connect task is already completed.
## [2.3.1] - 2019-09-21
### Changed
- Use workaround for IPv6 bug in TcpClient with Mono runtime used with Unity engine.
### Fixed
- Add missing metadata to match join message.
- Add discrete channel identifier in all channel related messages.
## [2.3.0] - 2019-09-02
### Added
- Follow users by username for status updates.
- Decode session variables from the auth token.
- Paginate friends, groups, and user's group listings.
- Filter friends, groups, and user's group listings.
- Send session variables with authenticate requests.
- Socket messages now use a send timeout of 15 seconds to write to the buffer.
### Changed
- Increase the default socket timeout to 30 seconds.
### Fixed
- Use the connect timeout value in native socket connect attempts.
- Link the token source across socket connect and close tasks.
## [2.2.2] - 2019-07-02
### Changed
- Don't synchronize the socket receive with the current thread context.
- Remove workaround for Mono runtime usage with newer TLS negotation.
### Fixed
- Resolve deadlock in socket dispose with synchronization context.
## [2.2.1] - 2019-06-19
### Added
- New comparison methods on some domain types.
### Changed
- When an auth token is decoded into a session but is null or empty now return null.
### Fixed
- Awaited socket callback tasks are now canceled when the socket adapter is closed and cleared.
- Awaited socket callback tasks are now canceled when the socket adapter sends while disconnected.
- Restored missing helper object with storage writes.
## [2.2.0] - 2019-06-06
### Added
- Add tournaments API.
- Add leaderboards around owner API.
- Provide more overload methods to the socket object for simpler usage.
### Changed
- Update TinyJson packaged dependency to latest version.
- Replace WebSocketListener with a new socket library.
- Flatten use of Tasks in method responses.
### Fixed
- Logger is now initialized correctly with socket debugging.
- Stream data state is correctly deserialized from socket messages.
- Fix callback ID on chat and match leave messages.
## [2.1.0] - 2018-08-17
### Added
- Detect socket message encodings.
- All authenticate methods can now pass in username and create options.
- Support gzip compress/decompress on ApiClient methods.
### Changed
- Update the code generator to handle POST/DELETE query params.
- Match listings can now pass through "null" to indicate no filters.
- ApiClient exceptions now contain HTTP status codes.
- Update lowlevel websocket driver due to performance issues on AOT targets like iOS with Unity.
- Disable request decompression by default due to Unity+Android issue.
### Fixed
- Reuse the HTTP client across all methods.
## [2.0.0] - 2018-06-18
### Added
- Initial public release.
This version starts at 2.0 to match the initial server version it supports.
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Nakama/ApiClient.gen.cs
================================================
/* Code generated by codegen/main.go. DO NOT EDIT. */
namespace Nakama
{
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using TinyJson;
/// <summary>
/// An exception generated for <c>HttpResponse</c> objects don't return a success status.
/// </summary>
public sealed class ApiResponseException : Exception
{
public long StatusCode { get; }
public int GrpcStatusCode { get; }
public ApiResponseException(long statusCode, string content, int grpcCode) : base(content)
{
StatusCode = statusCode;
GrpcStatusCode = grpcCode;
}
public ApiResponseException(string message, Exception e) : base(message, e)
{
StatusCode = -1L;
GrpcStatusCode = -1;
}
public ApiResponseException(string content) : this(-1L, content, -1)
{
}
public override string ToString()
{
return $"ApiResponseException(StatusCode={StatusCode}, Message='{Message}', GrpcStatusCode={GrpcStatusCode})";
}
}
/// <summary>
/// Update fields in a given group.
/// </summary>
public interface IApiUpdateGroupRequest
{
/// <summary>
/// Avatar URL.
/// </summary>
string AvatarUrl { get; }
/// <summary>
/// Description string.
/// </summary>
string Description { get; }
/// <summary>
/// Lang tag.
/// </summary>
string LangTag { get; }
/// <summary>
/// Name.
/// </summary>
string Name { get; }
/// <summary>
/// Open is true if anyone should be allowed to join, or false if joins must be approved by a group admin.
/// </summary>
bool Open { get; }
}
/// <inheritdoc />
internal class ApiUpdateGroupRequest : IApiUpdateGroupRequest
{
/// <inheritdoc />
[DataMember(Name="avatar_url"), Preserve]
public string AvatarUrl { get; set; }
/// <inheritdoc />
[DataMember(Name="description"), Preserve]
public string Description { get; set; }
/// <inheritdoc />
[DataMember(Name="lang_tag"), Preserve]
public string LangTag { get; set; }
/// <inheritdoc />
[DataMember(Name="name"), Preserve]
public string Name { get; set; }
/// <inheritdoc />
[DataMember(Name="open"), Preserve]
public bool Open { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "AvatarUrl: ", AvatarUrl, ", ");
output = string.Concat(output, "Description: ", Description, ", ");
output = string.Concat(output, "LangTag: ", LangTag, ", ");
output = string.Concat(output, "Name: ", Name, ", ");
output = string.Concat(output, "Open: ", Open, ", ");
return output;
}
}
/// <summary>
/// A friend of a friend.
/// </summary>
public interface IFriendsOfFriendsListFriendOfFriend
{
/// <summary>
/// The user who referred its friend.
/// </summary>
string Referrer { get; }
/// <summary>
/// User.
/// </summary>
IApiUser User { get; }
}
/// <inheritdoc />
internal class FriendsOfFriendsListFriendOfFriend : IFriendsOfFriendsListFriendOfFriend
{
/// <inheritdoc />
[DataMember(Name="referrer"), Preserve]
public string Referrer { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IApiUser User => _user;
[DataMember(Name="user"), Preserve]
public ApiUser _user { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Referrer: ", Referrer, ", ");
output = string.Concat(output, "User: ", User, ", ");
return output;
}
}
/// <summary>
/// A single user-role pair.
/// </summary>
public interface IGroupUserListGroupUser
{
/// <summary>
/// Their relationship to the group.
/// </summary>
int State { get; }
/// <summary>
/// User.
/// </summary>
IApiUser User { get; }
}
/// <inheritdoc />
internal class GroupUserListGroupUser : IGroupUserListGroupUser
{
/// <inheritdoc />
[DataMember(Name="state"), Preserve]
public int State { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IApiUser User => _user;
[DataMember(Name="user"), Preserve]
public ApiUser _user { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "State: ", State, ", ");
output = string.Concat(output, "User: ", User, ", ");
return output;
}
}
/// <summary>
/// A single group-role pair.
/// </summary>
public interface IUserGroupListUserGroup
{
/// <summary>
/// Group.
/// </summary>
IApiGroup Group { get; }
/// <summary>
/// The user's relationship to the group.
/// </summary>
int State { get; }
}
/// <inheritdoc />
internal class UserGroupListUserGroup : IUserGroupListUserGroup
{
/// <inheritdoc />
[IgnoreDataMember]
public IApiGroup Group => _group;
[DataMember(Name="group"), Preserve]
public ApiGroup _group { get; set; }
/// <inheritdoc />
[DataMember(Name="state"), Preserve]
public int State { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Group: ", Group, ", ");
output = string.Concat(output, "State: ", State, ", ");
return output;
}
}
/// <summary>
/// Record values to write.
/// </summary>
public interface IWriteLeaderboardRecordRequestLeaderboardRecordWrite
{
/// <summary>
/// Optional record metadata.
/// </summary>
string Metadata { get; }
/// <summary>
/// Operator override.
/// </summary>
ApiOperator Operator { get; }
/// <summary>
/// The score value to submit.
/// </summary>
string Score { get; }
/// <summary>
/// An optional secondary value.
/// </summary>
string Subscore { get; }
}
/// <inheritdoc />
internal class WriteLeaderboardRecordRequestLeaderboardRecordWrite : IWriteLeaderboardRecordRequestLeaderboardRecordWrite
{
/// <inheritdoc />
[DataMember(Name="metadata"), Preserve]
public string Metadata { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public ApiOperator Operator => _operator;
[DataMember(Name="operator"), Preserve]
public ApiOperator _operator { get; set; }
/// <inheritdoc />
[DataMember(Name="score"), Preserve]
public string Score { get; set; }
/// <inheritdoc />
[DataMember(Name="subscore"), Preserve]
public string Subscore { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Metadata: ", Metadata, ", ");
output = string.Concat(output, "Operator: ", Operator, ", ");
output = string.Concat(output, "Score: ", Score, ", ");
output = string.Concat(output, "Subscore: ", Subscore, ", ");
return output;
}
}
/// <summary>
/// Record values to write.
/// </summary>
public interface IWriteTournamentRecordRequestTournamentRecordWrite
{
/// <summary>
/// A JSON object of additional properties (optional).
/// </summary>
string Metadata { get; }
/// <summary>
/// Operator override.
/// </summary>
ApiOperator Operator { get; }
/// <summary>
/// The score value to submit.
/// </summary>
string Score { get; }
/// <summary>
/// An optional secondary value.
/// </summary>
string Subscore { get; }
}
/// <inheritdoc />
internal class WriteTournamentRecordRequestTournamentRecordWrite : IWriteTournamentRecordRequestTournamentRecordWrite
{
/// <inheritdoc />
[DataMember(Name="metadata"), Preserve]
public string Metadata { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public ApiOperator Operator => _operator;
[DataMember(Name="operator"), Preserve]
public ApiOperator _operator { get; set; }
/// <inheritdoc />
[DataMember(Name="score"), Preserve]
public string Score { get; set; }
/// <inheritdoc />
[DataMember(Name="subscore"), Preserve]
public string Subscore { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Metadata: ", Metadata, ", ");
output = string.Concat(output, "Operator: ", Operator, ", ");
output = string.Concat(output, "Score: ", Score, ", ");
output = string.Concat(output, "Subscore: ", Subscore, ", ");
return output;
}
}
/// <summary>
/// A user with additional account details. Always the current user.
/// </summary>
public interface IApiAccount
{
/// <summary>
/// The custom id in the user's account.
/// </summary>
string CustomId { get; }
/// <summary>
/// The devices which belong to the user's account.
/// </summary>
IEnumerable<IApiAccountDevice> Devices { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the user's account was disabled/banned.
/// </summary>
string DisableTime { get; }
/// <summary>
/// The email address of the user.
/// </summary>
string Email { get; }
/// <summary>
/// The user object.
/// </summary>
IApiUser User { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the user's email was verified.
/// </summary>
string VerifyTime { get; }
/// <summary>
/// The user's wallet data.
/// </summary>
string Wallet { get; }
}
/// <inheritdoc />
internal class ApiAccount : IApiAccount
{
/// <inheritdoc />
[DataMember(Name="custom_id"), Preserve]
public string CustomId { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiAccountDevice> Devices => _devices ?? new List<ApiAccountDevice>(0);
[DataMember(Name="devices"), Preserve]
public List<ApiAccountDevice> _devices { get; set; }
/// <inheritdoc />
[DataMember(Name="disable_time"), Preserve]
public string DisableTime { get; set; }
/// <inheritdoc />
[DataMember(Name="email"), Preserve]
public string Email { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IApiUser User => _user;
[DataMember(Name="user"), Preserve]
public ApiUser _user { get; set; }
/// <inheritdoc />
[DataMember(Name="verify_time"), Preserve]
public string VerifyTime { get; set; }
/// <inheritdoc />
[DataMember(Name="wallet"), Preserve]
public string Wallet { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "CustomId: ", CustomId, ", ");
output = string.Concat(output, "Devices: [", string.Join(", ", Devices), "], ");
output = string.Concat(output, "DisableTime: ", DisableTime, ", ");
output = string.Concat(output, "Email: ", Email, ", ");
output = string.Concat(output, "User: ", User, ", ");
output = string.Concat(output, "VerifyTime: ", VerifyTime, ", ");
output = string.Concat(output, "Wallet: ", Wallet, ", ");
return output;
}
}
/// <summary>
/// Send a Apple Sign In token to the server. Used with authenticate/link/unlink.
/// </summary>
public interface IApiAccountApple
{
/// <summary>
/// The ID token received from Apple to validate.
/// </summary>
string Token { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountApple : IApiAccountApple
{
/// <inheritdoc />
[DataMember(Name="token"), Preserve]
public string Token { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Token: ", Token, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send a custom ID to the server. Used with authenticate/link/unlink.
/// </summary>
public interface IApiAccountCustom
{
/// <summary>
/// A custom identifier.
/// </summary>
string Id { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountCustom : IApiAccountCustom
{
/// <inheritdoc />
[DataMember(Name="id"), Preserve]
public string Id { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Id: ", Id, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send a device to the server. Used with authenticate/link/unlink and user.
/// </summary>
public interface IApiAccountDevice
{
/// <summary>
/// A device identifier. Should be obtained by a platform-specific device API.
/// </summary>
string Id { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountDevice : IApiAccountDevice
{
/// <inheritdoc />
[DataMember(Name="id"), Preserve]
public string Id { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Id: ", Id, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send an email with password to the server. Used with authenticate/link/unlink.
/// </summary>
public interface IApiAccountEmail
{
/// <summary>
/// A valid RFC-5322 email address.
/// </summary>
string Email { get; }
/// <summary>
/// A password for the user account. Ignored with unlink operations.
/// </summary>
string Password { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountEmail : IApiAccountEmail
{
/// <inheritdoc />
[DataMember(Name="email"), Preserve]
public string Email { get; set; }
/// <inheritdoc />
[DataMember(Name="password"), Preserve]
public string Password { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Email: ", Email, ", ");
output = string.Concat(output, "Password: ", Password, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send a Facebook token to the server. Used with authenticate/link/unlink.
/// </summary>
public interface IApiAccountFacebook
{
/// <summary>
/// The OAuth token received from Facebook to access their profile API.
/// </summary>
string Token { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountFacebook : IApiAccountFacebook
{
/// <inheritdoc />
[DataMember(Name="token"), Preserve]
public string Token { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Token: ", Token, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send a Facebook Instant Game token to the server. Used with authenticate/link/unlink.
/// </summary>
public interface IApiAccountFacebookInstantGame
{
/// <summary>
/// The OAuth token received from a Facebook Instant Game that may be decoded with the Application Secret (must be available with the nakama configuration)
/// </summary>
string SignedPlayerInfo { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountFacebookInstantGame : IApiAccountFacebookInstantGame
{
/// <inheritdoc />
[DataMember(Name="signed_player_info"), Preserve]
public string SignedPlayerInfo { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "SignedPlayerInfo: ", SignedPlayerInfo, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send Apple's Game Center account credentials to the server. Used with authenticate/link/unlink. https://developer.apple.com/documentation/gamekit/gklocalplayer/1515407-generateidentityverificationsign
/// </summary>
public interface IApiAccountGameCenter
{
/// <summary>
/// Bundle ID (generated by GameCenter).
/// </summary>
string BundleId { get; }
/// <summary>
/// Player ID (generated by GameCenter).
/// </summary>
string PlayerId { get; }
/// <summary>
/// The URL for the public encryption key.
/// </summary>
string PublicKeyUrl { get; }
/// <summary>
/// A random "NSString" used to compute the hash and keep it randomized.
/// </summary>
string Salt { get; }
/// <summary>
/// The verification signature data generated.
/// </summary>
string Signature { get; }
/// <summary>
/// Time since UNIX epoch when the signature was created.
/// </summary>
string TimestampSeconds { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountGameCenter : IApiAccountGameCenter
{
/// <inheritdoc />
[DataMember(Name="bundle_id"), Preserve]
public string BundleId { get; set; }
/// <inheritdoc />
[DataMember(Name="player_id"), Preserve]
public string PlayerId { get; set; }
/// <inheritdoc />
[DataMember(Name="public_key_url"), Preserve]
public string PublicKeyUrl { get; set; }
/// <inheritdoc />
[DataMember(Name="salt"), Preserve]
public string Salt { get; set; }
/// <inheritdoc />
[DataMember(Name="signature"), Preserve]
public string Signature { get; set; }
/// <inheritdoc />
[DataMember(Name="timestamp_seconds"), Preserve]
public string TimestampSeconds { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "BundleId: ", BundleId, ", ");
output = string.Concat(output, "PlayerId: ", PlayerId, ", ");
output = string.Concat(output, "PublicKeyUrl: ", PublicKeyUrl, ", ");
output = string.Concat(output, "Salt: ", Salt, ", ");
output = string.Concat(output, "Signature: ", Signature, ", ");
output = string.Concat(output, "TimestampSeconds: ", TimestampSeconds, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send a Google token to the server. Used with authenticate/link/unlink.
/// </summary>
public interface IApiAccountGoogle
{
/// <summary>
/// The OAuth token received from Google to access their profile API.
/// </summary>
string Token { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountGoogle : IApiAccountGoogle
{
/// <inheritdoc />
[DataMember(Name="token"), Preserve]
public string Token { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Token: ", Token, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// Send a Steam token to the server. Used with authenticate/link/unlink.
/// </summary>
public interface IApiAccountSteam
{
/// <summary>
/// The account token received from Steam to access their profile API.
/// </summary>
string Token { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiAccountSteam : IApiAccountSteam
{
/// <inheritdoc />
[DataMember(Name="token"), Preserve]
public string Token { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Token: ", Token, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// A message sent on a channel.
/// </summary>
public interface IApiChannelMessage
{
/// <summary>
/// The channel this message belongs to.
/// </summary>
string ChannelId { get; }
/// <summary>
/// The code representing a message type or category.
/// </summary>
int Code { get; }
/// <summary>
/// The content payload.
/// </summary>
string Content { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the message was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// The ID of the group, or an empty string if this message was not sent through a group channel.
/// </summary>
string GroupId { get; }
/// <summary>
/// The unique ID of this message.
/// </summary>
string MessageId { get; }
/// <summary>
/// True if the message was persisted to the channel's history, false otherwise.
/// </summary>
bool Persistent { get; }
/// <summary>
/// The name of the chat room, or an empty string if this message was not sent through a chat room.
/// </summary>
string RoomName { get; }
/// <summary>
/// Message sender, usually a user ID.
/// </summary>
string SenderId { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the message was last updated.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// The ID of the first DM user, or an empty string if this message was not sent through a DM chat.
/// </summary>
string UserIdOne { get; }
/// <summary>
/// The ID of the second DM user, or an empty string if this message was not sent through a DM chat.
/// </summary>
string UserIdTwo { get; }
/// <summary>
/// The username of the message sender, if any.
/// </summary>
string Username { get; }
}
/// <inheritdoc />
internal class ApiChannelMessage : IApiChannelMessage
{
/// <inheritdoc />
[DataMember(Name="channel_id"), Preserve]
public string ChannelId { get; set; }
/// <inheritdoc />
[DataMember(Name="code"), Preserve]
public int Code { get; set; }
/// <inheritdoc />
[DataMember(Name="content"), Preserve]
public string Content { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="group_id"), Preserve]
public string GroupId { get; set; }
/// <inheritdoc />
[DataMember(Name="message_id"), Preserve]
public string MessageId { get; set; }
/// <inheritdoc />
[DataMember(Name="persistent"), Preserve]
public bool Persistent { get; set; }
/// <inheritdoc />
[DataMember(Name="room_name"), Preserve]
public string RoomName { get; set; }
/// <inheritdoc />
[DataMember(Name="sender_id"), Preserve]
public string SenderId { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="user_id_one"), Preserve]
public string UserIdOne { get; set; }
/// <inheritdoc />
[DataMember(Name="user_id_two"), Preserve]
public string UserIdTwo { get; set; }
/// <inheritdoc />
[DataMember(Name="username"), Preserve]
public string Username { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "ChannelId: ", ChannelId, ", ");
output = string.Concat(output, "Code: ", Code, ", ");
output = string.Concat(output, "Content: ", Content, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "GroupId: ", GroupId, ", ");
output = string.Concat(output, "MessageId: ", MessageId, ", ");
output = string.Concat(output, "Persistent: ", Persistent, ", ");
output = string.Concat(output, "RoomName: ", RoomName, ", ");
output = string.Concat(output, "SenderId: ", SenderId, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "UserIdOne: ", UserIdOne, ", ");
output = string.Concat(output, "UserIdTwo: ", UserIdTwo, ", ");
output = string.Concat(output, "Username: ", Username, ", ");
return output;
}
}
/// <summary>
/// A list of channel messages, usually a result of a list operation.
/// </summary>
public interface IApiChannelMessageList
{
/// <summary>
/// Cacheable cursor to list newer messages. Durable and designed to be stored, unlike next/prev cursors.
/// </summary>
string CacheableCursor { get; }
/// <summary>
/// A list of messages.
/// </summary>
IEnumerable<IApiChannelMessage> Messages { get; }
/// <summary>
/// The cursor to send when retrieving the next page, if any.
/// </summary>
string NextCursor { get; }
/// <summary>
/// The cursor to send when retrieving the previous page, if any.
/// </summary>
string PrevCursor { get; }
}
/// <inheritdoc />
internal class ApiChannelMessageList : IApiChannelMessageList
{
/// <inheritdoc />
[DataMember(Name="cacheable_cursor"), Preserve]
public string CacheableCursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiChannelMessage> Messages => _messages ?? new List<ApiChannelMessage>(0);
[DataMember(Name="messages"), Preserve]
public List<ApiChannelMessage> _messages { get; set; }
/// <inheritdoc />
[DataMember(Name="next_cursor"), Preserve]
public string NextCursor { get; set; }
/// <inheritdoc />
[DataMember(Name="prev_cursor"), Preserve]
public string PrevCursor { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "CacheableCursor: ", CacheableCursor, ", ");
output = string.Concat(output, "Messages: [", string.Join(", ", Messages), "], ");
output = string.Concat(output, "NextCursor: ", NextCursor, ", ");
output = string.Concat(output, "PrevCursor: ", PrevCursor, ", ");
return output;
}
}
/// <summary>
/// Create a group with the current user as owner.
/// </summary>
public interface IApiCreateGroupRequest
{
/// <summary>
/// A URL for an avatar image.
/// </summary>
string AvatarUrl { get; }
/// <summary>
/// A description for the group.
/// </summary>
string Description { get; }
/// <summary>
/// The language expected to be a tag which follows the BCP-47 spec.
/// </summary>
string LangTag { get; }
/// <summary>
/// Maximum number of group members.
/// </summary>
int MaxCount { get; }
/// <summary>
/// A unique name for the group.
/// </summary>
string Name { get; }
/// <summary>
/// Mark a group as open or not where only admins can accept members.
/// </summary>
bool Open { get; }
}
/// <inheritdoc />
internal class ApiCreateGroupRequest : IApiCreateGroupRequest
{
/// <inheritdoc />
[DataMember(Name="avatar_url"), Preserve]
public string AvatarUrl { get; set; }
/// <inheritdoc />
[DataMember(Name="description"), Preserve]
public string Description { get; set; }
/// <inheritdoc />
[DataMember(Name="lang_tag"), Preserve]
public string LangTag { get; set; }
/// <inheritdoc />
[DataMember(Name="max_count"), Preserve]
public int MaxCount { get; set; }
/// <inheritdoc />
[DataMember(Name="name"), Preserve]
public string Name { get; set; }
/// <inheritdoc />
[DataMember(Name="open"), Preserve]
public bool Open { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "AvatarUrl: ", AvatarUrl, ", ");
output = string.Concat(output, "Description: ", Description, ", ");
output = string.Concat(output, "LangTag: ", LangTag, ", ");
output = string.Concat(output, "MaxCount: ", MaxCount, ", ");
output = string.Concat(output, "Name: ", Name, ", ");
output = string.Concat(output, "Open: ", Open, ", ");
return output;
}
}
/// <summary>
/// Storage objects to delete.
/// </summary>
public interface IApiDeleteStorageObjectId
{
/// <summary>
/// The collection which stores the object.
/// </summary>
string Collection { get; }
/// <summary>
/// The key of the object within the collection.
/// </summary>
string Key { get; }
/// <summary>
/// The version hash of the object.
/// </summary>
string Version { get; }
}
/// <inheritdoc />
internal class ApiDeleteStorageObjectId : IApiDeleteStorageObjectId
{
/// <inheritdoc />
[DataMember(Name="collection"), Preserve]
public string Collection { get; set; }
/// <inheritdoc />
[DataMember(Name="key"), Preserve]
public string Key { get; set; }
/// <inheritdoc />
[DataMember(Name="version"), Preserve]
public string Version { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Collection: ", Collection, ", ");
output = string.Concat(output, "Key: ", Key, ", ");
output = string.Concat(output, "Version: ", Version, ", ");
return output;
}
}
/// <summary>
/// Batch delete storage objects.
/// </summary>
public interface IApiDeleteStorageObjectsRequest
{
/// <summary>
/// Batch of storage objects.
/// </summary>
IEnumerable<IApiDeleteStorageObjectId> ObjectIds { get; }
}
/// <inheritdoc />
internal class ApiDeleteStorageObjectsRequest : IApiDeleteStorageObjectsRequest
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiDeleteStorageObjectId> ObjectIds => _objectIds ?? new List<ApiDeleteStorageObjectId>(0);
[DataMember(Name="object_ids"), Preserve]
public List<ApiDeleteStorageObjectId> _objectIds { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "ObjectIds: [", string.Join(", ", ObjectIds), "], ");
return output;
}
}
/// <summary>
/// Represents an event to be passed through the server to registered event handlers.
/// </summary>
public interface IApiEvent
{
/// <summary>
/// True if the event came directly from a client call, false otherwise.
/// </summary>
bool External { get; }
/// <summary>
/// An event name, type, category, or identifier.
/// </summary>
string Name { get; }
/// <summary>
/// Arbitrary event property values.
/// </summary>
IDictionary<string, string> Properties { get; }
/// <summary>
/// The time when the event was triggered.
/// </summary>
string Timestamp { get; }
}
/// <inheritdoc />
internal class ApiEvent : IApiEvent
{
/// <inheritdoc />
[DataMember(Name="external"), Preserve]
public bool External { get; set; }
/// <inheritdoc />
[DataMember(Name="name"), Preserve]
public string Name { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Properties => _properties ?? new Dictionary<string, string>();
[DataMember(Name="properties"), Preserve]
public Dictionary<string, string> _properties { get; set; }
/// <inheritdoc />
[DataMember(Name="timestamp"), Preserve]
public string Timestamp { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "External: ", External, ", ");
output = string.Concat(output, "Name: ", Name, ", ");
var propertiesString = "";
foreach (var kvp in Properties)
{
propertiesString = string.Concat(propertiesString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Properties: [" + propertiesString + "]");
output = string.Concat(output, "Timestamp: ", Timestamp, ", ");
return output;
}
}
/// <summary>
/// A friend of a user.
/// </summary>
public interface IApiFriend
{
/// <summary>
/// Metadata.
/// </summary>
string Metadata { get; }
/// <summary>
/// The friend status. one of "Friend.State".
/// </summary>
int State { get; }
/// <summary>
/// Time of the latest relationship update.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// The user object.
/// </summary>
IApiUser User { get; }
}
/// <inheritdoc />
internal class ApiFriend : IApiFriend
{
/// <inheritdoc />
[DataMember(Name="metadata"), Preserve]
public string Metadata { get; set; }
/// <inheritdoc />
[DataMember(Name="state"), Preserve]
public int State { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IApiUser User => _user;
[DataMember(Name="user"), Preserve]
public ApiUser _user { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Metadata: ", Metadata, ", ");
output = string.Concat(output, "State: ", State, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "User: ", User, ", ");
return output;
}
}
/// <summary>
/// A collection of zero or more friends of the user.
/// </summary>
public interface IApiFriendList
{
/// <summary>
/// Cursor for the next page of results, if any.
/// </summary>
string Cursor { get; }
/// <summary>
/// The Friend objects.
/// </summary>
IEnumerable<IApiFriend> Friends { get; }
}
/// <inheritdoc />
internal class ApiFriendList : IApiFriendList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiFriend> Friends => _friends ?? new List<ApiFriend>(0);
[DataMember(Name="friends"), Preserve]
public List<ApiFriend> _friends { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "Friends: [", string.Join(", ", Friends), "], ");
return output;
}
}
/// <summary>
/// A List of friends of friends
/// </summary>
public interface IApiFriendsOfFriendsList
{
/// <summary>
/// Cursor for the next page of results, if any.
/// </summary>
string Cursor { get; }
/// <summary>
/// User friends of friends.
/// </summary>
IEnumerable<IFriendsOfFriendsListFriendOfFriend> FriendsOfFriends { get; }
}
/// <inheritdoc />
internal class ApiFriendsOfFriendsList : IApiFriendsOfFriendsList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IFriendsOfFriendsListFriendOfFriend> FriendsOfFriends => _friendsOfFriends ?? new List<FriendsOfFriendsListFriendOfFriend>(0);
[DataMember(Name="friends_of_friends"), Preserve]
public List<FriendsOfFriendsListFriendOfFriend> _friendsOfFriends { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "FriendsOfFriends: [", string.Join(", ", FriendsOfFriends), "], ");
return output;
}
}
/// <summary>
/// A group in the server.
/// </summary>
public interface IApiGroup
{
/// <summary>
/// A URL for an avatar image.
/// </summary>
string AvatarUrl { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the group was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// The id of the user who created the group.
/// </summary>
string CreatorId { get; }
/// <summary>
/// A description for the group.
/// </summary>
string Description { get; }
/// <summary>
/// The current count of all members in the group.
/// </summary>
int EdgeCount { get; }
/// <summary>
/// The id of a group.
/// </summary>
string Id { get; }
/// <summary>
/// The language expected to be a tag which follows the BCP-47 spec.
/// </summary>
string LangTag { get; }
/// <summary>
/// The maximum number of members allowed.
/// </summary>
int MaxCount { get; }
/// <summary>
/// Additional information stored as a JSON object.
/// </summary>
string Metadata { get; }
/// <summary>
/// The unique name of the group.
/// </summary>
string Name { get; }
/// <summary>
/// Anyone can join open groups, otherwise only admins can accept members.
/// </summary>
bool Open { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the group was last updated.
/// </summary>
string UpdateTime { get; }
}
/// <inheritdoc />
internal class ApiGroup : IApiGroup
{
/// <inheritdoc />
[DataMember(Name="avatar_url"), Preserve]
public string AvatarUrl { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="creator_id"), Preserve]
public string CreatorId { get; set; }
/// <inheritdoc />
[DataMember(Name="description"), Preserve]
public string Description { get; set; }
/// <inheritdoc />
[DataMember(Name="edge_count"), Preserve]
public int EdgeCount { get; set; }
/// <inheritdoc />
[DataMember(Name="id"), Preserve]
public string Id { get; set; }
/// <inheritdoc />
[DataMember(Name="lang_tag"), Preserve]
public string LangTag { get; set; }
/// <inheritdoc />
[DataMember(Name="max_count"), Preserve]
public int MaxCount { get; set; }
/// <inheritdoc />
[DataMember(Name="metadata"), Preserve]
public string Metadata { get; set; }
/// <inheritdoc />
[DataMember(Name="name"), Preserve]
public string Name { get; set; }
/// <inheritdoc />
[DataMember(Name="open"), Preserve]
public bool Open { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "AvatarUrl: ", AvatarUrl, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "CreatorId: ", CreatorId, ", ");
output = string.Concat(output, "Description: ", Description, ", ");
output = string.Concat(output, "EdgeCount: ", EdgeCount, ", ");
output = string.Concat(output, "Id: ", Id, ", ");
output = string.Concat(output, "LangTag: ", LangTag, ", ");
output = string.Concat(output, "MaxCount: ", MaxCount, ", ");
output = string.Concat(output, "Metadata: ", Metadata, ", ");
output = string.Concat(output, "Name: ", Name, ", ");
output = string.Concat(output, "Open: ", Open, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
return output;
}
}
/// <summary>
/// One or more groups returned from a listing operation.
/// </summary>
public interface IApiGroupList
{
/// <summary>
/// A cursor used to get the next page.
/// </summary>
string Cursor { get; }
/// <summary>
/// One or more groups.
/// </summary>
IEnumerable<IApiGroup> Groups { get; }
}
/// <inheritdoc />
internal class ApiGroupList : IApiGroupList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiGroup> Groups => _groups ?? new List<ApiGroup>(0);
[DataMember(Name="groups"), Preserve]
public List<ApiGroup> _groups { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "Groups: [", string.Join(", ", Groups), "], ");
return output;
}
}
/// <summary>
/// A list of users belonging to a group, along with their role.
/// </summary>
public interface IApiGroupUserList
{
/// <summary>
/// Cursor for the next page of results, if any.
/// </summary>
string Cursor { get; }
/// <summary>
/// User-role pairs for a group.
/// </summary>
IEnumerable<IGroupUserListGroupUser> GroupUsers { get; }
}
/// <inheritdoc />
internal class ApiGroupUserList : IApiGroupUserList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IGroupUserListGroupUser> GroupUsers => _groupUsers ?? new List<GroupUserListGroupUser>(0);
[DataMember(Name="group_users"), Preserve]
public List<GroupUserListGroupUser> _groupUsers { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "GroupUsers: [", string.Join(", ", GroupUsers), "], ");
return output;
}
}
/// <summary>
/// Represents a complete leaderboard record with all scores and associated metadata.
/// </summary>
public interface IApiLeaderboardRecord
{
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the leaderboard record was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the leaderboard record expires.
/// </summary>
string ExpiryTime { get; }
/// <summary>
/// The ID of the leaderboard this score belongs to.
/// </summary>
string LeaderboardId { get; }
/// <summary>
/// The maximum number of score updates allowed by the owner.
/// </summary>
int MaxNumScore { get; }
/// <summary>
/// Metadata.
/// </summary>
string Metadata { get; }
/// <summary>
/// The number of submissions to this score record.
/// </summary>
int NumScore { get; }
/// <summary>
/// The ID of the score owner, usually a user or group.
/// </summary>
string OwnerId { get; }
/// <summary>
/// The rank of this record.
/// </summary>
string Rank { get; }
/// <summary>
/// The score value.
/// </summary>
string Score { get; }
/// <summary>
/// An optional subscore value.
/// </summary>
string Subscore { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the leaderboard record was updated.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// The username of the score owner, if the owner is a user.
/// </summary>
string Username { get; }
}
/// <inheritdoc />
internal class ApiLeaderboardRecord : IApiLeaderboardRecord
{
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="expiry_time"), Preserve]
public string ExpiryTime { get; set; }
/// <inheritdoc />
[DataMember(Name="leaderboard_id"), Preserve]
public string LeaderboardId { get; set; }
/// <inheritdoc />
[DataMember(Name="max_num_score"), Preserve]
public int MaxNumScore { get; set; }
/// <inheritdoc />
[DataMember(Name="metadata"), Preserve]
public string Metadata { get; set; }
/// <inheritdoc />
[DataMember(Name="num_score"), Preserve]
public int NumScore { get; set; }
/// <inheritdoc />
[DataMember(Name="owner_id"), Preserve]
public string OwnerId { get; set; }
/// <inheritdoc />
[DataMember(Name="rank"), Preserve]
public string Rank { get; set; }
/// <inheritdoc />
[DataMember(Name="score"), Preserve]
public string Score { get; set; }
/// <inheritdoc />
[DataMember(Name="subscore"), Preserve]
public string Subscore { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="username"), Preserve]
public string Username { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "ExpiryTime: ", ExpiryTime, ", ");
output = string.Concat(output, "LeaderboardId: ", LeaderboardId, ", ");
output = string.Concat(output, "MaxNumScore: ", MaxNumScore, ", ");
output = string.Concat(output, "Metadata: ", Metadata, ", ");
output = string.Concat(output, "NumScore: ", NumScore, ", ");
output = string.Concat(output, "OwnerId: ", OwnerId, ", ");
output = string.Concat(output, "Rank: ", Rank, ", ");
output = string.Concat(output, "Score: ", Score, ", ");
output = string.Concat(output, "Subscore: ", Subscore, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "Username: ", Username, ", ");
return output;
}
}
/// <summary>
/// A set of leaderboard records, may be part of a leaderboard records page or a batch of individual records.
/// </summary>
public interface IApiLeaderboardRecordList
{
/// <summary>
/// The cursor to send when retrieving the next page, if any.
/// </summary>
string NextCursor { get; }
/// <summary>
/// A batched set of leaderboard records belonging to specified owners.
/// </summary>
IEnumerable<IApiLeaderboardRecord> OwnerRecords { get; }
/// <summary>
/// The cursor to send when retrieving the previous page, if any.
/// </summary>
string PrevCursor { get; }
/// <summary>
/// The total number of ranks available.
/// </summary>
string RankCount { get; }
/// <summary>
/// A list of leaderboard records.
/// </summary>
IEnumerable<IApiLeaderboardRecord> Records { get; }
}
/// <inheritdoc />
internal class ApiLeaderboardRecordList : IApiLeaderboardRecordList
{
/// <inheritdoc />
[DataMember(Name="next_cursor"), Preserve]
public string NextCursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiLeaderboardRecord> OwnerRecords => _ownerRecords ?? new List<ApiLeaderboardRecord>(0);
[DataMember(Name="owner_records"), Preserve]
public List<ApiLeaderboardRecord> _ownerRecords { get; set; }
/// <inheritdoc />
[DataMember(Name="prev_cursor"), Preserve]
public string PrevCursor { get; set; }
/// <inheritdoc />
[DataMember(Name="rank_count"), Preserve]
public string RankCount { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiLeaderboardRecord> Records => _records ?? new List<ApiLeaderboardRecord>(0);
[DataMember(Name="records"), Preserve]
public List<ApiLeaderboardRecord> _records { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "NextCursor: ", NextCursor, ", ");
output = string.Concat(output, "OwnerRecords: [", string.Join(", ", OwnerRecords), "], ");
output = string.Concat(output, "PrevCursor: ", PrevCursor, ", ");
output = string.Concat(output, "RankCount: ", RankCount, ", ");
output = string.Concat(output, "Records: [", string.Join(", ", Records), "], ");
return output;
}
}
/// <summary>
/// Link Steam to the current user's account.
/// </summary>
public interface IApiLinkSteamRequest
{
/// <summary>
/// The Facebook account details.
/// </summary>
IApiAccountSteam Account { get; }
/// <summary>
/// Import Steam friends for the user.
/// </summary>
bool Sync { get; }
}
/// <inheritdoc />
internal class ApiLinkSteamRequest : IApiLinkSteamRequest
{
/// <inheritdoc />
[IgnoreDataMember]
public IApiAccountSteam Account => _account;
[DataMember(Name="account"), Preserve]
public ApiAccountSteam _account { get; set; }
/// <inheritdoc />
[DataMember(Name="sync"), Preserve]
public bool Sync { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Account: ", Account, ", ");
output = string.Concat(output, "Sync: ", Sync, ", ");
return output;
}
}
/// <summary>
/// List user subscriptions.
/// </summary>
public interface IApiListSubscriptionsRequest
{
/// <summary>
/// Cursor to retrieve a page of records from
/// </summary>
string Cursor { get; }
/// <summary>
/// Max number of results per page
/// </summary>
int Limit { get; }
}
/// <inheritdoc />
internal class ApiListSubscriptionsRequest : IApiListSubscriptionsRequest
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[DataMember(Name="limit"), Preserve]
public int Limit { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "Limit: ", Limit, ", ");
return output;
}
}
/// <summary>
/// Represents a realtime match.
/// </summary>
public interface IApiMatch
{
/// <summary>
/// True if it's an server-managed authoritative match, false otherwise.
/// </summary>
bool Authoritative { get; }
/// <summary>
/// Handler name
/// </summary>
string HandlerName { get; }
/// <summary>
/// Match label, if any.
/// </summary>
string Label { get; }
/// <summary>
/// The ID of the match, can be used to join.
/// </summary>
string MatchId { get; }
/// <summary>
/// Current number of users in the match.
/// </summary>
int Size { get; }
/// <summary>
/// Tick Rate
/// </summary>
int TickRate { get; }
}
/// <inheritdoc />
internal class ApiMatch : IApiMatch
{
/// <inheritdoc />
[DataMember(Name="authoritative"), Preserve]
public bool Authoritative { get; set; }
/// <inheritdoc />
[DataMember(Name="handler_name"), Preserve]
public string HandlerName { get; set; }
/// <inheritdoc />
[DataMember(Name="label"), Preserve]
public string Label { get; set; }
/// <inheritdoc />
[DataMember(Name="match_id"), Preserve]
public string MatchId { get; set; }
/// <inheritdoc />
[DataMember(Name="size"), Preserve]
public int Size { get; set; }
/// <inheritdoc />
[DataMember(Name="tick_rate"), Preserve]
public int TickRate { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Authoritative: ", Authoritative, ", ");
output = string.Concat(output, "HandlerName: ", HandlerName, ", ");
output = string.Concat(output, "Label: ", Label, ", ");
output = string.Concat(output, "MatchId: ", MatchId, ", ");
output = string.Concat(output, "Size: ", Size, ", ");
output = string.Concat(output, "TickRate: ", TickRate, ", ");
return output;
}
}
/// <summary>
/// A list of realtime matches.
/// </summary>
public interface IApiMatchList
{
/// <summary>
/// A number of matches corresponding to a list operation.
/// </summary>
IEnumerable<IApiMatch> Matches { get; }
}
/// <inheritdoc />
internal class ApiMatchList : IApiMatchList
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiMatch> Matches => _matches ?? new List<ApiMatch>(0);
[DataMember(Name="matches"), Preserve]
public List<ApiMatch> _matches { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Matches: [", string.Join(", ", Matches), "], ");
return output;
}
}
/// <summary>
/// Matchmaker ticket completion stats
/// </summary>
public interface IApiMatchmakerCompletionStats
{
/// <summary>
///
/// </summary>
string CompleteTime { get; }
/// <summary>
///
/// </summary>
string CreateTime { get; }
}
/// <inheritdoc />
internal class ApiMatchmakerCompletionStats : IApiMatchmakerCompletionStats
{
/// <inheritdoc />
[DataMember(Name="complete_time"), Preserve]
public string CompleteTime { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "CompleteTime: ", CompleteTime, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
return output;
}
}
/// <summary>
/// Matchmaker stats
/// </summary>
public interface IApiMatchmakerStats
{
/// <summary>
///
/// </summary>
IEnumerable<IApiMatchmakerCompletionStats> Completions { get; }
/// <summary>
///
/// </summary>
string OldestTicketCreateTime { get; }
/// <summary>
///
/// </summary>
int TicketCount { get; }
}
/// <inheritdoc />
internal class ApiMatchmakerStats : IApiMatchmakerStats
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiMatchmakerCompletionStats> Completions => _completions ?? new List<ApiMatchmakerCompletionStats>(0);
[DataMember(Name="completions"), Preserve]
public List<ApiMatchmakerCompletionStats> _completions { get; set; }
/// <inheritdoc />
[DataMember(Name="oldest_ticket_create_time"), Preserve]
public string OldestTicketCreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="ticket_count"), Preserve]
public int TicketCount { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Completions: [", string.Join(", ", Completions), "], ");
output = string.Concat(output, "OldestTicketCreateTime: ", OldestTicketCreateTime, ", ");
output = string.Concat(output, "TicketCount: ", TicketCount, ", ");
return output;
}
}
/// <summary>
/// A notification in the server.
/// </summary>
public interface IApiNotification
{
/// <summary>
/// Category code for this notification.
/// </summary>
int Code { get; }
/// <summary>
/// Content of the notification in JSON.
/// </summary>
string Content { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the notification was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// ID of the Notification.
/// </summary>
string Id { get; }
/// <summary>
/// True if this notification was persisted to the database.
/// </summary>
bool Persistent { get; }
/// <summary>
/// ID of the sender, if a user. Otherwise 'null'.
/// </summary>
string SenderId { get; }
/// <summary>
/// Subject of the notification.
/// </summary>
string Subject { get; }
}
/// <inheritdoc />
internal class ApiNotification : IApiNotification
{
/// <inheritdoc />
[DataMember(Name="code"), Preserve]
public int Code { get; set; }
/// <inheritdoc />
[DataMember(Name="content"), Preserve]
public string Content { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="id"), Preserve]
public string Id { get; set; }
/// <inheritdoc />
[DataMember(Name="persistent"), Preserve]
public bool Persistent { get; set; }
/// <inheritdoc />
[DataMember(Name="sender_id"), Preserve]
public string SenderId { get; set; }
/// <inheritdoc />
[DataMember(Name="subject"), Preserve]
public string Subject { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Code: ", Code, ", ");
output = string.Concat(output, "Content: ", Content, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "Id: ", Id, ", ");
output = string.Concat(output, "Persistent: ", Persistent, ", ");
output = string.Concat(output, "SenderId: ", SenderId, ", ");
output = string.Concat(output, "Subject: ", Subject, ", ");
return output;
}
}
/// <summary>
/// A collection of zero or more notifications.
/// </summary>
public interface IApiNotificationList
{
/// <summary>
/// Use this cursor to paginate notifications. Cache this to catch up to new notifications.
/// </summary>
string CacheableCursor { get; }
/// <summary>
/// Collection of notifications.
/// </summary>
IEnumerable<IApiNotification> Notifications { get; }
}
/// <inheritdoc />
internal class ApiNotificationList : IApiNotificationList
{
/// <inheritdoc />
[DataMember(Name="cacheable_cursor"), Preserve]
public string CacheableCursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiNotification> Notifications => _notifications ?? new List<ApiNotification>(0);
[DataMember(Name="notifications"), Preserve]
public List<ApiNotification> _notifications { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "CacheableCursor: ", CacheableCursor, ", ");
output = string.Concat(output, "Notifications: [", string.Join(", ", Notifications), "], ");
return output;
}
}
/// <summary>
///
/// </summary>
public enum ApiOperator
{
/// <summary>
/// Operator that can be used to override the one set in the leaderboard.
/// </summary>
NO_OVERRIDE = 0,
/// <summary>
///
/// </summary>
BEST = 1,
/// <summary>
/// - NO_OVERRIDE: Do not override the leaderboard operator.
/// </summary>
SET = 2,
/// <summary>
/// - BEST: Override the leaderboard operator with BEST.
/// </summary>
INCREMENT = 3,
/// <summary>
/// - SET: Override the leaderboard operator with SET.
/// </summary>
DECREMENT = 4,
}
/// <summary>
/// Incoming information about a party.
/// </summary>
public interface IApiParty
{
/// <summary>
/// Hidden flag.
/// </summary>
bool Hidden { get; }
/// <summary>
/// The party label, if any.
/// </summary>
string Label { get; }
/// <summary>
/// Maximum number of party members.
/// </summary>
int MaxSize { get; }
/// <summary>
/// Open flag.
/// </summary>
bool Open { get; }
/// <summary>
/// Unique party identifier.
/// </summary>
string PartyId { get; }
}
/// <inheritdoc />
internal class ApiParty : IApiParty
{
/// <inheritdoc />
[DataMember(Name="hidden"), Preserve]
public bool Hidden { get; set; }
/// <inheritdoc />
[DataMember(Name="label"), Preserve]
public string Label { get; set; }
/// <inheritdoc />
[DataMember(Name="max_size"), Preserve]
public int MaxSize { get; set; }
/// <inheritdoc />
[DataMember(Name="open"), Preserve]
public bool Open { get; set; }
/// <inheritdoc />
[DataMember(Name="party_id"), Preserve]
public string PartyId { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Hidden: ", Hidden, ", ");
output = string.Concat(output, "Label: ", Label, ", ");
output = string.Concat(output, "MaxSize: ", MaxSize, ", ");
output = string.Concat(output, "Open: ", Open, ", ");
output = string.Concat(output, "PartyId: ", PartyId, ", ");
return output;
}
}
/// <summary>
/// A list of realtime matches.
/// </summary>
public interface IApiPartyList
{
/// <summary>
/// A cursor to send when retrieving the next page, if any.
/// </summary>
string Cursor { get; }
/// <summary>
/// A number of parties corresponding to a list operation.
/// </summary>
IEnumerable<IApiParty> Parties { get; }
}
/// <inheritdoc />
internal class ApiPartyList : IApiPartyList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiParty> Parties => _parties ?? new List<ApiParty>(0);
[DataMember(Name="parties"), Preserve]
public List<ApiParty> _parties { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "Parties: [", string.Join(", ", Parties), "], ");
return output;
}
}
/// <summary>
/// Storage objects to get.
/// </summary>
public interface IApiReadStorageObjectId
{
/// <summary>
/// The collection which stores the object.
/// </summary>
string Collection { get; }
/// <summary>
/// The key of the object within the collection.
/// </summary>
string Key { get; }
/// <summary>
/// The user owner of the object.
/// </summary>
string UserId { get; }
}
/// <inheritdoc />
internal class ApiReadStorageObjectId : IApiReadStorageObjectId
{
/// <inheritdoc />
[DataMember(Name="collection"), Preserve]
public string Collection { get; set; }
/// <inheritdoc />
[DataMember(Name="key"), Preserve]
public string Key { get; set; }
/// <inheritdoc />
[DataMember(Name="user_id"), Preserve]
public string UserId { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Collection: ", Collection, ", ");
output = string.Concat(output, "Key: ", Key, ", ");
output = string.Concat(output, "UserId: ", UserId, ", ");
return output;
}
}
/// <summary>
/// Batch get storage objects.
/// </summary>
public interface IApiReadStorageObjectsRequest
{
/// <summary>
/// Batch of storage objects.
/// </summary>
IEnumerable<IApiReadStorageObjectId> ObjectIds { get; }
}
/// <inheritdoc />
internal class ApiReadStorageObjectsRequest : IApiReadStorageObjectsRequest
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiReadStorageObjectId> ObjectIds => _objectIds ?? new List<ApiReadStorageObjectId>(0);
[DataMember(Name="object_ids"), Preserve]
public List<ApiReadStorageObjectId> _objectIds { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "ObjectIds: [", string.Join(", ", ObjectIds), "], ");
return output;
}
}
/// <summary>
/// Execute an Lua function on the server.
/// </summary>
public interface IApiRpc
{
/// <summary>
/// The authentication key used when executed as a non-client HTTP request.
/// </summary>
string HttpKey { get; }
/// <summary>
/// The identifier of the function.
/// </summary>
string Id { get; }
/// <summary>
/// The payload of the function which must be a JSON object.
/// </summary>
string Payload { get; }
}
/// <inheritdoc />
internal class ApiRpc : IApiRpc
{
/// <inheritdoc />
[DataMember(Name="http_key"), Preserve]
public string HttpKey { get; set; }
/// <inheritdoc />
[DataMember(Name="id"), Preserve]
public string Id { get; set; }
/// <inheritdoc />
[DataMember(Name="payload"), Preserve]
public string Payload { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "HttpKey: ", HttpKey, ", ");
output = string.Concat(output, "Id: ", Id, ", ");
output = string.Concat(output, "Payload: ", Payload, ", ");
return output;
}
}
/// <summary>
/// A user's session used to authenticate messages.
/// </summary>
public interface IApiSession
{
/// <summary>
/// True if the corresponding account was just created, false otherwise.
/// </summary>
bool Created { get; }
/// <summary>
/// Refresh token that can be used for session token renewal.
/// </summary>
string RefreshToken { get; }
/// <summary>
/// Authentication credentials.
/// </summary>
string Token { get; }
}
/// <inheritdoc />
internal class ApiSession : IApiSession
{
/// <inheritdoc />
[DataMember(Name="created"), Preserve]
public bool Created { get; set; }
/// <inheritdoc />
[DataMember(Name="refresh_token"), Preserve]
public string RefreshToken { get; set; }
/// <inheritdoc />
[DataMember(Name="token"), Preserve]
public string Token { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Created: ", Created, ", ");
output = string.Concat(output, "RefreshToken: ", RefreshToken, ", ");
output = string.Concat(output, "Token: ", Token, ", ");
return output;
}
}
/// <summary>
/// Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user.
/// </summary>
public interface IApiSessionLogoutRequest
{
/// <summary>
/// Refresh token to invalidate.
/// </summary>
string RefreshToken { get; }
/// <summary>
/// Session token to log out.
/// </summary>
string Token { get; }
}
/// <inheritdoc />
internal class ApiSessionLogoutRequest : IApiSessionLogoutRequest
{
/// <inheritdoc />
[DataMember(Name="refresh_token"), Preserve]
public string RefreshToken { get; set; }
/// <inheritdoc />
[DataMember(Name="token"), Preserve]
public string Token { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "RefreshToken: ", RefreshToken, ", ");
output = string.Concat(output, "Token: ", Token, ", ");
return output;
}
}
/// <summary>
/// Authenticate against the server with a refresh token.
/// </summary>
public interface IApiSessionRefreshRequest
{
/// <summary>
/// Refresh token.
/// </summary>
string Token { get; }
/// <summary>
/// Extra information that will be bundled in the session token.
/// </summary>
IDictionary<string, string> Vars { get; }
}
/// <inheritdoc />
internal class ApiSessionRefreshRequest : IApiSessionRefreshRequest
{
/// <inheritdoc />
[DataMember(Name="token"), Preserve]
public string Token { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IDictionary<string, string> Vars => _vars ?? new Dictionary<string, string>();
[DataMember(Name="vars"), Preserve]
public Dictionary<string, string> _vars { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Token: ", Token, ", ");
var varsString = "";
foreach (var kvp in Vars)
{
varsString = string.Concat(varsString, "{" + kvp.Key + "=" + kvp.Value + "}");
}
output = string.Concat(output, "Vars: [" + varsString + "]");
return output;
}
}
/// <summary>
/// An object within the storage engine.
/// </summary>
public interface IApiStorageObject
{
/// <summary>
/// The collection which stores the object.
/// </summary>
string Collection { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the object was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// The key of the object within the collection.
/// </summary>
string Key { get; }
/// <summary>
/// The read access permissions for the object.
/// </summary>
int PermissionRead { get; }
/// <summary>
/// The write access permissions for the object.
/// </summary>
int PermissionWrite { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the object was last updated.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// The user owner of the object.
/// </summary>
string UserId { get; }
/// <summary>
/// The value of the object.
/// </summary>
string Value { get; }
/// <summary>
/// The version hash of the object.
/// </summary>
string Version { get; }
}
/// <inheritdoc />
internal class ApiStorageObject : IApiStorageObject
{
/// <inheritdoc />
[DataMember(Name="collection"), Preserve]
public string Collection { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="key"), Preserve]
public string Key { get; set; }
/// <inheritdoc />
[DataMember(Name="permission_read"), Preserve]
public int PermissionRead { get; set; }
/// <inheritdoc />
[DataMember(Name="permission_write"), Preserve]
public int PermissionWrite { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="user_id"), Preserve]
public string UserId { get; set; }
/// <inheritdoc />
[DataMember(Name="value"), Preserve]
public string Value { get; set; }
/// <inheritdoc />
[DataMember(Name="version"), Preserve]
public string Version { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Collection: ", Collection, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "Key: ", Key, ", ");
output = string.Concat(output, "PermissionRead: ", PermissionRead, ", ");
output = string.Concat(output, "PermissionWrite: ", PermissionWrite, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "UserId: ", UserId, ", ");
output = string.Concat(output, "Value: ", Value, ", ");
output = string.Concat(output, "Version: ", Version, ", ");
return output;
}
}
/// <summary>
/// A storage acknowledgement.
/// </summary>
public interface IApiStorageObjectAck
{
/// <summary>
/// The collection which stores the object.
/// </summary>
string Collection { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the object was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// The key of the object within the collection.
/// </summary>
string Key { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the object was last updated.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// The owner of the object.
/// </summary>
string UserId { get; }
/// <summary>
/// The version hash of the object.
/// </summary>
string Version { get; }
}
/// <inheritdoc />
internal class ApiStorageObjectAck : IApiStorageObjectAck
{
/// <inheritdoc />
[DataMember(Name="collection"), Preserve]
public string Collection { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="key"), Preserve]
public string Key { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="user_id"), Preserve]
public string UserId { get; set; }
/// <inheritdoc />
[DataMember(Name="version"), Preserve]
public string Version { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Collection: ", Collection, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "Key: ", Key, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "UserId: ", UserId, ", ");
output = string.Concat(output, "Version: ", Version, ", ");
return output;
}
}
/// <summary>
/// Batch of acknowledgements for the storage object write.
/// </summary>
public interface IApiStorageObjectAcks
{
/// <summary>
/// Batch of storage write acknowledgements.
/// </summary>
IEnumerable<IApiStorageObjectAck> Acks { get; }
}
/// <inheritdoc />
internal class ApiStorageObjectAcks : IApiStorageObjectAcks
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiStorageObjectAck> Acks => _acks ?? new List<ApiStorageObjectAck>(0);
[DataMember(Name="acks"), Preserve]
public List<ApiStorageObjectAck> _acks { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Acks: [", string.Join(", ", Acks), "], ");
return output;
}
}
/// <summary>
/// List of storage objects.
/// </summary>
public interface IApiStorageObjectList
{
/// <summary>
/// The cursor for the next page of results, if any.
/// </summary>
string Cursor { get; }
/// <summary>
/// The list of storage objects.
/// </summary>
IEnumerable<IApiStorageObject> Objects { get; }
}
/// <inheritdoc />
internal class ApiStorageObjectList : IApiStorageObjectList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiStorageObject> Objects => _objects ?? new List<ApiStorageObject>(0);
[DataMember(Name="objects"), Preserve]
public List<ApiStorageObject> _objects { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "Objects: [", string.Join(", ", Objects), "], ");
return output;
}
}
/// <summary>
/// Batch of storage objects.
/// </summary>
public interface IApiStorageObjects
{
/// <summary>
/// The batch of storage objects.
/// </summary>
IEnumerable<IApiStorageObject> Objects { get; }
}
/// <inheritdoc />
internal class ApiStorageObjects : IApiStorageObjects
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiStorageObject> Objects => _objects ?? new List<ApiStorageObject>(0);
[DataMember(Name="objects"), Preserve]
public List<ApiStorageObject> _objects { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Objects: [", string.Join(", ", Objects), "], ");
return output;
}
}
/// <summary>
/// Environment where a purchase/subscription took place,
/// </summary>
public enum ApiStoreEnvironment
{
/// <summary>
/// - UNKNOWN: Unknown environment.
/// </summary>
UNKNOWN = 0,
/// <summary>
/// - SANDBOX: Sandbox/test environment.
/// </summary>
SANDBOX = 1,
/// <summary>
/// - PRODUCTION: Production environment.
/// </summary>
PRODUCTION = 2,
}
/// <summary>
/// Validation Provider,
/// </summary>
public enum ApiStoreProvider
{
/// <summary>
/// - APPLE_APP_STORE: Apple App Store
/// </summary>
APPLE_APP_STORE = 0,
/// <summary>
/// - GOOGLE_PLAY_STORE: Google Play Store
/// </summary>
GOOGLE_PLAY_STORE = 1,
/// <summary>
/// - HUAWEI_APP_GALLERY: Huawei App Gallery
/// </summary>
HUAWEI_APP_GALLERY = 2,
/// <summary>
/// - FACEBOOK_INSTANT_STORE: Facebook Instant Store
/// </summary>
FACEBOOK_INSTANT_STORE = 3,
}
/// <summary>
/// A list of validated subscriptions stored by Nakama.
/// </summary>
public interface IApiSubscriptionList
{
/// <summary>
/// The cursor to send when retrieving the next page, if any.
/// </summary>
string Cursor { get; }
/// <summary>
/// The cursor to send when retrieving the previous page, if any.
/// </summary>
string PrevCursor { get; }
/// <summary>
/// Stored validated subscriptions.
/// </summary>
IEnumerable<IApiValidatedSubscription> ValidatedSubscriptions { get; }
}
/// <inheritdoc />
internal class ApiSubscriptionList : IApiSubscriptionList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[DataMember(Name="prev_cursor"), Preserve]
public string PrevCursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiValidatedSubscription> ValidatedSubscriptions => _validatedSubscriptions ?? new List<ApiValidatedSubscription>(0);
[DataMember(Name="validated_subscriptions"), Preserve]
public List<ApiValidatedSubscription> _validatedSubscriptions { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "PrevCursor: ", PrevCursor, ", ");
output = string.Concat(output, "ValidatedSubscriptions: [", string.Join(", ", ValidatedSubscriptions), "], ");
return output;
}
}
/// <summary>
/// A tournament on the server.
/// </summary>
public interface IApiTournament
{
/// <summary>
/// Whether the leaderboard was created authoritatively or not.
/// </summary>
bool Authoritative { get; }
/// <summary>
/// True if the tournament is active and can enter. A computed value.
/// </summary>
bool CanEnter { get; }
/// <summary>
/// The category of the tournament. e.g. "vip" could be category 1.
/// </summary>
int Category { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the tournament was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// The description of the tournament. May be blank.
/// </summary>
string Description { get; }
/// <summary>
/// Duration of the tournament in seconds.
/// </summary>
int Duration { get; }
/// <summary>
/// The UNIX time when the tournament stops being active until next reset. A computed value.
/// </summary>
int EndActive { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the tournament will be stopped.
/// </summary>
string EndTime { get; }
/// <summary>
/// The ID of the tournament.
/// </summary>
string Id { get; }
/// <summary>
/// Whether the user must join the tournament before being able to submit scores.
/// </summary>
bool JoinRequired { get; }
/// <summary>
/// The maximum score updates allowed per player for the current tournament.
/// </summary>
int MaxNumScore { get; }
/// <summary>
/// The maximum number of players for the tournament.
/// </summary>
int MaxSize { get; }
/// <summary>
/// Additional information stored as a JSON object.
/// </summary>
string Metadata { get; }
/// <summary>
/// The UNIX time when the tournament is next playable. A computed value.
/// </summary>
int NextReset { get; }
/// <summary>
/// Operator.
/// </summary>
ApiOperator Operator { get; }
/// <summary>
/// The UNIX time when the tournament was last reset. A computed value.
/// </summary>
int PrevReset { get; }
/// <summary>
/// The current number of players in the tournament.
/// </summary>
int Size { get; }
/// <summary>
/// ASC (0) or DESC (1) sort mode of scores in the tournament.
/// </summary>
int SortOrder { get; }
/// <summary>
/// The UNIX time when the tournament start being active. A computed value.
/// </summary>
int StartActive { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the tournament will start.
/// </summary>
string StartTime { get; }
/// <summary>
/// The title for the tournament.
/// </summary>
string Title { get; }
}
/// <inheritdoc />
internal class ApiTournament : IApiTournament
{
/// <inheritdoc />
[DataMember(Name="authoritative"), Preserve]
public bool Authoritative { get; set; }
/// <inheritdoc />
[DataMember(Name="can_enter"), Preserve]
public bool CanEnter { get; set; }
/// <inheritdoc />
[DataMember(Name="category"), Preserve]
public int Category { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="description"), Preserve]
public string Description { get; set; }
/// <inheritdoc />
[DataMember(Name="duration"), Preserve]
public int Duration { get; set; }
/// <inheritdoc />
[DataMember(Name="end_active"), Preserve]
public int EndActive { get; set; }
/// <inheritdoc />
[DataMember(Name="end_time"), Preserve]
public string EndTime { get; set; }
/// <inheritdoc />
[DataMember(Name="id"), Preserve]
public string Id { get; set; }
/// <inheritdoc />
[DataMember(Name="join_required"), Preserve]
public bool JoinRequired { get; set; }
/// <inheritdoc />
[DataMember(Name="max_num_score"), Preserve]
public int MaxNumScore { get; set; }
/// <inheritdoc />
[DataMember(Name="max_size"), Preserve]
public int MaxSize { get; set; }
/// <inheritdoc />
[DataMember(Name="metadata"), Preserve]
public string Metadata { get; set; }
/// <inheritdoc />
[DataMember(Name="next_reset"), Preserve]
public int NextReset { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public ApiOperator Operator => _operator;
[DataMember(Name="operator"), Preserve]
public ApiOperator _operator { get; set; }
/// <inheritdoc />
[DataMember(Name="prev_reset"), Preserve]
public int PrevReset { get; set; }
/// <inheritdoc />
[DataMember(Name="size"), Preserve]
public int Size { get; set; }
/// <inheritdoc />
[DataMember(Name="sort_order"), Preserve]
public int SortOrder { get; set; }
/// <inheritdoc />
[DataMember(Name="start_active"), Preserve]
public int StartActive { get; set; }
/// <inheritdoc />
[DataMember(Name="start_time"), Preserve]
public string StartTime { get; set; }
/// <inheritdoc />
[DataMember(Name="title"), Preserve]
public string Title { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Authoritative: ", Authoritative, ", ");
output = string.Concat(output, "CanEnter: ", CanEnter, ", ");
output = string.Concat(output, "Category: ", Category, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "Description: ", Description, ", ");
output = string.Concat(output, "Duration: ", Duration, ", ");
output = string.Concat(output, "EndActive: ", EndActive, ", ");
output = string.Concat(output, "EndTime: ", EndTime, ", ");
output = string.Concat(output, "Id: ", Id, ", ");
output = string.Concat(output, "JoinRequired: ", JoinRequired, ", ");
output = string.Concat(output, "MaxNumScore: ", MaxNumScore, ", ");
output = string.Concat(output, "MaxSize: ", MaxSize, ", ");
output = string.Concat(output, "Metadata: ", Metadata, ", ");
output = string.Concat(output, "NextReset: ", NextReset, ", ");
output = string.Concat(output, "Operator: ", Operator, ", ");
output = string.Concat(output, "PrevReset: ", PrevReset, ", ");
output = string.Concat(output, "Size: ", Size, ", ");
output = string.Concat(output, "SortOrder: ", SortOrder, ", ");
output = string.Concat(output, "StartActive: ", StartActive, ", ");
output = string.Concat(output, "StartTime: ", StartTime, ", ");
output = string.Concat(output, "Title: ", Title, ", ");
return output;
}
}
/// <summary>
/// A list of tournaments.
/// </summary>
public interface IApiTournamentList
{
/// <summary>
/// A pagination cursor (optional).
/// </summary>
string Cursor { get; }
/// <summary>
/// The list of tournaments returned.
/// </summary>
IEnumerable<IApiTournament> Tournaments { get; }
}
/// <inheritdoc />
internal class ApiTournamentList : IApiTournamentList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiTournament> Tournaments => _tournaments ?? new List<ApiTournament>(0);
[DataMember(Name="tournaments"), Preserve]
public List<ApiTournament> _tournaments { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "Tournaments: [", string.Join(", ", Tournaments), "], ");
return output;
}
}
/// <summary>
/// A set of tournament records which may be part of a tournament records page or a batch of individual records.
/// </summary>
public interface IApiTournamentRecordList
{
/// <summary>
/// The cursor to send when retireving the next page (optional).
/// </summary>
string NextCursor { get; }
/// <summary>
/// A batched set of tournament records belonging to specified owners.
/// </summary>
IEnumerable<IApiLeaderboardRecord> OwnerRecords { get; }
/// <summary>
/// The cursor to send when retrieving the previous page (optional).
/// </summary>
string PrevCursor { get; }
/// <summary>
/// The total number of ranks available.
/// </summary>
string RankCount { get; }
/// <summary>
/// A list of tournament records.
/// </summary>
IEnumerable<IApiLeaderboardRecord> Records { get; }
}
/// <inheritdoc />
internal class ApiTournamentRecordList : IApiTournamentRecordList
{
/// <inheritdoc />
[DataMember(Name="next_cursor"), Preserve]
public string NextCursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiLeaderboardRecord> OwnerRecords => _ownerRecords ?? new List<ApiLeaderboardRecord>(0);
[DataMember(Name="owner_records"), Preserve]
public List<ApiLeaderboardRecord> _ownerRecords { get; set; }
/// <inheritdoc />
[DataMember(Name="prev_cursor"), Preserve]
public string PrevCursor { get; set; }
/// <inheritdoc />
[DataMember(Name="rank_count"), Preserve]
public string RankCount { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiLeaderboardRecord> Records => _records ?? new List<ApiLeaderboardRecord>(0);
[DataMember(Name="records"), Preserve]
public List<ApiLeaderboardRecord> _records { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "NextCursor: ", NextCursor, ", ");
output = string.Concat(output, "OwnerRecords: [", string.Join(", ", OwnerRecords), "], ");
output = string.Concat(output, "PrevCursor: ", PrevCursor, ", ");
output = string.Concat(output, "RankCount: ", RankCount, ", ");
output = string.Concat(output, "Records: [", string.Join(", ", Records), "], ");
return output;
}
}
/// <summary>
/// Update a user's account details.
/// </summary>
public interface IApiUpdateAccountRequest
{
/// <summary>
/// A URL for an avatar image.
/// </summary>
string AvatarUrl { get; }
/// <summary>
/// The display name of the user.
/// </summary>
string DisplayName { get; }
/// <summary>
/// The language expected to be a tag which follows the BCP-47 spec.
/// </summary>
string LangTag { get; }
/// <summary>
/// The location set by the user.
/// </summary>
string Location { get; }
/// <summary>
/// The timezone set by the user.
/// </summary>
string Timezone { get; }
/// <summary>
/// The username of the user's account.
/// </summary>
string Username { get; }
}
/// <inheritdoc />
internal class ApiUpdateAccountRequest : IApiUpdateAccountRequest
{
/// <inheritdoc />
[DataMember(Name="avatar_url"), Preserve]
public string AvatarUrl { get; set; }
/// <inheritdoc />
[DataMember(Name="display_name"), Preserve]
public string DisplayName { get; set; }
/// <inheritdoc />
[DataMember(Name="lang_tag"), Preserve]
public string LangTag { get; set; }
/// <inheritdoc />
[DataMember(Name="location"), Preserve]
public string Location { get; set; }
/// <inheritdoc />
[DataMember(Name="timezone"), Preserve]
public string Timezone { get; set; }
/// <inheritdoc />
[DataMember(Name="username"), Preserve]
public string Username { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "AvatarUrl: ", AvatarUrl, ", ");
output = string.Concat(output, "DisplayName: ", DisplayName, ", ");
output = string.Concat(output, "LangTag: ", LangTag, ", ");
output = string.Concat(output, "Location: ", Location, ", ");
output = string.Concat(output, "Timezone: ", Timezone, ", ");
output = string.Concat(output, "Username: ", Username, ", ");
return output;
}
}
/// <summary>
/// A user in the server.
/// </summary>
public interface IApiUser
{
/// <summary>
/// The Apple Sign In ID in the user's account.
/// </summary>
string AppleId { get; }
/// <summary>
/// A URL for an avatar image.
/// </summary>
string AvatarUrl { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the user was created.
/// </summary>
string CreateTime { get; }
/// <summary>
/// The display name of the user.
/// </summary>
string DisplayName { get; }
/// <summary>
/// Number of related edges to this user.
/// </summary>
int EdgeCount { get; }
/// <summary>
/// The Facebook id in the user's account.
/// </summary>
string FacebookId { get; }
/// <summary>
/// The Facebook Instant Game ID in the user's account.
/// </summary>
string FacebookInstantGameId { get; }
/// <summary>
/// The Apple Game Center in of the user's account.
/// </summary>
string GamecenterId { get; }
/// <summary>
/// The Google id in the user's account.
/// </summary>
string GoogleId { get; }
/// <summary>
/// The id of the user's account.
/// </summary>
string Id { get; }
/// <summary>
/// The language expected to be a tag which follows the BCP-47 spec.
/// </summary>
string LangTag { get; }
/// <summary>
/// The location set by the user.
/// </summary>
string Location { get; }
/// <summary>
/// Additional information stored as a JSON object.
/// </summary>
string Metadata { get; }
/// <summary>
/// Indicates whether the user is currently online.
/// </summary>
bool Online { get; }
/// <summary>
/// The Steam id in the user's account.
/// </summary>
string SteamId { get; }
/// <summary>
/// The timezone set by the user.
/// </summary>
string Timezone { get; }
/// <summary>
/// The UNIX time (for gRPC clients) or ISO string (for REST clients) when the user was last updated.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// The username of the user's account.
/// </summary>
string Username { get; }
}
/// <inheritdoc />
internal class ApiUser : IApiUser
{
/// <inheritdoc />
[DataMember(Name="apple_id"), Preserve]
public string AppleId { get; set; }
/// <inheritdoc />
[DataMember(Name="avatar_url"), Preserve]
public string AvatarUrl { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="display_name"), Preserve]
public string DisplayName { get; set; }
/// <inheritdoc />
[DataMember(Name="edge_count"), Preserve]
public int EdgeCount { get; set; }
/// <inheritdoc />
[DataMember(Name="facebook_id"), Preserve]
public string FacebookId { get; set; }
/// <inheritdoc />
[DataMember(Name="facebook_instant_game_id"), Preserve]
public string FacebookInstantGameId { get; set; }
/// <inheritdoc />
[DataMember(Name="gamecenter_id"), Preserve]
public string GamecenterId { get; set; }
/// <inheritdoc />
[DataMember(Name="google_id"), Preserve]
public string GoogleId { get; set; }
/// <inheritdoc />
[DataMember(Name="id"), Preserve]
public string Id { get; set; }
/// <inheritdoc />
[DataMember(Name="lang_tag"), Preserve]
public string LangTag { get; set; }
/// <inheritdoc />
[DataMember(Name="location"), Preserve]
public string Location { get; set; }
/// <inheritdoc />
[DataMember(Name="metadata"), Preserve]
public string Metadata { get; set; }
/// <inheritdoc />
[DataMember(Name="online"), Preserve]
public bool Online { get; set; }
/// <inheritdoc />
[DataMember(Name="steam_id"), Preserve]
public string SteamId { get; set; }
/// <inheritdoc />
[DataMember(Name="timezone"), Preserve]
public string Timezone { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="username"), Preserve]
public string Username { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "AppleId: ", AppleId, ", ");
output = string.Concat(output, "AvatarUrl: ", AvatarUrl, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "DisplayName: ", DisplayName, ", ");
output = string.Concat(output, "EdgeCount: ", EdgeCount, ", ");
output = string.Concat(output, "FacebookId: ", FacebookId, ", ");
output = string.Concat(output, "FacebookInstantGameId: ", FacebookInstantGameId, ", ");
output = string.Concat(output, "GamecenterId: ", GamecenterId, ", ");
output = string.Concat(output, "GoogleId: ", GoogleId, ", ");
output = string.Concat(output, "Id: ", Id, ", ");
output = string.Concat(output, "LangTag: ", LangTag, ", ");
output = string.Concat(output, "Location: ", Location, ", ");
output = string.Concat(output, "Metadata: ", Metadata, ", ");
output = string.Concat(output, "Online: ", Online, ", ");
output = string.Concat(output, "SteamId: ", SteamId, ", ");
output = string.Concat(output, "Timezone: ", Timezone, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "Username: ", Username, ", ");
return output;
}
}
/// <summary>
/// A list of groups belonging to a user, along with the user's role in each group.
/// </summary>
public interface IApiUserGroupList
{
/// <summary>
/// Cursor for the next page of results, if any.
/// </summary>
string Cursor { get; }
/// <summary>
/// Group-role pairs for a user.
/// </summary>
IEnumerable<IUserGroupListUserGroup> UserGroups { get; }
}
/// <inheritdoc />
internal class ApiUserGroupList : IApiUserGroupList
{
/// <inheritdoc />
[DataMember(Name="cursor"), Preserve]
public string Cursor { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IUserGroupListUserGroup> UserGroups => _userGroups ?? new List<UserGroupListUserGroup>(0);
[DataMember(Name="user_groups"), Preserve]
public List<UserGroupListUserGroup> _userGroups { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Cursor: ", Cursor, ", ");
output = string.Concat(output, "UserGroups: [", string.Join(", ", UserGroups), "], ");
return output;
}
}
/// <summary>
/// A collection of zero or more users.
/// </summary>
public interface IApiUsers
{
/// <summary>
/// The User objects.
/// </summary>
IEnumerable<IApiUser> Users { get; }
}
/// <inheritdoc />
internal class ApiUsers : IApiUsers
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiUser> Users => _users ?? new List<ApiUser>(0);
[DataMember(Name="users"), Preserve]
public List<ApiUser> _users { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Users: [", string.Join(", ", Users), "], ");
return output;
}
}
/// <summary>
/// Apple IAP Purchases validation request
/// </summary>
public interface IApiValidatePurchaseAppleRequest
{
/// <summary>
/// Persist the purchase
/// </summary>
bool Persist { get; }
/// <summary>
/// Base64 encoded Apple receipt data payload.
/// </summary>
string Receipt { get; }
}
/// <inheritdoc />
internal class ApiValidatePurchaseAppleRequest : IApiValidatePurchaseAppleRequest
{
/// <inheritdoc />
[DataMember(Name="persist"), Preserve]
public bool Persist { get; set; }
/// <inheritdoc />
[DataMember(Name="receipt"), Preserve]
public string Receipt { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Persist: ", Persist, ", ");
output = string.Concat(output, "Receipt: ", Receipt, ", ");
return output;
}
}
/// <summary>
/// Facebook Instant IAP Purchase validation request
/// </summary>
public interface IApiValidatePurchaseFacebookInstantRequest
{
/// <summary>
/// Persist the purchase
/// </summary>
bool Persist { get; }
/// <summary>
/// Base64 encoded Facebook Instant signedRequest receipt data payload.
/// </summary>
string SignedRequest { get; }
}
/// <inheritdoc />
internal class ApiValidatePurchaseFacebookInstantRequest : IApiValidatePurchaseFacebookInstantRequest
{
/// <inheritdoc />
[DataMember(Name="persist"), Preserve]
public bool Persist { get; set; }
/// <inheritdoc />
[DataMember(Name="signed_request"), Preserve]
public string SignedRequest { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Persist: ", Persist, ", ");
output = string.Concat(output, "SignedRequest: ", SignedRequest, ", ");
return output;
}
}
/// <summary>
/// Google IAP Purchase validation request
/// </summary>
public interface IApiValidatePurchaseGoogleRequest
{
/// <summary>
/// Persist the purchase
/// </summary>
bool Persist { get; }
/// <summary>
/// JSON encoded Google purchase payload.
/// </summary>
string Purchase { get; }
}
/// <inheritdoc />
internal class ApiValidatePurchaseGoogleRequest : IApiValidatePurchaseGoogleRequest
{
/// <inheritdoc />
[DataMember(Name="persist"), Preserve]
public bool Persist { get; set; }
/// <inheritdoc />
[DataMember(Name="purchase"), Preserve]
public string Purchase { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Persist: ", Persist, ", ");
output = string.Concat(output, "Purchase: ", Purchase, ", ");
return output;
}
}
/// <summary>
/// Huawei IAP Purchase validation request
/// </summary>
public interface IApiValidatePurchaseHuaweiRequest
{
/// <summary>
/// Persist the purchase
/// </summary>
bool Persist { get; }
/// <summary>
/// JSON encoded Huawei InAppPurchaseData.
/// </summary>
string Purchase { get; }
/// <summary>
/// InAppPurchaseData signature.
/// </summary>
string Signature { get; }
}
/// <inheritdoc />
internal class ApiValidatePurchaseHuaweiRequest : IApiValidatePurchaseHuaweiRequest
{
/// <inheritdoc />
[DataMember(Name="persist"), Preserve]
public bool Persist { get; set; }
/// <inheritdoc />
[DataMember(Name="purchase"), Preserve]
public string Purchase { get; set; }
/// <inheritdoc />
[DataMember(Name="signature"), Preserve]
public string Signature { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Persist: ", Persist, ", ");
output = string.Concat(output, "Purchase: ", Purchase, ", ");
output = string.Concat(output, "Signature: ", Signature, ", ");
return output;
}
}
/// <summary>
/// Validate IAP response.
/// </summary>
public interface IApiValidatePurchaseResponse
{
/// <summary>
/// Newly seen validated purchases.
/// </summary>
IEnumerable<IApiValidatedPurchase> ValidatedPurchases { get; }
}
/// <inheritdoc />
internal class ApiValidatePurchaseResponse : IApiValidatePurchaseResponse
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiValidatedPurchase> ValidatedPurchases => _validatedPurchases ?? new List<ApiValidatedPurchase>(0);
[DataMember(Name="validated_purchases"), Preserve]
public List<ApiValidatedPurchase> _validatedPurchases { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "ValidatedPurchases: [", string.Join(", ", ValidatedPurchases), "], ");
return output;
}
}
/// <summary>
/// Apple Subscription validation request
/// </summary>
public interface IApiValidateSubscriptionAppleRequest
{
/// <summary>
/// Persist the subscription.
/// </summary>
bool Persist { get; }
/// <summary>
/// Base64 encoded Apple receipt data payload.
/// </summary>
string Receipt { get; }
}
/// <inheritdoc />
internal class ApiValidateSubscriptionAppleRequest : IApiValidateSubscriptionAppleRequest
{
/// <inheritdoc />
[DataMember(Name="persist"), Preserve]
public bool Persist { get; set; }
/// <inheritdoc />
[DataMember(Name="receipt"), Preserve]
public string Receipt { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Persist: ", Persist, ", ");
output = string.Concat(output, "Receipt: ", Receipt, ", ");
return output;
}
}
/// <summary>
/// Google Subscription validation request
/// </summary>
public interface IApiValidateSubscriptionGoogleRequest
{
/// <summary>
/// Persist the subscription.
/// </summary>
bool Persist { get; }
/// <summary>
/// JSON encoded Google purchase payload.
/// </summary>
string Receipt { get; }
}
/// <inheritdoc />
internal class ApiValidateSubscriptionGoogleRequest : IApiValidateSubscriptionGoogleRequest
{
/// <inheritdoc />
[DataMember(Name="persist"), Preserve]
public bool Persist { get; set; }
/// <inheritdoc />
[DataMember(Name="receipt"), Preserve]
public string Receipt { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Persist: ", Persist, ", ");
output = string.Concat(output, "Receipt: ", Receipt, ", ");
return output;
}
}
/// <summary>
/// Validate Subscription response.
/// </summary>
public interface IApiValidateSubscriptionResponse
{
/// <summary>
///
/// </summary>
IApiValidatedSubscription ValidatedSubscription { get; }
}
/// <inheritdoc />
internal class ApiValidateSubscriptionResponse : IApiValidateSubscriptionResponse
{
/// <inheritdoc />
[IgnoreDataMember]
public IApiValidatedSubscription ValidatedSubscription => _validatedSubscription;
[DataMember(Name="validated_subscription"), Preserve]
public ApiValidatedSubscription _validatedSubscription { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "ValidatedSubscription: ", ValidatedSubscription, ", ");
return output;
}
}
/// <summary>
/// Validated Purchase stored by Nakama.
/// </summary>
public interface IApiValidatedPurchase
{
/// <summary>
/// Timestamp when the receipt validation was stored in DB.
/// </summary>
string CreateTime { get; }
/// <summary>
/// Whether the purchase was done in production or sandbox environment.
/// </summary>
ApiStoreEnvironment Environment { get; }
/// <summary>
/// Purchase Product ID.
/// </summary>
string ProductId { get; }
/// <summary>
/// Raw provider validation response.
/// </summary>
string ProviderResponse { get; }
/// <summary>
/// Timestamp when the purchase was done.
/// </summary>
string PurchaseTime { get; }
/// <summary>
/// Timestamp when the purchase was refunded. Set to UNIX
/// </summary>
string RefundTime { get; }
/// <summary>
/// Whether the purchase had already been validated by Nakama before.
/// </summary>
bool SeenBefore { get; }
/// <summary>
/// Store identifier
/// </summary>
ApiStoreProvider Store { get; }
/// <summary>
/// Purchase Transaction ID.
/// </summary>
string TransactionId { get; }
/// <summary>
/// Timestamp when the receipt validation was updated in DB.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// Purchase User ID.
/// </summary>
string UserId { get; }
}
/// <inheritdoc />
internal class ApiValidatedPurchase : IApiValidatedPurchase
{
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public ApiStoreEnvironment Environment => _environment;
[DataMember(Name="environment"), Preserve]
public ApiStoreEnvironment _environment { get; set; }
/// <inheritdoc />
[DataMember(Name="product_id"), Preserve]
public string ProductId { get; set; }
/// <inheritdoc />
[DataMember(Name="provider_response"), Preserve]
public string ProviderResponse { get; set; }
/// <inheritdoc />
[DataMember(Name="purchase_time"), Preserve]
public string PurchaseTime { get; set; }
/// <inheritdoc />
[DataMember(Name="refund_time"), Preserve]
public string RefundTime { get; set; }
/// <inheritdoc />
[DataMember(Name="seen_before"), Preserve]
public bool SeenBefore { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public ApiStoreProvider Store => _store;
[DataMember(Name="store"), Preserve]
public ApiStoreProvider _store { get; set; }
/// <inheritdoc />
[DataMember(Name="transaction_id"), Preserve]
public string TransactionId { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="user_id"), Preserve]
public string UserId { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "Environment: ", Environment, ", ");
output = string.Concat(output, "ProductId: ", ProductId, ", ");
output = string.Concat(output, "ProviderResponse: ", ProviderResponse, ", ");
output = string.Concat(output, "PurchaseTime: ", PurchaseTime, ", ");
output = string.Concat(output, "RefundTime: ", RefundTime, ", ");
output = string.Concat(output, "SeenBefore: ", SeenBefore, ", ");
output = string.Concat(output, "Store: ", Store, ", ");
output = string.Concat(output, "TransactionId: ", TransactionId, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "UserId: ", UserId, ", ");
return output;
}
}
/// <summary>
///
/// </summary>
public interface IApiValidatedSubscription
{
/// <summary>
/// Whether the subscription is currently active or not.
/// </summary>
bool Active { get; }
/// <summary>
/// UNIX Timestamp when the receipt validation was stored in DB.
/// </summary>
string CreateTime { get; }
/// <summary>
/// Whether the purchase was done in production or sandbox environment.
/// </summary>
ApiStoreEnvironment Environment { get; }
/// <summary>
/// Subscription expiration time. The subscription can still be auto-renewed to extend the expiration time further.
/// </summary>
string ExpiryTime { get; }
/// <summary>
/// Purchase Original transaction ID (we only keep track of the original subscription, not subsequent renewals).
/// </summary>
string OriginalTransactionId { get; }
/// <summary>
/// Purchase Product ID.
/// </summary>
string ProductId { get; }
/// <summary>
/// Raw provider notification body.
/// </summary>
string ProviderNotification { get; }
/// <summary>
/// Raw provider validation response body.
/// </summary>
string ProviderResponse { get; }
/// <summary>
/// UNIX Timestamp when the purchase was done.
/// </summary>
string PurchaseTime { get; }
/// <summary>
/// Subscription refund time. If this time is set, the subscription was refunded.
/// </summary>
string RefundTime { get; }
/// <summary>
/// Store identifier
/// </summary>
ApiStoreProvider Store { get; }
/// <summary>
/// UNIX Timestamp when the receipt validation was updated in DB.
/// </summary>
string UpdateTime { get; }
/// <summary>
/// Subscription User ID.
/// </summary>
string UserId { get; }
}
/// <inheritdoc />
internal class ApiValidatedSubscription : IApiValidatedSubscription
{
/// <inheritdoc />
[DataMember(Name="active"), Preserve]
public bool Active { get; set; }
/// <inheritdoc />
[DataMember(Name="create_time"), Preserve]
public string CreateTime { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public ApiStoreEnvironment Environment => _environment;
[DataMember(Name="environment"), Preserve]
public ApiStoreEnvironment _environment { get; set; }
/// <inheritdoc />
[DataMember(Name="expiry_time"), Preserve]
public string ExpiryTime { get; set; }
/// <inheritdoc />
[DataMember(Name="original_transaction_id"), Preserve]
public string OriginalTransactionId { get; set; }
/// <inheritdoc />
[DataMember(Name="product_id"), Preserve]
public string ProductId { get; set; }
/// <inheritdoc />
[DataMember(Name="provider_notification"), Preserve]
public string ProviderNotification { get; set; }
/// <inheritdoc />
[DataMember(Name="provider_response"), Preserve]
public string ProviderResponse { get; set; }
/// <inheritdoc />
[DataMember(Name="purchase_time"), Preserve]
public string PurchaseTime { get; set; }
/// <inheritdoc />
[DataMember(Name="refund_time"), Preserve]
public string RefundTime { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public ApiStoreProvider Store => _store;
[DataMember(Name="store"), Preserve]
public ApiStoreProvider _store { get; set; }
/// <inheritdoc />
[DataMember(Name="update_time"), Preserve]
public string UpdateTime { get; set; }
/// <inheritdoc />
[DataMember(Name="user_id"), Preserve]
public string UserId { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Active: ", Active, ", ");
output = string.Concat(output, "CreateTime: ", CreateTime, ", ");
output = string.Concat(output, "Environment: ", Environment, ", ");
output = string.Concat(output, "ExpiryTime: ", ExpiryTime, ", ");
output = string.Concat(output, "OriginalTransactionId: ", OriginalTransactionId, ", ");
output = string.Concat(output, "ProductId: ", ProductId, ", ");
output = string.Concat(output, "ProviderNotification: ", ProviderNotification, ", ");
output = string.Concat(output, "ProviderResponse: ", ProviderResponse, ", ");
output = string.Concat(output, "PurchaseTime: ", PurchaseTime, ", ");
output = string.Concat(output, "RefundTime: ", RefundTime, ", ");
output = string.Concat(output, "Store: ", Store, ", ");
output = string.Concat(output, "UpdateTime: ", UpdateTime, ", ");
output = string.Concat(output, "UserId: ", UserId, ", ");
return output;
}
}
/// <summary>
/// The object to store.
/// </summary>
public interface IApiWriteStorageObject
{
/// <summary>
/// The collection to store the object.
/// </summary>
string Collection { get; }
/// <summary>
/// The key for the object within the collection.
/// </summary>
string Key { get; }
/// <summary>
/// The read access permissions for the object.
/// </summary>
int PermissionRead { get; }
/// <summary>
/// The write access permissions for the object.
/// </summary>
int PermissionWrite { get; }
/// <summary>
/// The value of the object.
/// </summary>
string Value { get; }
/// <summary>
/// The version hash of the object to check. Possible values are: ["", "*", "#hash#"]. if-match and if-none-match
/// </summary>
string Version { get; }
}
/// <inheritdoc />
internal class ApiWriteStorageObject : IApiWriteStorageObject
{
/// <inheritdoc />
[DataMember(Name="collection"), Preserve]
public string Collection { get; set; }
/// <inheritdoc />
[DataMember(Name="key"), Preserve]
public string Key { get; set; }
/// <inheritdoc />
[DataMember(Name="permission_read"), Preserve]
public int PermissionRead { get; set; }
/// <inheritdoc />
[DataMember(Name="permission_write"), Preserve]
public int PermissionWrite { get; set; }
/// <inheritdoc />
[DataMember(Name="value"), Preserve]
public string Value { get; set; }
/// <inheritdoc />
[DataMember(Name="version"), Preserve]
public string Version { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Collection: ", Collection, ", ");
output = string.Concat(output, "Key: ", Key, ", ");
output = string.Concat(output, "PermissionRead: ", PermissionRead, ", ");
output = string.Concat(output, "PermissionWrite: ", PermissionWrite, ", ");
output = string.Concat(output, "Value: ", Value, ", ");
output = string.Concat(output, "Version: ", Version, ", ");
return output;
}
}
/// <summary>
/// Write objects to the storage engine.
/// </summary>
public interface IApiWriteStorageObjectsRequest
{
/// <summary>
/// The objects to store on the server.
/// </summary>
IEnumerable<IApiWriteStorageObject> Objects { get; }
}
/// <inheritdoc />
internal class ApiWriteStorageObjectsRequest : IApiWriteStorageObjectsRequest
{
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IApiWriteStorageObject> Objects => _objects ?? new List<ApiWriteStorageObject>(0);
[DataMember(Name="objects"), Preserve]
public List<ApiWriteStorageObject> _objects { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Objects: [", string.Join(", ", Objects), "], ");
return output;
}
}
/// <summary>
///
/// </summary>
public interface IProtobufAny
{
/// <summary>
///
/// </summary>
string @type { get; }
}
/// <inheritdoc />
internal class ProtobufAny : IProtobufAny
{
/// <inheritdoc />
[DataMember(Name="@type"), Preserve]
public string @type { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "@type: ", @type, ", ");
return output;
}
}
/// <summary>
///
/// </summary>
public interface IRpcStatus
{
/// <summary>
///
/// </summary>
int Code { get; }
/// <summary>
///
/// </summary>
IEnumerable<IProtobufAny> Details { get; }
/// <summary>
///
/// </summary>
string Message { get; }
}
/// <inheritdoc />
internal class RpcStatus : IRpcStatus
{
/// <inheritdoc />
[DataMember(Name="code"), Preserve]
public int Code { get; set; }
/// <inheritdoc />
[IgnoreDataMember]
public IEnumerable<IProtobufAny> Details => _details ?? new List<ProtobufAny>(0);
[DataMember(Name="details"), Preserve]
public List<ProtobufAny> _details { get; set; }
/// <inheritdoc />
[DataMember(Name="message"), Preserve]
public string Message { get; set; }
public override string ToString()
{
var output = "";
output = string.Concat(output, "Code: ", Code, ", ");
output = string.Concat(output, "Details: [", string.Join(", ", Details), "], ");
output = string.Concat(output, "Message: ", Message, ", ");
return output;
}
}
/// <summary>
/// The low level client for the Nakama API.
/// </summary>
internal class ApiClient
{
public readonly IHttpAdapter HttpAdapter;
public int Timeout { get; set; }
private readonly Uri _baseUri;
public ApiClient(Uri baseUri, IHttpAdapter httpAdapter, int timeout = 10)
{
_baseUri = baseUri;
HttpAdapter = httpAdapter;
Timeout = timeout;
}
/// <summary>
/// A healthcheck which load balancers can use to check the service.
/// </summary>
public async Task HealthcheckAsync(
string bearerToken,
CancellationToken? cancellationToken)
{
var urlpath = "/healthcheck";
var queryParams = "";
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "GET";
var headers = new Dictionary<string, string>();
var header = string.Concat("Bearer ", bearerToken);
headers.Add("Authorization", header);
byte[] content = null;
await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
}
/// <summary>
/// Delete the current user's account.
/// </summary>
public async Task DeleteAccountAsync(
string bearerToken,
CancellationToken? cancellationToken)
{
var urlpath = "/v2/account";
var queryParams = "";
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "DELETE";
var headers = new Dictionary<string, string>();
var header = string.Concat("Bearer ", bearerToken);
headers.Add("Authorization", header);
byte[] content = null;
await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
}
/// <summary>
/// Fetch the current user's account.
/// </summary>
public async Task<IApiAccount> GetAccountAsync(
string bearerToken,
CancellationToken? cancellationToken)
{
var urlpath = "/v2/account";
var queryParams = "";
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "GET";
var headers = new Dictionary<string, string>();
var header = string.Concat("Bearer ", bearerToken);
headers.Add("Authorization", header);
byte[] content = null;
var contents = await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
return contents.FromJson<ApiAccount>();
}
/// <summary>
/// Update fields in the current user's account.
/// </summary>
public async Task UpdateAccountAsync(
string bearerToken,
ApiUpdateAccountRequest body,
CancellationToken? cancellationToken)
{
if (body == null)
{
throw new ArgumentException("'body' is required but was null.");
}
var urlpath = "/v2/account";
var queryParams = "";
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "PUT";
var headers = new Dictionary<string, string>();
var header = string.Concat("Bearer ", bearerToken);
headers.Add("Authorization", header);
byte[] content = null;
var jsonBody = body.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
}
/// <summary>
/// Authenticate a user with an Apple ID against the server.
/// </summary>
public async Task<IApiSession> AuthenticateAppleAsync(
string basicAuthUsername,
string basicAuthPassword,
ApiAccountApple account,
bool? create,
string username,
CancellationToken? cancellationToken)
{
if (account == null)
{
throw new ArgumentException("'account' is required but was null.");
}
var urlpath = "/v2/account/authenticate/apple";
var queryParams = "";
if (create != null) {
queryParams = string.Concat(queryParams, "create=", create.ToString().ToLower(), "&");
}
if (username != null) {
queryParams = string.Concat(queryParams, "username=", Uri.EscapeDataString(username), "&");
}
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "POST";
var headers = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(basicAuthUsername))
{
var credentials = Encoding.UTF8.GetBytes(basicAuthUsername + ":" + basicAuthPassword);
var header = string.Concat("Basic ", Convert.ToBase64String(credentials));
headers.Add("Authorization", header);
}
byte[] content = null;
var jsonBody = account.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
var contents = await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
return contents.FromJson<ApiSession>();
}
/// <summary>
/// Authenticate a user with a custom id against the server.
/// </summary>
public async Task<IApiSession> AuthenticateCustomAsync(
string basicAuthUsername,
string basicAuthPassword,
ApiAccountCustom account,
bool? create,
string username,
CancellationToken? cancellationToken)
{
if (account == null)
{
throw new ArgumentException("'account' is required but was null.");
}
var urlpath = "/v2/account/authenticate/custom";
var queryParams = "";
if (create != null) {
queryParams = string.Concat(queryParams, "create=", create.ToString().ToLower(), "&");
}
if (username != null) {
queryParams = string.Concat(queryParams, "username=", Uri.EscapeDataString(username), "&");
}
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "POST";
var headers = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(basicAuthUsername))
{
var credentials = Encoding.UTF8.GetBytes(basicAuthUsername + ":" + basicAuthPassword);
var header = string.Concat("Basic ", Convert.ToBase64String(credentials));
headers.Add("Authorization", header);
}
byte[] content = null;
var jsonBody = account.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
var contents = await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
return contents.FromJson<ApiSession>();
}
/// <summary>
/// Authenticate a user with a device id against the server.
/// </summary>
public async Task<IApiSession> AuthenticateDeviceAsync(
string basicAuthUsername,
string basicAuthPassword,
ApiAccountDevice account,
bool? create,
string username,
CancellationToken? cancellationToken)
{
if (account == null)
{
throw new ArgumentException("'account' is required but was null.");
}
var urlpath = "/v2/account/authenticate/device";
var queryParams = "";
if (create != null) {
queryParams = string.Concat(queryParams, "create=", create.ToString().ToLower(), "&");
}
if (username != null) {
queryParams = string.Concat(queryParams, "username=", Uri.EscapeDataString(username), "&");
}
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "POST";
var headers = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(basicAuthUsername))
{
var credentials = Encoding.UTF8.GetBytes(basicAuthUsername + ":" + basicAuthPassword);
var header = string.Concat("Basic ", Convert.ToBase64String(credentials));
headers.Add("Authorization", header);
}
byte[] content = null;
var jsonBody = account.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
var contents = await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
return contents.FromJson<ApiSession>();
}
/// <summary>
/// Authenticate a user with an email+password against the server.
/// </summary>
public async Task<IApiSession> AuthenticateEmailAsync(
string basicAuthUsername,
string basicAuthPassword,
ApiAccountEmail account,
bool? create,
string username,
CancellationToken? cancellationToken)
{
if (account == null)
{
throw new ArgumentException("'account' is required but was null.");
}
var urlpath = "/v2/account/authenticate/email";
var queryParams = "";
if (create != null) {
queryParams = string.Concat(queryParams, "create=", create.ToString().ToLower(), "&");
}
if (username != null) {
queryParams = string.Concat(queryParams, "username=", Uri.EscapeDataString(username), "&");
}
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "POST";
var headers = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(basicAuthUsername))
{
var credentials = Encoding.UTF8.GetBytes(basicAuthUsername + ":" + basicAuthPassword);
var header = string.Concat("Basic ", Convert.ToBase64String(credentials));
headers.Add("Authorization", header);
}
byte[] content = null;
var jsonBody = account.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
var contents = await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
return contents.FromJson<ApiSession>();
}
/// <summary>
/// Authenticate a user with a Facebook OAuth token against the server.
/// </summary>
public async Task<IApiSession> AuthenticateFacebookAsync(
string basicAuthUsername,
string basicAuthPassword,
ApiAccountFacebook account,
bool? create,
string username,
bool? sync,
CancellationToken? cancellationToken)
{
if (account == null)
{
throw new ArgumentException("'account' is required but was null.");
}
var urlpath = "/v2/account/authenticate/facebook";
var queryParams = "";
if (create != null) {
queryParams = string.Concat(queryParams, "create=", create.ToString().ToLower(), "&");
}
if (username != null) {
queryParams = string.Concat(queryParams, "username=", Uri.EscapeDataString(username), "&");
}
if (sync != null) {
queryParams = string.Concat(queryParams, "sync=", sync.ToString().ToLower(), "&");
}
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "POST";
var headers = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(basicAuthUsername))
{
var credentials = Encoding.UTF8.GetBytes(basicAuthUsername + ":" + basicAuthPassword);
var header = string.Concat("Basic ", Convert.ToBase64String(credentials));
headers.Add("Authorization", header);
}
byte[] content = null;
var jsonBody = account.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
var contents = await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
return contents.FromJson<ApiSession>();
}
/// <summary>
/// Authenticate a user with a Facebook Instant Game token against the server.
/// </summary>
public async Task<IApiSession> AuthenticateFacebookInstantGameAsync(
string basicAuthUsername,
string basicAuthPassword,
ApiAccountFacebookInstantGame account,
bool? create,
string username,
CancellationToken? cancellationToken)
{
if (account == null)
{
throw new ArgumentException("'account' is required but was null.");
}
var urlpath = "/v2/account/authenticate/facebookinstantgame";
var queryParams = "";
if (create != null) {
queryParams = string.Concat(queryParams, "create=", create.ToString().ToLower(), "&");
}
if (username != null) {
queryParams = string.Concat(queryParams, "username=", Uri.EscapeDataString(username), "&");
}
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "POST";
var headers = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(basicAuthUsername))
{
var credentials = Encoding.UTF8.GetBytes(basicAuthUsername + ":" + basicAuthPassword);
var header = string.Concat("Basic ", Convert.ToBase64String(credentials));
headers.Add("Authorization", header);
}
byte[] content = null;
var jsonBody = account.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
var contents = await HttpAdapter.SendAsync(method, uri, headers, content, Timeout, cancellationToken);
return contents.FromJson<ApiSession>();
}
/// <summary>
/// Authenticate a user with Apple's GameCenter against the server.
/// </summary>
public async Task<IApiSession> AuthenticateGameCenterAsync(
string basicAuthUsername,
string basicAuthPassword,
ApiAccountGameCenter account,
bool? create,
string username,
CancellationToken? cancellationToken)
{
if (account == null)
{
throw new ArgumentException("'account' is required but was null.");
}
var urlpath = "/v2/account/authenticate/gamecenter";
var queryParams = "";
if (create != null) {
queryParams = string.Concat(queryParams, "create=", create.ToString().ToLower(), "&");
}
if (username != null) {
queryParams = string.Concat(queryParams, "username=", Uri.EscapeDataString(username), "&");
}
string path = _baseUri.AbsolutePath.TrimEnd('/') + urlpath;
var uri = new UriBuilder(_baseUri)
{
Path = path,
Query = queryParams
}.Uri;
var method = "POST";
var headers = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(basicAuthUsername))
{
var credentials = Encoding.UTF8.GetBytes(basicAuthUsername + ":" + basicAuthPassword);
var header = string.Concat("Basic ", Convert.ToBase64String(credentials));
headers.Add("Authorization", header);
}
byte[] content = null;
var jsonBody = account.ToJson();
content = Encoding.UTF8.GetBytes(jsonBody);
var c
gitextract_98wg7jk9/
├── .editorconfig
├── .github/
│ └── workflows/
│ ├── doxygen.yml
│ └── pr.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── Nakama/
│ ├── ApiClient.gen.cs
│ ├── ChannelJoinMessage.cs
│ ├── ChannelLeaveMessage.cs
│ ├── ChannelRemoveMessage.cs
│ ├── ChannelSendMessage.cs
│ ├── ChannelUpdateMessage.cs
│ ├── Client.cs
│ ├── Console/
│ │ └── ConsoleClient.gen.cs
│ ├── GZipHttpClientHandler.cs
│ ├── HttpRequestAdapter.cs
│ ├── IChannel.cs
│ ├── IChannelMessageAck.cs
│ ├── IChannelPresenceEvent.cs
│ ├── IClient.cs
│ ├── IHttpAdapter.cs
│ ├── IHttpAdapterUtil.cs
│ ├── ILogger.cs
│ ├── IMatch.cs
│ ├── IMatchPresenceEvent.cs
│ ├── IMatchState.cs
│ ├── IMatchmakerMatched.cs
│ ├── IMatchmakerTicket.cs
│ ├── IParty.cs
│ ├── IPartyClose.cs
│ ├── IPartyData.cs
│ ├── IPartyJoinRequest.cs
│ ├── IPartyLeader.cs
│ ├── IPartyMatchmakerTicket.cs
│ ├── IPartyPresenceEvent.cs
│ ├── IPartyUpdate.cs
│ ├── ISession.cs
│ ├── ISocket.cs
│ ├── ISocketAdapter.cs
│ ├── IStatus.cs
│ ├── IStatusPresenceEvent.cs
│ ├── IStreamPresenceEvent.cs
│ ├── IUserPresence.cs
│ ├── MatchCreateMessage.cs
│ ├── MatchJoinMessage.cs
│ ├── MatchLeaveMessage.cs
│ ├── MatchSendMessage.cs
│ ├── MatchmakerAddMessage.cs
│ ├── MatchmakerRemoveMessage.cs
│ ├── Nakama.csproj
│ ├── Ninja.WebSockets/
│ │ ├── BufferPool.cs
│ │ ├── Exceptions/
│ │ │ ├── EntityTooLargeException.cs
│ │ │ ├── InvalidHttpResponseCodeException.cs
│ │ │ ├── README.txt
│ │ │ ├── SecWebSocketKeyMissingException.cs
│ │ │ ├── ServerListenerSocketException.cs
│ │ │ ├── WebSocketBufferOverflowException.cs
│ │ │ ├── WebSocketHandshakeFailedException.cs
│ │ │ └── WebSocketVersionNotSupportedException.cs
│ │ ├── HttpHelper.cs
│ │ ├── IBufferPool.cs
│ │ ├── IPingPongManager.cs
│ │ ├── IWebSocketClientFactory.cs
│ │ ├── IWebSocketServerFactory.cs
│ │ ├── Internal/
│ │ │ ├── BinaryReaderWriter.cs
│ │ │ ├── WebSocketFrame.cs
│ │ │ ├── WebSocketFrameCommon.cs
│ │ │ ├── WebSocketFrameReader.cs
│ │ │ ├── WebSocketFrameWriter.cs
│ │ │ ├── WebSocketImplementation.cs
│ │ │ ├── WebSocketOpCode.cs
│ │ │ └── WebSocketReadCursor.cs
│ │ ├── LICENCE
│ │ ├── PingPongManager.cs
│ │ ├── PongEventArgs.cs
│ │ ├── WebSocketClientFactory.cs
│ │ ├── WebSocketClientOptions.cs
│ │ ├── WebSocketHttpContext.cs
│ │ ├── WebSocketServerFactory.cs
│ │ └── WebSocketServerOptions.cs
│ ├── NullLogger.cs
│ ├── Party.cs
│ ├── PartyAccept.cs
│ ├── PartyClose.cs
│ ├── PartyCreate.cs
│ ├── PartyData.cs
│ ├── PartyDataSend.cs
│ ├── PartyJoin.cs
│ ├── PartyJoinRequest.cs
│ ├── PartyJoinRequestList.cs
│ ├── PartyLeader.cs
│ ├── PartyLeave.cs
│ ├── PartyMatchmakerAdd.cs
│ ├── PartyMatchmakerRemove.cs
│ ├── PartyMatchmakerTicket.cs
│ ├── PartyMemberRemove.cs
│ ├── PartyPresenceEvent.cs
│ ├── PartyPromote.cs
│ ├── PartyUpdate.cs
│ ├── PresenceUtil.cs
│ ├── PreserveAttribute.cs
│ ├── Retry.cs
│ ├── RetryConfiguration.cs
│ ├── RetryHistory.cs
│ ├── RetryInvoker.cs
│ ├── RetryJitter.cs
│ ├── RetryListener.cs
│ ├── Session.cs
│ ├── Socket.cs
│ ├── StatusFollowMessage.cs
│ ├── StatusUnfollowMessage.cs
│ ├── StatusUpdateMessage.cs
│ ├── StorageObjectId.cs
│ ├── TinyJson/
│ │ ├── JsonParser.cs
│ │ ├── JsonWriter.cs
│ │ └── LICENSE
│ ├── TransientExceptionDelegate.cs
│ ├── WebSocketAdapter.cs
│ ├── WebSocketErrorMessage.cs
│ ├── WebSocketMessageEnvelope.cs
│ ├── WebSocketStdlibAdapter.cs
│ └── WriteStorageObject.cs
├── Nakama.Tests/
│ ├── AssemblyInfo.cs
│ ├── AuthenticateTest.cs
│ ├── AwaitedSocketTaskTest.cs
│ ├── CancelTest.cs
│ ├── FriendTest.cs
│ ├── GroupTest.cs
│ ├── HttpErrorTest.cs
│ ├── LeaderboardAroundOwnerTest.cs
│ ├── LeaderboardTest.cs
│ ├── LinkUnlinkTest.cs
│ ├── Nakama.Tests.csproj
│ ├── PresenceUtilTest.cs
│ ├── RetryTest.cs
│ ├── RpcTest.cs
│ ├── SessionTest.cs
│ ├── Socket/
│ │ ├── WebSocketChannelTest.cs
│ │ ├── WebSocketMatchTest.cs
│ │ ├── WebSocketMatchmakerTest.cs
│ │ ├── WebSocketNotificationTest.cs
│ │ ├── WebSocketPartyTest.cs
│ │ ├── WebSocketRpcTest.cs
│ │ ├── WebSocketTest.cs
│ │ └── WebSocketUserStatusTest.cs
│ ├── StdoutLogger.cs
│ ├── TestsUtil.cs
│ ├── TinyJsonParserTest.cs
│ ├── TransientExceptionHttpAdapter.cs
│ └── settings.json
├── Nakama.sln
├── README.md
├── RELEASEINST.md
├── Satori/
│ ├── ApiClient.gen.cs
│ ├── Client.cs
│ ├── Console/
│ │ └── ConsoleClient.gen.cs
│ ├── Event.cs
│ ├── GZipHttpClientHandler.cs
│ ├── HttpRequestAdapter.cs
│ ├── IClient.cs
│ ├── IHttpAdapter.cs
│ ├── IHttpAdapterUtil.cs
│ ├── ILogger.cs
│ ├── ISession.cs
│ ├── NullLogger.cs
│ ├── PreserveAttribute.cs
│ ├── Retry.cs
│ ├── RetryConfiguration.cs
│ ├── RetryHistory.cs
│ ├── RetryInvoker.cs
│ ├── RetryJitter.cs
│ ├── RetryListener.cs
│ ├── Satori.csproj
│ ├── Session.cs
│ ├── TinyJson/
│ │ ├── JsonParser.cs
│ │ ├── JsonWriter.cs
│ │ └── LICENSE
│ └── TransientExceptionDelegate.cs
├── Satori.Tests/
│ ├── ClientIdentifyTest.cs
│ ├── ClientTest.cs
│ ├── README.md
│ └── Satori.Tests.csproj
├── Taskfile.dist.yml
├── codegen/
│ ├── README.md
│ ├── go.mod
│ ├── go.sum
│ └── main.go
└── docs/
├── .nojekyll
├── CNAME
├── Doxyfile
├── html/
│ ├── _api_client_8gen_8cs.html
│ ├── _api_client_8gen_8cs.js
│ ├── _binary_reader_writer_8cs.html
│ ├── _buffer_pool_8cs.html
│ ├── _buffer_pool_8cs.js
│ ├── _c_h_a_n_g_e_l_o_g_8md.html
│ ├── _channel_join_message_8cs.html
│ ├── _channel_join_message_8cs.js
│ ├── _channel_leave_message_8cs.html
│ ├── _channel_remove_message_8cs.html
│ ├── _channel_send_message_8cs.html
│ ├── _channel_update_message_8cs.html
│ ├── _client_8cs.html
│ ├── _client_8cs.js
│ ├── _console_client_8gen_8cs.html
│ ├── _console_client_8gen_8cs.js
│ ├── _debug_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _debug_2net46_2_nakama_8_assembly_info_8cs.html
│ ├── _debug_2net46_2_satori_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _debug_2netstandard2_80_2_nakama_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_80_2_satori_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_81_2_nakama_8_assembly_info_8cs.html
│ ├── _debug_2netstandard2_81_2_satori_8_assembly_info_8cs.html
│ ├── _entity_too_large_exception_8cs.html
│ ├── _entity_too_large_exception_8cs.js
│ ├── _event_8cs.html
│ ├── _event_8cs.js
│ ├── _g_zip_http_client_handler_8cs.html
│ ├── _http_helper_8cs.html
│ ├── _http_helper_8cs.js
│ ├── _http_request_adapter_8cs.html
│ ├── _http_request_adapter_8cs.js
│ ├── _i_buffer_pool_8cs.html
│ ├── _i_buffer_pool_8cs.js
│ ├── _i_channel_8cs.html
│ ├── _i_channel_8cs.js
│ ├── _i_channel_message_ack_8cs.html
│ ├── _i_channel_message_ack_8cs.js
│ ├── _i_channel_presence_event_8cs.html
│ ├── _i_channel_presence_event_8cs.js
│ ├── _i_client_8cs.html
│ ├── _i_client_8cs.js
│ ├── _i_http_adapter_8cs.html
│ ├── _i_http_adapter_8cs.js
│ ├── _i_http_adapter_util_8cs.html
│ ├── _i_logger_8cs.html
│ ├── _i_logger_8cs.js
│ ├── _i_match_8cs.html
│ ├── _i_match_8cs.js
│ ├── _i_match_presence_event_8cs.html
│ ├── _i_match_presence_event_8cs.js
│ ├── _i_match_state_8cs.html
│ ├── _i_match_state_8cs.js
│ ├── _i_matchmaker_matched_8cs.html
│ ├── _i_matchmaker_matched_8cs.js
│ ├── _i_matchmaker_ticket_8cs.html
│ ├── _i_matchmaker_ticket_8cs.js
│ ├── _i_party_8cs.html
│ ├── _i_party_8cs.js
│ ├── _i_party_close_8cs.html
│ ├── _i_party_close_8cs.js
│ ├── _i_party_data_8cs.html
│ ├── _i_party_data_8cs.js
│ ├── _i_party_join_request_8cs.html
│ ├── _i_party_join_request_8cs.js
│ ├── _i_party_leader_8cs.html
│ ├── _i_party_leader_8cs.js
│ ├── _i_party_matchmaker_ticket_8cs.html
│ ├── _i_party_matchmaker_ticket_8cs.js
│ ├── _i_party_presence_event_8cs.html
│ ├── _i_party_presence_event_8cs.js
│ ├── _i_party_update_8cs.html
│ ├── _i_party_update_8cs.js
│ ├── _i_ping_pong_manager_8cs.html
│ ├── _i_ping_pong_manager_8cs.js
│ ├── _i_session_8cs.html
│ ├── _i_session_8cs.js
│ ├── _i_socket_8cs.html
│ ├── _i_socket_8cs.js
│ ├── _i_socket_adapter_8cs.html
│ ├── _i_socket_adapter_8cs.js
│ ├── _i_status_8cs.html
│ ├── _i_status_8cs.js
│ ├── _i_status_presence_event_8cs.html
│ ├── _i_status_presence_event_8cs.js
│ ├── _i_stream_presence_event_8cs.html
│ ├── _i_stream_presence_event_8cs.js
│ ├── _i_user_presence_8cs.html
│ ├── _i_user_presence_8cs.js
│ ├── _i_web_socket_client_factory_8cs.html
│ ├── _i_web_socket_client_factory_8cs.js
│ ├── _i_web_socket_server_factory_8cs.html
│ ├── _i_web_socket_server_factory_8cs.js
│ ├── _invalid_http_response_code_exception_8cs.html
│ ├── _invalid_http_response_code_exception_8cs.js
│ ├── _json_parser_8cs.html
│ ├── _json_writer_8cs.html
│ ├── _match_create_message_8cs.html
│ ├── _match_join_message_8cs.html
│ ├── _match_leave_message_8cs.html
│ ├── _match_send_message_8cs.html
│ ├── _matchmaker_add_message_8cs.html
│ ├── _matchmaker_remove_message_8cs.html
│ ├── _nakama_2_api_client_8gen_8cs.html
│ ├── _nakama_2_api_client_8gen_8cs.js
│ ├── _nakama_2_client_8cs.html
│ ├── _nakama_2_client_8cs.js
│ ├── _nakama_2_g_zip_http_client_handler_8cs.html
│ ├── _nakama_2_http_request_adapter_8cs.html
│ ├── _nakama_2_http_request_adapter_8cs.js
│ ├── _nakama_2_i_client_8cs.html
│ ├── _nakama_2_i_client_8cs.js
│ ├── _nakama_2_i_http_adapter_8cs.html
│ ├── _nakama_2_i_http_adapter_8cs.js
│ ├── _nakama_2_i_http_adapter_util_8cs.html
│ ├── _nakama_2_i_logger_8cs.html
│ ├── _nakama_2_i_logger_8cs.js
│ ├── _nakama_2_i_session_8cs.html
│ ├── _nakama_2_i_session_8cs.js
│ ├── _nakama_2_preserve_attribute_8cs.html
│ ├── _nakama_2_retry_8cs.html
│ ├── _nakama_2_retry_8cs.js
│ ├── _nakama_2_retry_configuration_8cs.html
│ ├── _nakama_2_retry_configuration_8cs.js
│ ├── _nakama_2_retry_history_8cs.html
│ ├── _nakama_2_retry_invoker_8cs.html
│ ├── _nakama_2_retry_jitter_8cs.html
│ ├── _nakama_2_retry_jitter_8cs.js
│ ├── _nakama_2_retry_listener_8cs.html
│ ├── _nakama_2_retry_listener_8cs.js
│ ├── _nakama_2_session_8cs.html
│ ├── _nakama_2_session_8cs.js
│ ├── _nakama_2_tiny_json_2_json_parser_8cs.html
│ ├── _nakama_2_tiny_json_2_json_writer_8cs.html
│ ├── _nakama_2_transient_exception_delegate_8cs.html
│ ├── _nakama_2_transient_exception_delegate_8cs.js
│ ├── _nakama_2obj_2_debug_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_debug_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_debug_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_release_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_release_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _nakama_2obj_2_release_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _null_logger_8cs.html
│ ├── _party_8cs.html
│ ├── _party_accept_8cs.html
│ ├── _party_close_8cs.html
│ ├── _party_create_8cs.html
│ ├── _party_data_8cs.html
│ ├── _party_data_send_8cs.html
│ ├── _party_join_8cs.html
│ ├── _party_join_request_8cs.html
│ ├── _party_join_request_list_8cs.html
│ ├── _party_leader_8cs.html
│ ├── _party_leave_8cs.html
│ ├── _party_matchmaker_add_8cs.html
│ ├── _party_matchmaker_remove_8cs.html
│ ├── _party_matchmaker_ticket_8cs.html
│ ├── _party_member_remove_8cs.html
│ ├── _party_presence_event_8cs.html
│ ├── _party_promote_8cs.html
│ ├── _party_update_8cs.html
│ ├── _ping_pong_manager_8cs.html
│ ├── _ping_pong_manager_8cs.js
│ ├── _pong_event_args_8cs.html
│ ├── _pong_event_args_8cs.js
│ ├── _presence_util_8cs.html
│ ├── _preserve_attribute_8cs.html
│ ├── _r_e_a_d_m_e_8md.html
│ ├── _release_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _release_2net46_2_nakama_8_assembly_info_8cs.html
│ ├── _release_2net46_2_satori_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _release_2netstandard2_80_2_nakama_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_80_2_satori_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_81_2_nakama_8_assembly_info_8cs.html
│ ├── _release_2netstandard2_81_2_satori_8_assembly_info_8cs.html
│ ├── _retry_8cs.html
│ ├── _retry_8cs.js
│ ├── _retry_configuration_8cs.html
│ ├── _retry_configuration_8cs.js
│ ├── _retry_history_8cs.html
│ ├── _retry_invoker_8cs.html
│ ├── _retry_jitter_8cs.html
│ ├── _retry_jitter_8cs.js
│ ├── _retry_listener_8cs.html
│ ├── _retry_listener_8cs.js
│ ├── _satori_2_api_client_8gen_8cs.html
│ ├── _satori_2_api_client_8gen_8cs.js
│ ├── _satori_2_client_8cs.html
│ ├── _satori_2_client_8cs.js
│ ├── _satori_2_g_zip_http_client_handler_8cs.html
│ ├── _satori_2_http_request_adapter_8cs.html
│ ├── _satori_2_http_request_adapter_8cs.js
│ ├── _satori_2_i_client_8cs.html
│ ├── _satori_2_i_client_8cs.js
│ ├── _satori_2_i_http_adapter_8cs.html
│ ├── _satori_2_i_http_adapter_8cs.js
│ ├── _satori_2_i_http_adapter_util_8cs.html
│ ├── _satori_2_i_logger_8cs.html
│ ├── _satori_2_i_logger_8cs.js
│ ├── _satori_2_i_session_8cs.html
│ ├── _satori_2_i_session_8cs.js
│ ├── _satori_2_preserve_attribute_8cs.html
│ ├── _satori_2_retry_8cs.html
│ ├── _satori_2_retry_8cs.js
│ ├── _satori_2_retry_configuration_8cs.html
│ ├── _satori_2_retry_configuration_8cs.js
│ ├── _satori_2_retry_history_8cs.html
│ ├── _satori_2_retry_invoker_8cs.html
│ ├── _satori_2_retry_jitter_8cs.html
│ ├── _satori_2_retry_jitter_8cs.js
│ ├── _satori_2_retry_listener_8cs.html
│ ├── _satori_2_retry_listener_8cs.js
│ ├── _satori_2_session_8cs.html
│ ├── _satori_2_session_8cs.js
│ ├── _satori_2_tiny_json_2_json_parser_8cs.html
│ ├── _satori_2_tiny_json_2_json_writer_8cs.html
│ ├── _satori_2_transient_exception_delegate_8cs.html
│ ├── _satori_2_transient_exception_delegate_8cs.js
│ ├── _satori_2obj_2_debug_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_debug_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_debug_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_release_2net46_2_8_n_e_t_framework_00_version_0av4_86_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_release_2netstandard2_80_2_8_n_e_t_standard_00_version_0av2_80_8_assembly_attributes_8cs.html
│ ├── _satori_2obj_2_release_2netstandard2_81_2_8_n_e_t_standard_00_version_0av2_81_8_assembly_attributes_8cs.html
│ ├── _sec_web_socket_key_missing_exception_8cs.html
│ ├── _sec_web_socket_key_missing_exception_8cs.js
│ ├── _server_listener_socket_exception_8cs.html
│ ├── _server_listener_socket_exception_8cs.js
│ ├── _session_8cs.html
│ ├── _session_8cs.js
│ ├── _socket_8cs.html
│ ├── _socket_8cs.js
│ ├── _status_follow_message_8cs.html
│ ├── _status_unfollow_message_8cs.html
│ ├── _status_update_message_8cs.html
│ ├── _storage_object_id_8cs.html
│ ├── _storage_object_id_8cs.js
│ ├── _transient_exception_delegate_8cs.html
│ ├── _transient_exception_delegate_8cs.js
│ ├── _web_socket_adapter_8cs.html
│ ├── _web_socket_adapter_8cs.js
│ ├── _web_socket_buffer_overflow_exception_8cs.html
│ ├── _web_socket_buffer_overflow_exception_8cs.js
│ ├── _web_socket_client_factory_8cs.html
│ ├── _web_socket_client_factory_8cs.js
│ ├── _web_socket_client_options_8cs.html
│ ├── _web_socket_client_options_8cs.js
│ ├── _web_socket_error_message_8cs.html
│ ├── _web_socket_frame_8cs.html
│ ├── _web_socket_frame_common_8cs.html
│ ├── _web_socket_frame_reader_8cs.html
│ ├── _web_socket_frame_writer_8cs.html
│ ├── _web_socket_handshake_failed_exception_8cs.html
│ ├── _web_socket_handshake_failed_exception_8cs.js
│ ├── _web_socket_http_context_8cs.html
│ ├── _web_socket_http_context_8cs.js
│ ├── _web_socket_implementation_8cs.html
│ ├── _web_socket_message_envelope_8cs.html
│ ├── _web_socket_op_code_8cs.html
│ ├── _web_socket_read_cursor_8cs.html
│ ├── _web_socket_server_factory_8cs.html
│ ├── _web_socket_server_factory_8cs.js
│ ├── _web_socket_server_options_8cs.html
│ ├── _web_socket_server_options_8cs.js
│ ├── _web_socket_stdlib_adapter_8cs.html
│ ├── _web_socket_stdlib_adapter_8cs.js
│ ├── _web_socket_version_not_supported_exception_8cs.html
│ ├── _web_socket_version_not_supported_exception_8cs.js
│ ├── _write_storage_object_8cs.html
│ ├── _write_storage_object_8cs.js
│ ├── annotated.html
│ ├── annotated_dup.js
│ ├── class_nakama_1_1_api_response_exception-members.html
│ ├── class_nakama_1_1_api_response_exception.html
│ ├── class_nakama_1_1_api_response_exception.js
│ ├── class_nakama_1_1_client-members.html
│ ├── class_nakama_1_1_client.html
│ ├── class_nakama_1_1_client.js
│ ├── class_nakama_1_1_console_1_1_api_response_exception-members.html
│ ├── class_nakama_1_1_console_1_1_api_response_exception.html
│ ├── class_nakama_1_1_console_1_1_api_response_exception.js
│ ├── class_nakama_1_1_http_request_adapter-members.html
│ ├── class_nakama_1_1_http_request_adapter.html
│ ├── class_nakama_1_1_http_request_adapter.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_http_helper-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_http_helper.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.js
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options-members.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options.html
│ ├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options.js
│ ├── class_nakama_1_1_retry-members.html
│ ├── class_nakama_1_1_retry.html
│ ├── class_nakama_1_1_retry.js
│ ├── class_nakama_1_1_retry_configuration-members.html
│ ├── class_nakama_1_1_retry_configuration.html
│ ├── class_nakama_1_1_retry_configuration.js
│ ├── class_nakama_1_1_session-members.html
│ ├── class_nakama_1_1_session.html
│ ├── class_nakama_1_1_session.js
│ ├── class_nakama_1_1_socket-members.html
│ ├── class_nakama_1_1_socket.html
│ ├── class_nakama_1_1_socket.js
│ ├── class_nakama_1_1_storage_object_id-members.html
│ ├── class_nakama_1_1_storage_object_id.html
│ ├── class_nakama_1_1_storage_object_id.js
│ ├── class_nakama_1_1_tests_1_1_api_1_1_authenticate_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_authenticate_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_group_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_group_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_http_error_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_http_error_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_link_unlink_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_link_unlink_test.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_rpc_test-members.html
│ ├── class_nakama_1_1_tests_1_1_api_1_1_rpc_test.html
│ ├── class_nakama_1_1_tests_1_1_awaited_socket_task_test-members.html
│ ├── class_nakama_1_1_tests_1_1_awaited_socket_task_test.html
│ ├── class_nakama_1_1_tests_1_1_cancel_test-members.html
│ ├── class_nakama_1_1_tests_1_1_cancel_test.html
│ ├── class_nakama_1_1_tests_1_1_retry_test-members.html
│ ├── class_nakama_1_1_tests_1_1_retry_test.html
│ ├── class_nakama_1_1_tests_1_1_session_test-members.html
│ ├── class_nakama_1_1_tests_1_1_session_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_party_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_party_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_test.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_user_status_test-members.html
│ ├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_user_status_test.html
│ ├── class_nakama_1_1_tests_1_1_stdout_logger-members.html
│ ├── class_nakama_1_1_tests_1_1_stdout_logger.html
│ ├── class_nakama_1_1_tests_1_1_stdout_logger.js
│ ├── class_nakama_1_1_tests_1_1_tiny_json_parser_test-members.html
│ ├── class_nakama_1_1_tests_1_1_tiny_json_parser_test.html
│ ├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter-members.html
│ ├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.html
│ ├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.js
│ ├── class_nakama_1_1_web_socket_adapter-members.html
│ ├── class_nakama_1_1_web_socket_adapter.html
│ ├── class_nakama_1_1_web_socket_adapter.js
│ ├── class_nakama_1_1_web_socket_stdlib_adapter-members.html
│ ├── class_nakama_1_1_web_socket_stdlib_adapter.html
│ ├── class_nakama_1_1_web_socket_stdlib_adapter.js
│ ├── class_nakama_1_1_write_storage_object-members.html
│ ├── class_nakama_1_1_write_storage_object.html
│ ├── class_nakama_1_1_write_storage_object.js
│ ├── class_satori_1_1_api_response_exception-members.html
│ ├── class_satori_1_1_api_response_exception.html
│ ├── class_satori_1_1_api_response_exception.js
│ ├── class_satori_1_1_client-members.html
│ ├── class_satori_1_1_client.html
│ ├── class_satori_1_1_client.js
│ ├── class_satori_1_1_event-members.html
│ ├── class_satori_1_1_event.html
│ ├── class_satori_1_1_event.js
│ ├── class_satori_1_1_http_request_adapter-members.html
│ ├── class_satori_1_1_http_request_adapter.html
│ ├── class_satori_1_1_http_request_adapter.js
│ ├── class_satori_1_1_retry-members.html
│ ├── class_satori_1_1_retry.html
│ ├── class_satori_1_1_retry.js
│ ├── class_satori_1_1_retry_configuration-members.html
│ ├── class_satori_1_1_retry_configuration.html
│ ├── class_satori_1_1_retry_configuration.js
│ ├── class_satori_1_1_session-members.html
│ ├── class_satori_1_1_session.html
│ ├── class_satori_1_1_session.js
│ ├── class_satori_1_1_tests_1_1_client_test-members.html
│ ├── class_satori_1_1_tests_1_1_client_test.html
│ ├── classes.html
│ ├── clipboard.js
│ ├── cookie.js
│ ├── dir_00db1776877a30bd47a3324e3b896815.html
│ ├── dir_00db1776877a30bd47a3324e3b896815.js
│ ├── dir_0255d041b3ce7964bcd7b11954959c22.html
│ ├── dir_0385b7cc93c13096276fd0475bf94138.html
│ ├── dir_0385b7cc93c13096276fd0475bf94138.js
│ ├── dir_07d4e60c212e220cb70fd11bc65ff95e.html
│ ├── dir_0a71ed179ba9d4357fa1a0aa4e188f77.html
│ ├── dir_0a71ed179ba9d4357fa1a0aa4e188f77.js
│ ├── dir_0acaa047c55e3bbc2ca6716743379b50.html
│ ├── dir_104e9d364d598921197c06c38fc2275c.html
│ ├── dir_1c3008a3c461c137d9f062e2a28e5366.html
│ ├── dir_1c3008a3c461c137d9f062e2a28e5366.js
│ ├── dir_2024f50217af71df819eb31c540cc957.html
│ ├── dir_2024f50217af71df819eb31c540cc957.js
│ ├── dir_223f41b9d4a3aed2d0cd2a771bf2b672.html
│ ├── dir_29bd9dc1cd33dca2d02be697ebc424d5.html
│ ├── dir_29bd9dc1cd33dca2d02be697ebc424d5.js
│ ├── dir_2c78f4ea1566149e6f1239d9a2bbc92d.html
│ ├── dir_2c78f4ea1566149e6f1239d9a2bbc92d.js
│ ├── dir_3771c35781cb72be820bcf0859828876.html
│ ├── dir_40821ca9aa8b0024c09c9271c75bfc8d.html
│ ├── dir_4aba2f75ac06c997db6dcdd45b346bfc.html
│ ├── dir_4aba2f75ac06c997db6dcdd45b346bfc.js
│ ├── dir_4d6966d1911ef40af05228884f817f01.html
│ ├── dir_509efb472faf656a1f9c1c002f3dfbd0.html
│ ├── dir_59425e443f801f1f2fd8bbe4959a3ccf.html
│ ├── dir_5986fb63ee1c250c22ec7255d2796bed.html
│ ├── dir_5986fb63ee1c250c22ec7255d2796bed.js
│ ├── dir_5a43296f26836228c3ddbf8578e994aa.html
│ ├── dir_5a43296f26836228c3ddbf8578e994aa.js
│ ├── dir_5c537d2b32ff2d13d00336fbe6131750.html
│ ├── dir_5c537d2b32ff2d13d00336fbe6131750.js
│ ├── dir_5d1450713377add98c1180fe0eb2f9ae.html
│ ├── dir_5d1450713377add98c1180fe0eb2f9ae.js
│ ├── dir_5eb17383be0272b71916d4988c97ae3c.html
│ ├── dir_5eb17383be0272b71916d4988c97ae3c.js
│ ├── dir_64302e4ed8e680c5e7832e1b7ea09baa.html
│ ├── dir_64302e4ed8e680c5e7832e1b7ea09baa.js
│ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html
│ ├── dir_6c5dd7babc86647cb00b5f49e0afc051.html
│ ├── dir_6c5dd7babc86647cb00b5f49e0afc051.js
│ ├── dir_717cf8a47ded45e56c3041f98a9ca441.html
│ ├── dir_75202c243db9baf385df0aac94b0acc0.html
│ ├── dir_75202c243db9baf385df0aac94b0acc0.js
│ ├── dir_79e598b17822ac3218a31651fbd84230.html
│ ├── dir_7a595d23279f99f2e5346245557e8271.html
│ ├── dir_7a595d23279f99f2e5346245557e8271.js
│ ├── dir_7b1b4a986f21cd07a017e6cd0f74eec4.html
│ ├── dir_81ad01bee8ed91a16e2e56d92ae48530.html
│ ├── dir_82823cd98c87c4bb1483bb7f879dfe68.html
│ ├── dir_87bdc2ec3fb2fe36f0442c7b9fa8c83c.html
│ ├── dir_87bdc2ec3fb2fe36f0442c7b9fa8c83c.js
│ ├── dir_93c065d202f1b2ae4be97868117427d8.html
│ ├── dir_93c065d202f1b2ae4be97868117427d8.js
│ ├── dir_94394ac86fa77e96e8d4c3af72ed61db.html
│ ├── dir_9ded64b83b3f5b23c7937ebd8f5ce2f1.html
│ ├── dir_a159881d357f96df4223872fd74cca14.html
│ ├── dir_aa00dbe797bd24fe05814e1a03a446ba.html
│ ├── dir_b668d86527323370c4668cb8bf07410d.html
│ ├── dir_ba769f4416b2c074a28c6130af43e345.html
│ ├── dir_ba769f4416b2c074a28c6130af43e345.js
│ ├── dir_c0ea682cca75c87761dacf1668992820.html
│ ├── dir_c0ea682cca75c87761dacf1668992820.js
│ ├── dir_c7fa37d54586c2d4e1bdb0bf9742bd86.html
│ ├── dir_c7fa37d54586c2d4e1bdb0bf9742bd86.js
│ ├── dir_ca7d207afbe6ec834644d82c9da0e27f.html
│ ├── dir_ca7d207afbe6ec834644d82c9da0e27f.js
│ ├── dir_cbab373848d17bb13c8f8154bda6a142.html
│ ├── dir_cde5b50139b2efdd71913c8f6e2f5b92.html
│ ├── dir_d0af3520e52159625e5c54b0a0666246.html
│ ├── dir_d0af3520e52159625e5c54b0a0666246.js
│ ├── dir_d28a4824dc47e487b107a5db32ef43c4.html
│ ├── dir_dbdb02b1c6a463d71690e5d1f101f3be.html
│ ├── dir_dbdb02b1c6a463d71690e5d1f101f3be.js
│ ├── dir_e0a5a45ea46034a62177509fd4cc477b.html
│ ├── dir_e55adf3e55c0cf2ab15afcf2abaa2799.html
│ ├── dir_e8b3846043ed55e70c4740c96c71631d.html
│ ├── dir_ec82c3f1a2edb4d01443ada27de98406.html
│ ├── dir_ec82c3f1a2edb4d01443ada27de98406.js
│ ├── dir_f5a6105ca7ea82175c57b6cc08e28f9f.html
│ ├── dir_f82b846bb6a413b95a3fa0edffb6464f.html
│ ├── doxygen.css
│ ├── doxygen_crawl.html
│ ├── dynsections.js
│ ├── files.html
│ ├── files_dup.js
│ ├── functions.html
│ ├── functions_b.html
│ ├── functions_c.html
│ ├── functions_d.html
│ ├── functions_dup.js
│ ├── functions_e.html
│ ├── functions_evnt.html
│ ├── functions_f.html
│ ├── functions_func.html
│ ├── functions_func.js
│ ├── functions_func_b.html
│ ├── functions_func_c.html
│ ├── functions_func_d.html
│ ├── functions_func_e.html
│ ├── functions_func_f.html
│ ├── functions_func_g.html
│ ├── functions_func_h.html
│ ├── functions_func_i.html
│ ├── functions_func_j.html
│ ├── functions_func_k.html
│ ├── functions_func_l.html
│ ├── functions_func_o.html
│ ├── functions_func_p.html
│ ├── functions_func_r.html
│ ├── functions_func_s.html
│ ├── functions_func_t.html
│ ├── functions_func_u.html
│ ├── functions_func_v.html
│ ├── functions_func_w.html
│ ├── functions_g.html
│ ├── functions_h.html
│ ├── functions_i.html
│ ├── functions_j.html
│ ├── functions_k.html
│ ├── functions_l.html
│ ├── functions_m.html
│ ├── functions_n.html
│ ├── functions_o.html
│ ├── functions_p.html
│ ├── functions_prop.html
│ ├── functions_prop.js
│ ├── functions_prop_b.html
│ ├── functions_prop_c.html
│ ├── functions_prop_d.html
│ ├── functions_prop_e.html
│ ├── functions_prop_f.html
│ ├── functions_prop_g.html
│ ├── functions_prop_h.html
│ ├── functions_prop_i.html
│ ├── functions_prop_j.html
│ ├── functions_prop_k.html
│ ├── functions_prop_l.html
│ ├── functions_prop_m.html
│ ├── functions_prop_n.html
│ ├── functions_prop_o.html
│ ├── functions_prop_p.html
│ ├── functions_prop_r.html
│ ├── functions_prop_s.html
│ ├── functions_prop_t.html
│ ├── functions_prop_u.html
│ ├── functions_prop_v.html
│ ├── functions_prop_w.html
│ ├── functions_r.html
│ ├── functions_s.html
│ ├── functions_t.html
│ ├── functions_u.html
│ ├── functions_v.html
│ ├── functions_vars.html
│ ├── functions_w.html
│ ├── hierarchy.html
│ ├── hierarchy.js
│ ├── index.html
│ ├── interface_nakama_1_1_console_1_1_i_api_account_device-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_account_device.html
│ ├── interface_nakama_1_1_console_1_1_i_api_account_device.js
│ ├── interface_nakama_1_1_console_1_1_i_api_channel_message-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_channel_message.html
│ ├── interface_nakama_1_1_console_1_1_i_api_channel_message.js
│ ├── interface_nakama_1_1_console_1_1_i_api_friend-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend.js
│ ├── interface_nakama_1_1_console_1_1_i_api_friend_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend_list.html
│ ├── interface_nakama_1_1_console_1_1_i_api_friend_list.js
│ ├── interface_nakama_1_1_console_1_1_i_api_group-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_group.html
│ ├── interface_nakama_1_1_console_1_1_i_api_group.js
│ ├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record.html
│ ├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record.js
│ ├── interface_nakama_1_1_console_1_1_i_api_notification-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_notification.html
│ ├── interface_nakama_1_1_console_1_1_i_api_notification.js
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object.js
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack.html
│ ├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack.js
│ ├── interface_nakama_1_1_console_1_1_i_api_user-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user.js
│ ├── interface_nakama_1_1_console_1_1_i_api_user_group_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user_group_list.html
│ ├── interface_nakama_1_1_console_1_1_i_api_user_group_list.js
│ ├── interface_nakama_1_1_console_1_1_i_config_warning-members.html
│ ├── interface_nakama_1_1_console_1_1_i_config_warning.html
│ ├── interface_nakama_1_1_console_1_1_i_config_warning.js
│ ├── interface_nakama_1_1_console_1_1_i_console_account_export-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_account_export.html
│ ├── interface_nakama_1_1_console_1_1_i_console_account_export.js
│ ├── interface_nakama_1_1_console_1_1_i_console_authenticate_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_authenticate_request.html
│ ├── interface_nakama_1_1_console_1_1_i_console_authenticate_request.js
│ ├── interface_nakama_1_1_console_1_1_i_console_config-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_config.html
│ ├── interface_nakama_1_1_console_1_1_i_console_config.js
│ ├── interface_nakama_1_1_console_1_1_i_console_console_session-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_console_session.html
│ ├── interface_nakama_1_1_console_1_1_i_console_console_session.js
│ ├── interface_nakama_1_1_console_1_1_i_console_status_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_status_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_status_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_storage_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_storage_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_storage_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request.html
│ ├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request.js
│ ├── interface_nakama_1_1_console_1_1_i_console_user_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_user_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_user_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger.js
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list.html
│ ├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list.js
│ ├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request.html
│ ├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request.js
│ ├── interface_nakama_1_1_console_1_1_i_nakamaapi_account-members.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaapi_account.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaapi_account.js
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account-members.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account.js
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request-members.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request.html
│ ├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request.js
│ ├── interface_nakama_1_1_console_1_1_i_protobuf_any-members.html
│ ├── interface_nakama_1_1_console_1_1_i_protobuf_any.html
│ ├── interface_nakama_1_1_console_1_1_i_protobuf_any.js
│ ├── interface_nakama_1_1_console_1_1_i_runtime_error-members.html
│ ├── interface_nakama_1_1_console_1_1_i_runtime_error.html
│ ├── interface_nakama_1_1_console_1_1_i_runtime_error.js
│ ├── interface_nakama_1_1_console_1_1_i_status_list_status-members.html
│ ├── interface_nakama_1_1_console_1_1_i_status_list_status.html
│ ├── interface_nakama_1_1_console_1_1_i_status_list_status.js
│ ├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group-members.html
│ ├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group.html
│ ├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group.js
│ ├── interface_nakama_1_1_i_api_account-members.html
│ ├── interface_nakama_1_1_i_api_account.html
│ ├── interface_nakama_1_1_i_api_account.js
│ ├── interface_nakama_1_1_i_api_account_apple-members.html
│ ├── interface_nakama_1_1_i_api_account_apple.html
│ ├── interface_nakama_1_1_i_api_account_apple.js
│ ├── interface_nakama_1_1_i_api_account_custom-members.html
│ ├── interface_nakama_1_1_i_api_account_custom.html
│ ├── interface_nakama_1_1_i_api_account_custom.js
│ ├── interface_nakama_1_1_i_api_account_device-members.html
│ ├── interface_nakama_1_1_i_api_account_device.html
│ ├── interface_nakama_1_1_i_api_account_device.js
│ ├── interface_nakama_1_1_i_api_account_email-members.html
│ ├── interface_nakama_1_1_i_api_account_email.html
│ ├── interface_nakama_1_1_i_api_account_email.js
│ ├── interface_nakama_1_1_i_api_account_facebook-members.html
│ ├── interface_nakama_1_1_i_api_account_facebook.html
│ ├── interface_nakama_1_1_i_api_account_facebook.js
│ ├── interface_nakama_1_1_i_api_account_facebook_instant_game-members.html
│ ├── interface_nakama_1_1_i_api_account_facebook_instant_game.html
│ ├── interface_nakama_1_1_i_api_account_facebook_instant_game.js
│ ├── interface_nakama_1_1_i_api_account_game_center-members.html
│ ├── interface_nakama_1_1_i_api_account_game_center.html
│ ├── interface_nakama_1_1_i_api_account_game_center.js
│ ├── interface_nakama_1_1_i_api_account_google-members.html
│ ├── interface_nakama_1_1_i_api_account_google.html
│ ├── interface_nakama_1_1_i_api_account_google.js
│ ├── interface_nakama_1_1_i_api_account_steam-members.html
│ ├── interface_nakama_1_1_i_api_account_steam.html
│ ├── interface_nakama_1_1_i_api_account_steam.js
│ ├── interface_nakama_1_1_i_api_channel_message-members.html
│ ├── interface_nakama_1_1_i_api_channel_message.html
│ ├── interface_nakama_1_1_i_api_channel_message.js
│ ├── interface_nakama_1_1_i_api_channel_message_list-members.html
│ ├── interface_nakama_1_1_i_api_channel_message_list.html
│ ├── interface_nakama_1_1_i_api_channel_message_list.js
│ ├── interface_nakama_1_1_i_api_create_group_request-members.html
│ ├── interface_nakama_1_1_i_api_create_group_request.html
│ ├── interface_nakama_1_1_i_api_create_group_request.js
│ ├── interface_nakama_1_1_i_api_delete_storage_object_id-members.html
│ ├── interface_nakama_1_1_i_api_delete_storage_object_id.html
│ ├── interface_nakama_1_1_i_api_delete_storage_object_id.js
│ ├── interface_nakama_1_1_i_api_delete_storage_objects_request-members.html
│ ├── interface_nakama_1_1_i_api_delete_storage_objects_request.html
│ ├── interface_nakama_1_1_i_api_delete_storage_objects_request.js
│ ├── interface_nakama_1_1_i_api_event-members.html
│ ├── interface_nakama_1_1_i_api_event.html
│ ├── interface_nakama_1_1_i_api_event.js
│ ├── interface_nakama_1_1_i_api_friend-members.html
│ ├── interface_nakama_1_1_i_api_friend.html
│ ├── interface_nakama_1_1_i_api_friend.js
│ ├── interface_nakama_1_1_i_api_friend_list-members.html
│ ├── interface_nakama_1_1_i_api_friend_list.html
│ ├── interface_nakama_1_1_i_api_friend_list.js
│ ├── interface_nakama_1_1_i_api_friends_of_friends_list-members.html
│ ├── interface_nakama_1_1_i_api_friends_of_friends_list.html
│ ├── interface_nakama_1_1_i_api_friends_of_friends_list.js
│ ├── interface_nakama_1_1_i_api_group-members.html
│ ├── interface_nakama_1_1_i_api_group.html
│ ├── interface_nakama_1_1_i_api_group.js
│ ├── interface_nakama_1_1_i_api_group_list-members.html
│ ├── interface_nakama_1_1_i_api_group_list.html
│ ├── interface_nakama_1_1_i_api_group_list.js
│ ├── interface_nakama_1_1_i_api_group_user_list-members.html
│ ├── interface_nakama_1_1_i_api_group_user_list.html
│ ├── interface_nakama_1_1_i_api_group_user_list.js
│ ├── interface_nakama_1_1_i_api_leaderboard_record-members.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record.js
│ ├── interface_nakama_1_1_i_api_leaderboard_record_list-members.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record_list.html
│ ├── interface_nakama_1_1_i_api_leaderboard_record_list.js
│ ├── interface_nakama_1_1_i_api_link_steam_request-members.html
│ ├── interface_nakama_1_1_i_api_link_steam_request.html
│ ├── interface_nakama_1_1_i_api_link_steam_request.js
│ ├── interface_nakama_1_1_i_api_list_subscriptions_request-members.html
│ ├── interface_nakama_1_1_i_api_list_subscriptions_request.html
│ ├── interface_nakama_1_1_i_api_list_subscriptions_request.js
│ ├── interface_nakama_1_1_i_api_match-members.html
│ ├── interface_nakama_1_1_i_api_match.html
│ ├── interface_nakama_1_1_i_api_match.js
│ ├── interface_nakama_1_1_i_api_match_list-members.html
│ ├── interface_nakama_1_1_i_api_match_list.html
│ ├── interface_nakama_1_1_i_api_match_list.js
│ ├── interface_nakama_1_1_i_api_matchmaker_completion_stats-members.html
│ ├── interface_nakama_1_1_i_api_matchmaker_completion_stats.html
│ ├── interface_nakama_1_1_i_api_matchmaker_completion_stats.js
│ ├── interface_nakama_1_1_i_api_matchmaker_stats-members.html
│ ├── interface_nakama_1_1_i_api_matchmaker_stats.html
│ ├── interface_nakama_1_1_i_api_matchmaker_stats.js
│ ├── interface_nakama_1_1_i_api_notification-members.html
│ ├── interface_nakama_1_1_i_api_notification.html
│ ├── interface_nakama_1_1_i_api_notification.js
│ ├── interface_nakama_1_1_i_api_notification_list-members.html
│ ├── interface_nakama_1_1_i_api_notification_list.html
│ ├── interface_nakama_1_1_i_api_notification_list.js
│ ├── interface_nakama_1_1_i_api_party-members.html
│ ├── interface_nakama_1_1_i_api_party.html
│ ├── interface_nakama_1_1_i_api_party.js
│ ├── interface_nakama_1_1_i_api_party_list-members.html
│ ├── interface_nakama_1_1_i_api_party_list.html
│ ├── interface_nakama_1_1_i_api_party_list.js
│ ├── interface_nakama_1_1_i_api_read_storage_object_id-members.html
│ ├── interface_nakama_1_1_i_api_read_storage_object_id.html
│ ├── interface_nakama_1_1_i_api_read_storage_object_id.js
│ ├── interface_nakama_1_1_i_api_read_storage_objects_request-members.html
│ ├── interface_nakama_1_1_i_api_read_storage_objects_request.html
│ ├── interface_nakama_1_1_i_api_read_storage_objects_request.js
│ ├── interface_nakama_1_1_i_api_rpc-members.html
│ ├── interface_nakama_1_1_i_api_rpc.html
│ ├── interface_nakama_1_1_i_api_rpc.js
│ ├── interface_nakama_1_1_i_api_session-members.html
│ ├── interface_nakama_1_1_i_api_session.html
│ ├── interface_nakama_1_1_i_api_session.js
│ ├── interface_nakama_1_1_i_api_session_logout_request-members.html
│ ├── interface_nakama_1_1_i_api_session_logout_request.html
│ ├── interface_nakama_1_1_i_api_session_logout_request.js
│ ├── interface_nakama_1_1_i_api_session_refresh_request-members.html
│ ├── interface_nakama_1_1_i_api_session_refresh_request.html
│ ├── interface_nakama_1_1_i_api_session_refresh_request.js
│ ├── interface_nakama_1_1_i_api_storage_object-members.html
│ ├── interface_nakama_1_1_i_api_storage_object.html
│ ├── interface_nakama_1_1_i_api_storage_object.js
│ ├── interface_nakama_1_1_i_api_storage_object_ack-members.html
│ ├── interface_nakama_1_1_i_api_storage_object_ack.html
│ ├── interface_nakama_1_1_i_api_storage_object_ack.js
│ ├── interface_nakama_1_1_i_api_storage_object_acks-members.html
│ ├── interface_nakama_1_1_i_api_storage_object_acks.html
│ ├── interface_nakama_1_1_i_api_storage_object_acks.js
│ ├── interface_nakama_1_1_i_api_storage_object_list-members.html
│ ├── interface_nakama_1_1_i_api_storage_object_list.html
│ ├── interface_nakama_1_1_i_api_storage_object_list.js
│ ├── interface_nakama_1_1_i_api_storage_objects-members.html
│ ├── interface_nakama_1_1_i_api_storage_objects.html
│ ├── interface_nakama_1_1_i_api_storage_objects.js
│ ├── interface_nakama_1_1_i_api_subscription_list-members.html
│ ├── interface_nakama_1_1_i_api_subscription_list.html
│ ├── interface_nakama_1_1_i_api_subscription_list.js
│ ├── interface_nakama_1_1_i_api_tournament-members.html
│ ├── interface_nakama_1_1_i_api_tournament.html
│ ├── interface_nakama_1_1_i_api_tournament.js
│ ├── interface_nakama_1_1_i_api_tournament_list-members.html
│ ├── interface_nakama_1_1_i_api_tournament_list.html
│ ├── interface_nakama_1_1_i_api_tournament_list.js
│ ├── interface_nakama_1_1_i_api_tournament_record_list-members.html
│ ├── interface_nakama_1_1_i_api_tournament_record_list.html
│ ├── interface_nakama_1_1_i_api_tournament_record_list.js
│ ├── interface_nakama_1_1_i_api_update_account_request-members.html
│ ├── interface_nakama_1_1_i_api_update_account_request.html
│ ├── interface_nakama_1_1_i_api_update_account_request.js
│ ├── interface_nakama_1_1_i_api_update_group_request-members.html
│ ├── interface_nakama_1_1_i_api_update_group_request.html
│ ├── interface_nakama_1_1_i_api_update_group_request.js
│ ├── interface_nakama_1_1_i_api_user-members.html
│ ├── interface_nakama_1_1_i_api_user.html
│ ├── interface_nakama_1_1_i_api_user.js
│ ├── interface_nakama_1_1_i_api_user_group_list-members.html
│ ├── interface_nakama_1_1_i_api_user_group_list.html
│ ├── interface_nakama_1_1_i_api_user_group_list.js
│ ├── interface_nakama_1_1_i_api_users-members.html
│ ├── interface_nakama_1_1_i_api_users.html
│ ├── interface_nakama_1_1_i_api_users.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_apple_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_apple_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_apple_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_facebook_instant_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_facebook_instant_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_facebook_instant_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_google_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_google_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_google_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_huawei_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_huawei_request.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_huawei_request.js
│ ├── interface_nakama_1_1_i_api_validate_purchase_response-members.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_response.html
│ ├── interface_nakama_1_1_i_api_validate_purchase_response.js
│ ├── interface_nakama_1_1_i_api_validate_subscription_apple_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_apple_request.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_apple_request.js
│ ├── interface_nakama_1_1_i_api_validate_subscription_google_request-members.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_google_request.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_google_request.js
│ ├── interface_nakama_1_1_i_api_validate_subscription_response-members.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_response.html
│ ├── interface_nakama_1_1_i_api_validate_subscription_response.js
│ ├── interface_nakama_1_1_i_api_validated_purchase-members.html
│ ├── interface_nakama_1_1_i_api_validated_purchase.html
│ ├── interface_nakama_1_1_i_api_validated_purchase.js
│ ├── interface_nakama_1_1_i_api_validated_subscription-members.html
│ ├── interface_nakama_1_1_i_api_validated_subscription.html
│ ├── interface_nakama_1_1_i_api_validated_subscription.js
│ ├── interface_nakama_1_1_i_api_write_storage_object-members.html
│ ├── interface_nakama_1_1_i_api_write_storage_object.html
│ ├── interface_nakama_1_1_i_api_write_storage_object.js
│ ├── interface_nakama_1_1_i_api_write_storage_objects_request-members.html
│ ├── interface_nakama_1_1_i_api_write_storage_objects_request.html
│ ├── interface_nakama_1_1_i_api_write_storage_objects_request.js
│ ├── interface_nakama_1_1_i_channel-members.html
│ ├── interface_nakama_1_1_i_channel.html
│ ├── interface_nakama_1_1_i_channel.js
│ ├── interface_nakama_1_1_i_channel_message_ack-members.html
│ ├── interface_nakama_1_1_i_channel_message_ack.html
│ ├── interface_nakama_1_1_i_channel_message_ack.js
│ ├── interface_nakama_1_1_i_channel_presence_event-members.html
│ ├── interface_nakama_1_1_i_channel_presence_event.html
│ ├── interface_nakama_1_1_i_channel_presence_event.js
│ ├── interface_nakama_1_1_i_client-members.html
│ ├── interface_nakama_1_1_i_client.html
│ ├── interface_nakama_1_1_i_client.js
│ ├── interface_nakama_1_1_i_friends_of_friends_list_friend_of_friend-members.html
│ ├── interface_nakama_1_1_i_friends_of_friends_list_friend_of_friend.html
│ ├── interface_nakama_1_1_i_friends_of_friends_list_friend_of_friend.js
│ ├── interface_nakama_1_1_i_group_user_list_group_user-members.html
│ ├── interface_nakama_1_1_i_group_user_list_group_user.html
│ ├── interface_nakama_1_1_i_group_user_list_group_user.js
│ ├── interface_nakama_1_1_i_http_adapter-members.html
│ ├── interface_nakama_1_1_i_http_adapter.html
│ ├── interface_nakama_1_1_i_http_adapter.js
│ ├── interface_nakama_1_1_i_logger-members.html
│ ├── interface_nakama_1_1_i_logger.html
│ ├── interface_nakama_1_1_i_logger.js
│ ├── interface_nakama_1_1_i_match-members.html
│ ├── interface_nakama_1_1_i_match.html
│ ├── interface_nakama_1_1_i_match.js
│ ├── interface_nakama_1_1_i_match_presence_event-members.html
│ ├── interface_nakama_1_1_i_match_presence_event.html
│ ├── interface_nakama_1_1_i_match_presence_event.js
│ ├── interface_nakama_1_1_i_match_state-members.html
│ ├── interface_nakama_1_1_i_match_state.html
│ ├── interface_nakama_1_1_i_match_state.js
│ ├── interface_nakama_1_1_i_matchmaker_matched-members.html
│ ├── interface_nakama_1_1_i_matchmaker_matched.html
│ ├── interface_nakama_1_1_i_matchmaker_matched.js
│ ├── interface_nakama_1_1_i_matchmaker_ticket-members.html
│ ├── interface_nakama_1_1_i_matchmaker_ticket.html
│ ├── interface_nakama_1_1_i_matchmaker_ticket.js
│ ├── interface_nakama_1_1_i_matchmaker_user-members.html
│ ├── interface_nakama_1_1_i_matchmaker_user.html
│ ├── interface_nakama_1_1_i_matchmaker_user.js
│ ├── interface_nakama_1_1_i_party-members.html
│ ├── interface_nakama_1_1_i_party.html
│ ├── interface_nakama_1_1_i_party.js
│ ├── interface_nakama_1_1_i_party_close-members.html
│ ├── interface_nakama_1_1_i_party_close.html
│ ├── interface_nakama_1_1_i_party_close.js
│ ├── interface_nakama_1_1_i_party_data-members.html
│ ├── interface_nakama_1_1_i_party_data.html
│ ├── interface_nakama_1_1_i_party_data.js
│ ├── interface_nakama_1_1_i_party_join_request-members.html
│ ├── interface_nakama_1_1_i_party_join_request.html
│ ├── interface_nakama_1_1_i_party_join_request.js
│ ├── interface_nakama_1_1_i_party_leader-members.html
│ ├── interface_nakama_1_1_i_party_leader.html
│ ├── interface_nakama_1_1_i_party_leader.js
│ ├── interface_nakama_1_1_i_party_matchmaker_ticket-members.html
│ ├── interface_nakama_1_1_i_party_matchmaker_ticket.html
│ ├── interface_nakama_1_1_i_party_matchmaker_ticket.js
│ ├── interface_nakama_1_1_i_party_presence_event-members.html
│ ├── interface_nakama_1_1_i_party_presence_event.html
│ ├── interface_nakama_1_1_i_party_presence_event.js
│ ├── interface_nakama_1_1_i_party_update-members.html
│ ├── interface_nakama_1_1_i_party_update.html
│ ├── interface_nakama_1_1_i_party_update.js
│ ├── interface_nakama_1_1_i_protobuf_any-members.html
│ ├── interface_nakama_1_1_i_protobuf_any.html
│ ├── interface_nakama_1_1_i_protobuf_any.js
│ ├── interface_nakama_1_1_i_rpc_status-members.html
│ ├── interface_nakama_1_1_i_rpc_status.html
│ ├── interface_nakama_1_1_i_rpc_status.js
│ ├── interface_nakama_1_1_i_session-members.html
│ ├── interface_nakama_1_1_i_session.html
│ ├── interface_nakama_1_1_i_session.js
│ ├── interface_nakama_1_1_i_socket-members.html
│ ├── interface_nakama_1_1_i_socket.html
│ ├── interface_nakama_1_1_i_socket.js
│ ├── interface_nakama_1_1_i_socket_adapter-members.html
│ ├── interface_nakama_1_1_i_socket_adapter.html
│ ├── interface_nakama_1_1_i_socket_adapter.js
│ ├── interface_nakama_1_1_i_status-members.html
│ ├── interface_nakama_1_1_i_status.html
│ ├── interface_nakama_1_1_i_status.js
│ ├── interface_nakama_1_1_i_status_presence_event-members.html
│ ├── interface_nakama_1_1_i_status_presence_event.html
│ ├── interface_nakama_1_1_i_status_presence_event.js
│ ├── interface_nakama_1_1_i_stream-members.html
│ ├── interface_nakama_1_1_i_stream.html
│ ├── interface_nakama_1_1_i_stream.js
│ ├── interface_nakama_1_1_i_stream_presence_event-members.html
│ ├── interface_nakama_1_1_i_stream_presence_event.html
│ ├── interface_nakama_1_1_i_stream_presence_event.js
│ ├── interface_nakama_1_1_i_stream_state-members.html
│ ├── interface_nakama_1_1_i_stream_state.html
│ ├── interface_nakama_1_1_i_stream_state.js
│ ├── interface_nakama_1_1_i_user_group_list_user_group-members.html
│ ├── interface_nakama_1_1_i_user_group_list_user_group.html
│ ├── interface_nakama_1_1_i_user_group_list_user_group.js
│ ├── interface_nakama_1_1_i_user_presence-members.html
│ ├── interface_nakama_1_1_i_user_presence.html
│ ├── interface_nakama_1_1_i_user_presence.js
│ ├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write-members.html
│ ├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write.html
│ ├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write.js
│ ├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write-members.html
│ ├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write.html
│ ├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.js
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory-members.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.html
│ ├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.js
│ ├── interface_nakama_1_1_tests_1_1_i_nested_test_object-members.html
│ ├── interface_nakama_1_1_tests_1_1_i_nested_test_object.html
│ ├── interface_nakama_1_1_tests_1_1_i_test_object-members.html
│ ├── interface_nakama_1_1_tests_1_1_i_test_object.html
│ ├── interface_satori_1_1_i_api_authenticate_logout_request-members.html
│ ├── interface_satori_1_1_i_api_authenticate_logout_request.html
│ ├── interface_satori_1_1_i_api_authenticate_logout_request.js
│ ├── interface_satori_1_1_i_api_authenticate_refresh_request-members.html
│ ├── interface_satori_1_1_i_api_authenticate_refresh_request.html
│ ├── interface_satori_1_1_i_api_authenticate_refresh_request.js
│ ├── interface_satori_1_1_i_api_authenticate_request-members.html
│ ├── interface_satori_1_1_i_api_authenticate_request.html
│ ├── interface_satori_1_1_i_api_authenticate_request.js
│ ├── interface_satori_1_1_i_api_event-members.html
│ ├── interface_satori_1_1_i_api_event.html
│ ├── interface_satori_1_1_i_api_event.js
│ ├── interface_satori_1_1_i_api_event_request-members.html
│ ├── interface_satori_1_1_i_api_event_request.html
│ ├── interface_satori_1_1_i_api_event_request.js
│ ├── interface_satori_1_1_i_api_experiment-members.html
│ ├── interface_satori_1_1_i_api_experiment.html
│ ├── interface_satori_1_1_i_api_experiment.js
│ ├── interface_satori_1_1_i_api_experiment_list-members.html
│ ├── interface_satori_1_1_i_api_experiment_list.html
│ ├── interface_satori_1_1_i_api_experiment_list.js
│ ├── interface_satori_1_1_i_api_flag-members.html
│ ├── interface_satori_1_1_i_api_flag.html
│ ├── interface_satori_1_1_i_api_flag.js
│ ├── interface_satori_1_1_i_api_flag_list-members.html
│ ├── interface_satori_1_1_i_api_flag_list.html
│ ├── interface_satori_1_1_i_api_flag_list.js
│ ├── interface_satori_1_1_i_api_flag_override-members.html
│ ├── interface_satori_1_1_i_api_flag_override.html
│ ├── interface_satori_1_1_i_api_flag_override.js
│ ├── interface_satori_1_1_i_api_flag_override_list-members.html
│ ├── interface_satori_1_1_i_api_flag_override_list.html
│ ├── interface_satori_1_1_i_api_flag_override_list.js
│ ├── interface_satori_1_1_i_api_flag_override_value-members.html
│ ├── interface_satori_1_1_i_api_flag_override_value.html
│ ├── interface_satori_1_1_i_api_flag_override_value.js
│ ├── interface_satori_1_1_i_api_get_message_list_response-members.html
│ ├── interface_satori_1_1_i_api_get_message_list_response.html
│ ├── interface_satori_1_1_i_api_get_message_list_response.js
│ ├── interface_satori_1_1_i_api_identify_request-members.html
│ ├── interface_satori_1_1_i_api_identify_request.html
│ ├── interface_satori_1_1_i_api_identify_request.js
│ ├── interface_satori_1_1_i_api_live_event-members.html
│ ├── interface_satori_1_1_i_api_live_event.html
│ ├── interface_satori_1_1_i_api_live_event.js
│ ├── interface_satori_1_1_i_api_live_event_list-members.html
│ ├── interface_satori_1_1_i_api_live_event_list.html
│ ├── interface_satori_1_1_i_api_live_event_list.js
│ ├── interface_satori_1_1_i_api_message-members.html
│ ├── interface_satori_1_1_i_api_message.html
│ ├── interface_satori_1_1_i_api_message.js
│ ├── interface_satori_1_1_i_api_properties-members.html
│ ├── interface_satori_1_1_i_api_properties.html
│ ├── interface_satori_1_1_i_api_properties.js
│ ├── interface_satori_1_1_i_api_session-members.html
│ ├── interface_satori_1_1_i_api_session.html
│ ├── interface_satori_1_1_i_api_session.js
│ ├── interface_satori_1_1_i_api_update_message_request-members.html
│ ├── interface_satori_1_1_i_api_update_message_request.html
│ ├── interface_satori_1_1_i_api_update_message_request.js
│ ├── interface_satori_1_1_i_api_update_properties_request-members.html
│ ├── interface_satori_1_1_i_api_update_properties_request.html
│ ├── interface_satori_1_1_i_api_update_properties_request.js
│ ├── interface_satori_1_1_i_client-members.html
│ ├── interface_satori_1_1_i_client.html
│ ├── interface_satori_1_1_i_client.js
│ ├── interface_satori_1_1_i_flag_value_change_reason-members.html
│ ├── interface_satori_1_1_i_flag_value_change_reason.html
│ ├── interface_satori_1_1_i_flag_value_change_reason.js
│ ├── interface_satori_1_1_i_http_adapter-members.html
│ ├── interface_satori_1_1_i_http_adapter.html
│ ├── interface_satori_1_1_i_http_adapter.js
│ ├── interface_satori_1_1_i_logger-members.html
│ ├── interface_satori_1_1_i_logger.html
│ ├── interface_satori_1_1_i_logger.js
│ ├── interface_satori_1_1_i_protobuf_any-members.html
│ ├── interface_satori_1_1_i_protobuf_any.html
│ ├── interface_satori_1_1_i_protobuf_any.js
│ ├── interface_satori_1_1_i_rpc_status-members.html
│ ├── interface_satori_1_1_i_rpc_status.html
│ ├── interface_satori_1_1_i_rpc_status.js
│ ├── interface_satori_1_1_i_session-members.html
│ ├── interface_satori_1_1_i_session.html
│ ├── interface_satori_1_1_i_session.js
│ ├── jquery.js
│ ├── md__2_users_2flavio_2_projects_2heroiclabs_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2gp_2_documents_2_git_hub_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2gp_2_git_hub_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2joao_2_projects_2heroic_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md__2_users_2novabyte_2_heroic-_labs_2_projects_2nakama-dotnet_2_c_h_a_n_g_e_l_o_g.html
│ ├── md___users_sean__documents__git_hub_nakama_dotnet__c_h_a_n_g_e_l_o_g.html
│ ├── md___users_tom_heroic_projects_nakama_dotnet__c_h_a_n_g_e_l_o_g.html
│ ├── md__c_h_a_n_g_e_l_o_g.html
│ ├── md__r_e_a_d_m_e.html
│ ├── md__r_e_l_e_a_s_e_i_n_s_t.html
│ ├── md__satori__tests__r_e_a_d_m_e.html
│ ├── md_codegen__r_e_a_d_m_e.html
│ ├── menu.js
│ ├── menudata.js
│ ├── namespace_nakama.html
│ ├── namespace_nakama.js
│ ├── namespace_nakama_1_1_console.html
│ ├── namespace_nakama_1_1_console.js
│ ├── namespace_nakama_1_1_ninja.html
│ ├── namespace_nakama_1_1_ninja.js
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets.html
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets.js
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions.html
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions.js
│ ├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_internal.html
│ ├── namespace_nakama_1_1_tests.html
│ ├── namespace_nakama_1_1_tests.js
│ ├── namespace_nakama_1_1_tests_1_1_api.html
│ ├── namespace_nakama_1_1_tests_1_1_api.js
│ ├── namespace_nakama_1_1_tests_1_1_socket.html
│ ├── namespace_nakama_1_1_tests_1_1_socket.js
│ ├── namespace_nakama_1_1_tiny_json.html
│ ├── namespace_satori.html
│ ├── namespace_satori.js
│ ├── namespace_satori_1_1_tests.html
│ ├── namespace_satori_1_1_tests.js
│ ├── namespace_satori_1_1_tiny_json.html
│ ├── namespacemembers.html
│ ├── namespacemembers_enum.html
│ ├── namespacemembers_func.html
│ ├── namespaces.html
│ ├── namespaces_dup.js
│ ├── navtree.css
│ ├── navtree.js
│ ├── navtreedata.js
│ ├── navtreeindex0.js
│ ├── navtreeindex1.js
│ ├── navtreeindex10.js
│ ├── navtreeindex11.js
│ ├── navtreeindex12.js
│ ├── navtreeindex13.js
│ ├── navtreeindex2.js
│ ├── navtreeindex3.js
│ ├── navtreeindex4.js
│ ├── navtreeindex5.js
│ ├── navtreeindex6.js
│ ├── navtreeindex7.js
│ ├── navtreeindex8.js
│ ├── navtreeindex9.js
│ ├── net46_2_nakama_8_assembly_info_8cs.html
│ ├── net46_2_satori_8_assembly_info_8cs.html
│ ├── netstandard2_80_2_nakama_8_assembly_info_8cs.html
│ ├── netstandard2_80_2_satori_8_assembly_info_8cs.html
│ ├── pages.html
│ ├── resize.js
│ ├── search/
│ │ ├── all_0.html
│ │ ├── all_0.js
│ │ ├── all_1.html
│ │ ├── all_1.js
│ │ ├── all_10.html
│ │ ├── all_10.js
│ │ ├── all_11.html
│ │ ├── all_11.js
│ │ ├── all_12.html
│ │ ├── all_12.js
│ │ ├── all_13.html
│ │ ├── all_13.js
│ │ ├── all_14.html
│ │ ├── all_14.js
│ │ ├── all_15.html
│ │ ├── all_15.js
│ │ ├── all_2.html
│ │ ├── all_2.js
│ │ ├── all_3.html
│ │ ├── all_3.js
│ │ ├── all_4.html
│ │ ├── all_4.js
│ │ ├── all_5.html
│ │ ├── all_5.js
│ │ ├── all_6.html
│ │ ├── all_6.js
│ │ ├── all_7.html
│ │ ├── all_7.js
│ │ ├── all_8.html
│ │ ├── all_8.js
│ │ ├── all_9.html
│ │ ├── all_9.js
│ │ ├── all_a.html
│ │ ├── all_a.js
│ │ ├── all_b.html
│ │ ├── all_b.js
│ │ ├── all_c.html
│ │ ├── all_c.js
│ │ ├── all_d.html
│ │ ├── all_d.js
│ │ ├── all_e.html
│ │ ├── all_e.js
│ │ ├── all_f.html
│ │ ├── all_f.js
│ │ ├── classes_0.html
│ │ ├── classes_0.js
│ │ ├── classes_1.html
│ │ ├── classes_1.js
│ │ ├── classes_2.html
│ │ ├── classes_2.js
│ │ ├── classes_3.html
│ │ ├── classes_3.js
│ │ ├── classes_4.html
│ │ ├── classes_4.js
│ │ ├── classes_5.html
│ │ ├── classes_5.js
│ │ ├── classes_6.html
│ │ ├── classes_6.js
│ │ ├── classes_7.html
│ │ ├── classes_7.js
│ │ ├── classes_8.html
│ │ ├── classes_8.js
│ │ ├── classes_9.html
│ │ ├── classes_9.js
│ │ ├── classes_a.js
│ │ ├── classes_b.js
│ │ ├── classes_c.js
│ │ ├── enums_0.html
│ │ ├── enums_0.js
│ │ ├── enums_1.html
│ │ ├── enums_1.js
│ │ ├── enums_2.js
│ │ ├── enumvalues_0.html
│ │ ├── enumvalues_0.js
│ │ ├── enumvalues_1.html
│ │ ├── enumvalues_1.js
│ │ ├── enumvalues_2.html
│ │ ├── enumvalues_2.js
│ │ ├── enumvalues_3.html
│ │ ├── enumvalues_3.js
│ │ ├── enumvalues_4.html
│ │ ├── enumvalues_4.js
│ │ ├── enumvalues_5.html
│ │ ├── enumvalues_5.js
│ │ ├── enumvalues_6.html
│ │ ├── enumvalues_6.js
│ │ ├── enumvalues_7.html
│ │ ├── enumvalues_7.js
│ │ ├── enumvalues_8.js
│ │ ├── enumvalues_9.js
│ │ ├── enumvalues_a.js
│ │ ├── enumvalues_b.js
│ │ ├── enumvalues_c.js
│ │ ├── enumvalues_d.js
│ │ ├── events_0.html
│ │ ├── events_0.js
│ │ ├── events_1.html
│ │ ├── events_1.js
│ │ ├── events_2.html
│ │ ├── events_2.js
│ │ ├── files_0.html
│ │ ├── files_0.js
│ │ ├── files_1.html
│ │ ├── files_1.js
│ │ ├── files_2.html
│ │ ├── files_2.js
│ │ ├── files_3.html
│ │ ├── files_3.js
│ │ ├── files_4.html
│ │ ├── files_4.js
│ │ ├── files_5.html
│ │ ├── files_5.js
│ │ ├── files_6.html
│ │ ├── files_6.js
│ │ ├── files_7.html
│ │ ├── files_7.js
│ │ ├── files_8.html
│ │ ├── files_8.js
│ │ ├── files_9.html
│ │ ├── files_9.js
│ │ ├── files_a.html
│ │ ├── files_a.js
│ │ ├── files_b.html
│ │ ├── files_b.js
│ │ ├── files_c.html
│ │ ├── files_c.js
│ │ ├── files_d.html
│ │ ├── files_d.js
│ │ ├── files_e.js
│ │ ├── files_f.js
│ │ ├── functions_0.html
│ │ ├── functions_0.js
│ │ ├── functions_1.html
│ │ ├── functions_1.js
│ │ ├── functions_10.html
│ │ ├── functions_10.js
│ │ ├── functions_11.html
│ │ ├── functions_11.js
│ │ ├── functions_12.html
│ │ ├── functions_12.js
│ │ ├── functions_13.html
│ │ ├── functions_13.js
│ │ ├── functions_2.html
│ │ ├── functions_2.js
│ │ ├── functions_3.html
│ │ ├── functions_3.js
│ │ ├── functions_4.html
│ │ ├── functions_4.js
│ │ ├── functions_5.html
│ │ ├── functions_5.js
│ │ ├── functions_6.html
│ │ ├── functions_6.js
│ │ ├── functions_7.html
│ │ ├── functions_7.js
│ │ ├── functions_8.html
│ │ ├── functions_8.js
│ │ ├── functions_9.html
│ │ ├── functions_9.js
│ │ ├── functions_a.html
│ │ ├── functions_a.js
│ │ ├── functions_b.html
│ │ ├── functions_b.js
│ │ ├── functions_c.html
│ │ ├── functions_c.js
│ │ ├── functions_d.html
│ │ ├── functions_d.js
│ │ ├── functions_e.html
│ │ ├── functions_e.js
│ │ ├── functions_f.html
│ │ ├── functions_f.js
│ │ ├── namespaces_0.html
│ │ ├── namespaces_0.js
│ │ ├── namespaces_1.js
│ │ ├── nomatches.html
│ │ ├── pages_0.html
│ │ ├── pages_0.js
│ │ ├── pages_1.html
│ │ ├── pages_1.js
│ │ ├── pages_2.js
│ │ ├── properties_0.html
│ │ ├── properties_0.js
│ │ ├── properties_1.html
│ │ ├── properties_1.js
│ │ ├── properties_10.html
│ │ ├── properties_10.js
│ │ ├── properties_11.html
│ │ ├── properties_11.js
│ │ ├── properties_12.html
│ │ ├── properties_12.js
│ │ ├── properties_13.html
│ │ ├── properties_13.js
│ │ ├── properties_14.html
│ │ ├── properties_14.js
│ │ ├── properties_15.html
│ │ ├── properties_15.js
│ │ ├── properties_2.html
│ │ ├── properties_2.js
│ │ ├── properties_3.html
│ │ ├── properties_3.js
│ │ ├── properties_4.html
│ │ ├── properties_4.js
│ │ ├── properties_5.html
│ │ ├── properties_5.js
│ │ ├── properties_6.html
│ │ ├── properties_6.js
│ │ ├── properties_7.html
│ │ ├── properties_7.js
│ │ ├── properties_8.html
│ │ ├── properties_8.js
│ │ ├── properties_9.html
│ │ ├── properties_9.js
│ │ ├── properties_a.html
│ │ ├── properties_a.js
│ │ ├── properties_b.html
│ │ ├── properties_b.js
│ │ ├── properties_c.html
│ │ ├── properties_c.js
│ │ ├── properties_d.html
│ │ ├── properties_d.js
│ │ ├── properties_e.html
│ │ ├── properties_e.js
│ │ ├── properties_f.html
│ │ ├── properties_f.js
│ │ ├── search.css
│ │ ├── search.js
│ │ ├── searchdata.js
│ │ ├── variables_0.html
│ │ ├── variables_0.js
│ │ ├── variables_1.html
│ │ └── variables_1.js
│ └── tabs.css
├── index.html
└── latex/
├── Makefile
├── annotated.tex
├── class_nakama_1_1_api_response_exception.eps
├── class_nakama_1_1_api_response_exception.tex
├── class_nakama_1_1_client.eps
├── class_nakama_1_1_client.tex
├── class_nakama_1_1_console_1_1_api_response_exception.eps
├── class_nakama_1_1_console_1_1_api_response_exception.tex
├── class_nakama_1_1_http_request_adapter.eps
├── class_nakama_1_1_http_request_adapter.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_pool_1_1_public_buffer_memory_stream.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_entity_too_large_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_invalid_http_response_code_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_sec_web_socket_key_missing_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_server_listener_socket_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_buffer_overflow_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_handshake_failed_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions_1_1_web_socket_version_not_supported_exception.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_http_helper.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_ping_pong_manager.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_pong_event_args.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_factory.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_client_options.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_http_context.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.eps
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_factory.tex
├── class_nakama_1_1_ninja_1_1_web_sockets_1_1_web_socket_server_options.tex
├── class_nakama_1_1_retry.tex
├── class_nakama_1_1_retry_configuration.tex
├── class_nakama_1_1_session.eps
├── class_nakama_1_1_session.tex
├── class_nakama_1_1_socket.eps
├── class_nakama_1_1_socket.tex
├── class_nakama_1_1_storage_object_id.eps
├── class_nakama_1_1_storage_object_id.tex
├── class_nakama_1_1_tests_1_1_api_1_1_authenticate_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_group_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_http_error_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test.eps
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_around_owner_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test.eps
├── class_nakama_1_1_tests_1_1_api_1_1_leaderboard_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_link_unlink_test.tex
├── class_nakama_1_1_tests_1_1_api_1_1_rpc_test.tex
├── class_nakama_1_1_tests_1_1_awaited_socket_task_test.eps
├── class_nakama_1_1_tests_1_1_awaited_socket_task_test.tex
├── class_nakama_1_1_tests_1_1_cancel_test.tex
├── class_nakama_1_1_tests_1_1_retry_test.tex
├── class_nakama_1_1_tests_1_1_session_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_channel_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_match_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_matchmaker_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_notification_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_party_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test.eps
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_rpc_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_test.tex
├── class_nakama_1_1_tests_1_1_socket_1_1_web_socket_user_status_test.tex
├── class_nakama_1_1_tests_1_1_stdout_logger.eps
├── class_nakama_1_1_tests_1_1_stdout_logger.tex
├── class_nakama_1_1_tests_1_1_tiny_json_parser_test.tex
├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.eps
├── class_nakama_1_1_tests_1_1_transient_exception_http_adapter.tex
├── class_nakama_1_1_web_socket_adapter.eps
├── class_nakama_1_1_web_socket_adapter.tex
├── class_nakama_1_1_web_socket_stdlib_adapter.eps
├── class_nakama_1_1_web_socket_stdlib_adapter.tex
├── class_nakama_1_1_write_storage_object.eps
├── class_nakama_1_1_write_storage_object.tex
├── class_satori_1_1_api_response_exception.eps
├── class_satori_1_1_api_response_exception.tex
├── class_satori_1_1_client.eps
├── class_satori_1_1_client.tex
├── class_satori_1_1_event.tex
├── class_satori_1_1_http_request_adapter.eps
├── class_satori_1_1_http_request_adapter.tex
├── class_satori_1_1_session.eps
├── class_satori_1_1_session.tex
├── class_satori_1_1_tests_1_1_client_test.tex
├── doxygen.sty
├── hierarchy.tex
├── index.tex
├── interface_nakama_1_1_console_1_1_i_api_account_device.tex
├── interface_nakama_1_1_console_1_1_i_api_channel_message.tex
├── interface_nakama_1_1_console_1_1_i_api_friend.tex
├── interface_nakama_1_1_console_1_1_i_api_friend_list.tex
├── interface_nakama_1_1_console_1_1_i_api_group.tex
├── interface_nakama_1_1_console_1_1_i_api_leaderboard_record.tex
├── interface_nakama_1_1_console_1_1_i_api_notification.tex
├── interface_nakama_1_1_console_1_1_i_api_storage_object.tex
├── interface_nakama_1_1_console_1_1_i_api_storage_object_ack.tex
├── interface_nakama_1_1_console_1_1_i_api_user.tex
├── interface_nakama_1_1_console_1_1_i_api_user_group_list.tex
├── interface_nakama_1_1_console_1_1_i_config_warning.tex
├── interface_nakama_1_1_console_1_1_i_console_account_export.tex
├── interface_nakama_1_1_console_1_1_i_console_authenticate_request.tex
├── interface_nakama_1_1_console_1_1_i_console_config.tex
├── interface_nakama_1_1_console_1_1_i_console_console_session.tex
├── interface_nakama_1_1_console_1_1_i_console_status_list.tex
├── interface_nakama_1_1_console_1_1_i_console_storage_list.tex
├── interface_nakama_1_1_console_1_1_i_console_unlink_device_request.tex
├── interface_nakama_1_1_console_1_1_i_console_user_list.tex
├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger.tex
├── interface_nakama_1_1_console_1_1_i_console_wallet_ledger_list.tex
├── interface_nakama_1_1_console_1_1_i_console_write_storage_object_request.tex
├── interface_nakama_1_1_console_1_1_i_nakamaapi_account.tex
├── interface_nakama_1_1_console_1_1_i_nakamaconsole_account.tex
├── interface_nakama_1_1_console_1_1_i_nakamaconsole_update_account_request.tex
├── interface_nakama_1_1_console_1_1_i_protobuf_any.tex
├── interface_nakama_1_1_console_1_1_i_runtime_error.tex
├── interface_nakama_1_1_console_1_1_i_status_list_status.tex
├── interface_nakama_1_1_console_1_1_i_user_group_list_user_group.tex
├── interface_nakama_1_1_i_api_account.tex
├── interface_nakama_1_1_i_api_account_apple.tex
├── interface_nakama_1_1_i_api_account_custom.tex
├── interface_nakama_1_1_i_api_account_device.tex
├── interface_nakama_1_1_i_api_account_email.tex
├── interface_nakama_1_1_i_api_account_facebook.tex
├── interface_nakama_1_1_i_api_account_facebook_instant_game.tex
├── interface_nakama_1_1_i_api_account_game_center.tex
├── interface_nakama_1_1_i_api_account_google.tex
├── interface_nakama_1_1_i_api_account_steam.tex
├── interface_nakama_1_1_i_api_channel_message.tex
├── interface_nakama_1_1_i_api_channel_message_list.tex
├── interface_nakama_1_1_i_api_create_group_request.tex
├── interface_nakama_1_1_i_api_delete_storage_object_id.eps
├── interface_nakama_1_1_i_api_delete_storage_object_id.tex
├── interface_nakama_1_1_i_api_delete_storage_objects_request.tex
├── interface_nakama_1_1_i_api_event.tex
├── interface_nakama_1_1_i_api_friend.tex
├── interface_nakama_1_1_i_api_friend_list.tex
├── interface_nakama_1_1_i_api_group.tex
├── interface_nakama_1_1_i_api_group_list.tex
├── interface_nakama_1_1_i_api_group_user_list.tex
├── interface_nakama_1_1_i_api_leaderboard_record.tex
├── interface_nakama_1_1_i_api_leaderboard_record_list.tex
├── interface_nakama_1_1_i_api_link_steam_request.tex
├── interface_nakama_1_1_i_api_list_subscriptions_request.tex
├── interface_nakama_1_1_i_api_match.tex
├── interface_nakama_1_1_i_api_match_list.tex
├── interface_nakama_1_1_i_api_notification.tex
├── interface_nakama_1_1_i_api_notification_list.tex
├── interface_nakama_1_1_i_api_read_storage_object_id.eps
├── interface_nakama_1_1_i_api_read_storage_object_id.tex
├── interface_nakama_1_1_i_api_read_storage_objects_request.tex
├── interface_nakama_1_1_i_api_rpc.tex
├── interface_nakama_1_1_i_api_session.tex
├── interface_nakama_1_1_i_api_session_logout_request.tex
├── interface_nakama_1_1_i_api_session_refresh_request.tex
├── interface_nakama_1_1_i_api_storage_object.tex
├── interface_nakama_1_1_i_api_storage_object_ack.tex
├── interface_nakama_1_1_i_api_storage_object_acks.tex
├── interface_nakama_1_1_i_api_storage_object_list.tex
├── interface_nakama_1_1_i_api_storage_objects.tex
├── interface_nakama_1_1_i_api_subscription_list.tex
├── interface_nakama_1_1_i_api_tournament.tex
├── interface_nakama_1_1_i_api_tournament_list.tex
├── interface_nakama_1_1_i_api_tournament_record_list.tex
├── interface_nakama_1_1_i_api_update_account_request.tex
├── interface_nakama_1_1_i_api_update_group_request.tex
├── interface_nakama_1_1_i_api_user.tex
├── interface_nakama_1_1_i_api_user_group_list.tex
├── interface_nakama_1_1_i_api_users.tex
├── interface_nakama_1_1_i_api_validate_purchase_apple_request.tex
├── interface_nakama_1_1_i_api_validate_purchase_google_request.tex
├── interface_nakama_1_1_i_api_validate_purchase_huawei_request.tex
├── interface_nakama_1_1_i_api_validate_purchase_response.tex
├── interface_nakama_1_1_i_api_validate_subscription_apple_request.tex
├── interface_nakama_1_1_i_api_validate_subscription_google_request.tex
├── interface_nakama_1_1_i_api_validate_subscription_response.tex
├── interface_nakama_1_1_i_api_validated_purchase.tex
├── interface_nakama_1_1_i_api_validated_subscription.tex
├── interface_nakama_1_1_i_api_write_storage_object.eps
├── interface_nakama_1_1_i_api_write_storage_object.tex
├── interface_nakama_1_1_i_api_write_storage_objects_request.tex
├── interface_nakama_1_1_i_channel.tex
├── interface_nakama_1_1_i_channel_message_ack.tex
├── interface_nakama_1_1_i_channel_presence_event.tex
├── interface_nakama_1_1_i_client.eps
├── interface_nakama_1_1_i_client.tex
├── interface_nakama_1_1_i_group_user_list_group_user.tex
├── interface_nakama_1_1_i_http_adapter.eps
├── interface_nakama_1_1_i_http_adapter.tex
├── interface_nakama_1_1_i_logger.eps
├── interface_nakama_1_1_i_logger.tex
├── interface_nakama_1_1_i_match.tex
├── interface_nakama_1_1_i_match_presence_event.tex
├── interface_nakama_1_1_i_match_state.tex
├── interface_nakama_1_1_i_matchmaker_matched.tex
├── interface_nakama_1_1_i_matchmaker_ticket.tex
├── interface_nakama_1_1_i_matchmaker_user.tex
├── interface_nakama_1_1_i_party.tex
├── interface_nakama_1_1_i_party_close.tex
├── interface_nakama_1_1_i_party_data.tex
├── interface_nakama_1_1_i_party_join_request.tex
├── interface_nakama_1_1_i_party_leader.tex
├── interface_nakama_1_1_i_party_matchmaker_ticket.tex
├── interface_nakama_1_1_i_party_presence_event.tex
├── interface_nakama_1_1_i_protobuf_any.tex
├── interface_nakama_1_1_i_rpc_status.tex
├── interface_nakama_1_1_i_session.eps
├── interface_nakama_1_1_i_session.tex
├── interface_nakama_1_1_i_socket.eps
├── interface_nakama_1_1_i_socket.tex
├── interface_nakama_1_1_i_socket_adapter.eps
├── interface_nakama_1_1_i_socket_adapter.tex
├── interface_nakama_1_1_i_status.tex
├── interface_nakama_1_1_i_status_presence_event.tex
├── interface_nakama_1_1_i_stream.tex
├── interface_nakama_1_1_i_stream_presence_event.tex
├── interface_nakama_1_1_i_stream_state.tex
├── interface_nakama_1_1_i_user_group_list_user_group.tex
├── interface_nakama_1_1_i_user_presence.tex
├── interface_nakama_1_1_i_write_leaderboard_record_request_leaderboard_record_write.tex
├── interface_nakama_1_1_i_write_tournament_record_request_tournament_record_write.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_buffer_pool.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_ping_pong_manager.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_client_factory.tex
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.eps
├── interface_nakama_1_1_ninja_1_1_web_sockets_1_1_i_web_socket_server_factory.tex
├── interface_nakama_1_1_tests_1_1_i_nested_test_object.tex
├── interface_nakama_1_1_tests_1_1_i_test_object.tex
├── interface_satori_1_1_i_api_authenticate_logout_request.tex
├── interface_satori_1_1_i_api_authenticate_refresh_request.tex
├── interface_satori_1_1_i_api_authenticate_request.tex
├── interface_satori_1_1_i_api_event.tex
├── interface_satori_1_1_i_api_event_request.tex
├── interface_satori_1_1_i_api_experiment.tex
├── interface_satori_1_1_i_api_experiment_list.tex
├── interface_satori_1_1_i_api_flag.tex
├── interface_satori_1_1_i_api_flag_list.tex
├── interface_satori_1_1_i_api_identify_request.tex
├── interface_satori_1_1_i_api_live_event.tex
├── interface_satori_1_1_i_api_live_event_list.tex
├── interface_satori_1_1_i_api_properties.tex
├── interface_satori_1_1_i_api_session.tex
├── interface_satori_1_1_i_api_update_properties_request.tex
├── interface_satori_1_1_i_client.eps
├── interface_satori_1_1_i_client.tex
├── interface_satori_1_1_i_http_adapter.eps
├── interface_satori_1_1_i_http_adapter.tex
├── interface_satori_1_1_i_logger.tex
├── interface_satori_1_1_i_protobuf_any.tex
├── interface_satori_1_1_i_rpc_status.tex
├── interface_satori_1_1_i_session.eps
├── interface_satori_1_1_i_session.tex
├── longtable_doxygen.sty
├── md__c_h_a_n_g_e_l_o_g.tex
├── md__r_e_a_d_m_e.tex
├── md__r_e_l_e_a_s_e_i_n_s_t.tex
├── md__satori__tests__r_e_a_d_m_e.tex
├── md_codegen__r_e_a_d_m_e.tex
├── namespace_nakama.tex
├── namespace_nakama_1_1_console.tex
├── namespace_nakama_1_1_ninja.tex
├── namespace_nakama_1_1_ninja_1_1_web_sockets.tex
├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_exceptions.tex
├── namespace_nakama_1_1_ninja_1_1_web_sockets_1_1_internal.tex
├── namespace_nakama_1_1_tests.tex
├── namespace_nakama_1_1_tests_1_1_api.tex
├── namespace_nakama_1_1_tests_1_1_socket.tex
├── namespace_nakama_1_1_tiny_json.tex
├── namespace_satori.tex
├── namespace_satori_1_1_tests.tex
├── namespace_satori_1_1_tiny_json.tex
├── namespaces.tex
├── refman.tex
└── tabu_doxygen.sty
SYMBOL INDEX (1898 symbols across 166 files)
FILE: Nakama.Tests/AuthenticateTest.cs
class AuthenticateTest (line 25) | public class AuthenticateTest
method AuthenticateTest (line 29) | public AuthenticateTest()
method ShouldAuthenticateCustomId (line 34) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldAuthenticateDeviceId (line 46) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldAuthenticateDeviceAndSaveUsername (line 64) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldAuthenticateEmail (line 78) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotAuthenticateFacebook (line 89) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotAuthenticateGameCenter (line 96) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotAuthenticateGoogle (line 112) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotAuthenticateSteam (line 119) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotAuthenticateApple (line 129) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/AwaitedSocketTaskTest.cs
class AwaitedSocketTaskTest (line 22) | public class AwaitedSocketTaskTest : IDisposable
method AwaitedSocketTaskTest (line 27) | public AwaitedSocketTaskTest()
method Dispose (line 33) | public void Dispose() => _client = null;
method Socket_AwaitedTasks_AreCanceled (line 35) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method Socket_AwaitedTasksAfterDisconnect_ThrowException (line 49) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/CancelTest.cs
class CancelTest (line 23) | public class CancelTest
method TestBasicCancel (line 25) | [Fact]
method TestCancelDuringBackoff (line 37) | [Fact]
FILE: Nakama.Tests/FriendTest.cs
class FriendTest (line 24) | public class FriendTest
method FriendTest (line 29) | public FriendTest()
method AddingBannedFriendShouldNoop (line 35) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FriendsShouldBeAddedAndAccepted (line 57) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/GroupTest.cs
class GroupTest (line 26) | public class GroupTest
method GroupTest (line 31) | public GroupTest()
method ShouldCreateGroup (line 37) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateGroupDefault (line 61) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotCreateGroup (line 80) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldListGroups (line 92) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldListGroupsNameFilter (line 105) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldListGroupsFilterTwo (line 119) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldListGroupsCursor (line 137) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldListGroupsByNameWithCursor (line 154) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldDeleteGroup (line 193) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldDeleteGroupInvalid (line 211) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotDeleteGroupNotSuperAdmin (line 221) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldPromoteAndDemoteUsers (line 232) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldBanUsers (line 257) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/HttpErrorTest.cs
class HttpErrorTest (line 29) | public class HttpErrorTest
method HttpErrorTest (line 35) | public HttpErrorTest()
method BadLuaRpcReturnsErrorMessageAndDict (line 40) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method BadGoRpcReturnsErrorMessageAndEmptyDict (line 56) | [Fact(Skip = "requires go plugin")]
method BadGoStorageRpcReturnsErrorMessageAndEmptyDict (line 73) | [Fact (Skip = "requires go plugin")]
FILE: Nakama.Tests/LeaderboardAroundOwnerTest.cs
class LeaderboardAroundOwnerTest (line 25) | public class LeaderboardAroundOwnerTest : LeaderboardTest
method OwnerInFront (line 29) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method OwnerInBack (line 42) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method OwnerNearFront (line 55) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method OwnerNearBack (line 68) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method OwnerInMiddle (line 81) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method NotEnoughRecordsForLimit (line 95) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method OddLimit (line 108) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method NoRecords (line 121) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method OneRecordOneLimit (line 127) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method TwoRecordsTwoLimit (line 136) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ThreeRecordsTwoLimit (line 146) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ThreeRecordsThreeLimit (line 156) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method TestCursorsRecordInTheMiddle (line 168) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method CreateAndFetchRecords (line 197) | private async Task<IApiLeaderboardRecordList> CreateAndFetchRecords(in...
FILE: Nakama.Tests/LeaderboardTest.cs
class LeaderboardTest (line 26) | public class LeaderboardTest : IAsyncLifetime
method LeaderboardTest (line 33) | public LeaderboardTest()
method ShouldWriteLeaderboardRecord (line 38) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldListLeaderboardRecordsWithOwnerId (line 59) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldListLeaderboardRecordsEmpty (line 77) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldDeleteLeaderboardRecord (line 90) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldDeleteLeaderboardRecordNotFound (line 104) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldDeleteLeaderboardRecordNotExists (line 111) | [Fact (Skip = "investigate this!")]
method InitializeAsync (line 120) | public async Task InitializeAsync()
method DisposeAsync (line 135) | public Task DisposeAsync()
FILE: Nakama.Tests/LinkUnlinkTest.cs
class LinkUnlinkTest (line 25) | public class LinkUnlinkTest
method LinkUnlinkTest (line 29) | public LinkUnlinkTest()
method ShouldLinkCustomId (line 35) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldLinkCustomIdSame (line 50) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldLinkCustomIdFieldEmpty (line 63) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldUnlinkCustomId (line 77) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkCustomIdInuse (line 92) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkCustomId (line 104) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkCustomIdNotOwned (line 114) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldLinkDeviceId (line 126) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldLinkDeviceIdSame (line 141) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkDeviceIdInuse (line 154) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldUnlinkDeviceId (line 166) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkDeviceId (line 179) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkDeviceIdNotOwned (line 189) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldLinkEmail (line 201) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldLinkEmailSame (line 217) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkEmailInuse (line 231) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldUnlinkEmail (line 244) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkEmail (line 259) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkEmailNotOwned (line 270) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkFacebook (line 283) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkFacebook (line 293) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkGameCenter (line 303) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkGameCenterBadInput (line 321) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkGameCenterBadInput (line 339) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkGoogle (line 357) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkGoogle (line 367) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkSteam (line 377) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkSteam (line 387) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotLinkApple (line 397) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotUnlinkApple (line 407) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/PresenceUtilTest.cs
class PresenceUtilTest (line 23) | public class PresenceUtilTest
method PresenceUtilTest (line 28) | public PresenceUtilTest(ITestOutputHelper testOutputHelper)
method ShouldAddPresencesParty (line 34) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldAddAndRemovePresencesMatch (line 61) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/RetryTest.cs
class RetryTest (line 25) | public class RetryTest
method TransientHttpAdapter_ServerDefault_CreatesSession (line 27) | [Fact]
method RetryConfiguration_OneRetries_RetriesExactlyOnce (line 38) | [Fact]
method RetryConfiguration_FiveRetries_RetriesExactlyFiveTimes (line 60) | [Fact]
method RetryConfiguration_PastMaxRetries_ThrowsTaskCancelledException (line 90) | [Fact]
method RetryConfiguration_ZeroRetries_RetriesZeroTimes (line 117) | [Fact]
method RetryConfiguration_OverrideSet_OverridesGlobal (line 138) | [Fact]
method RetryConfiguration_Delay_ExpectedExponentialTimes (line 166) | [Fact]
method RetryConfiguration_Delay_ExpectedDelays (line 198) | [Fact]
method RetryConfiguration_NullConfiguration_DoesNotThrowNullRef (line 236) | [Fact]
method RetryConfiguration_NoRetries_ThrowsBaseApiResponseException (line 254) | [Fact]
method RetryConfiguration_NonTransientError_Throws (line 284) | [Fact]
FILE: Nakama.Tests/RpcTest.cs
class RpcTest (line 25) | public class RpcTest
method RpcTest (line 31) | public RpcTest()
method ShouldRpcRoundtrip (line 36) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldRpcGet (line 48) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldRpcGetRoundtrip (line 59) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldRpcWithoutSession (line 71) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldRpcGetRoundtripWithoutSession (line 83) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/SessionTest.cs
class SessionTest (line 23) | public class SessionTest
method GetVariables_VariablesField_Empty (line 34) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method GetVariables_VariablesField_Values (line 44) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method GetVariables_VariablesField_FromAuthenticate (line 57) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method GetRefreshToken_RefreshTokenField_FromAuthenticate (line 69) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method SessionLogout_RefreshTokenField_Disabled (line 80) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method GetUsername_UsernameField_NotNull (line 92) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method GetUserId_UserIdField_NotNull (line 102) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method IsExpired_ExpiredField_True (line 112) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method IsRefreshExpired_RefreshExpiredField_True (line 123) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method CreateTime_IsTokenIssField (line 134) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method Refresh_MetadataVar_DoesNotThrow (line 141) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method Restore_AuthTokenEmptyString_Null (line 171) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method Restore_RefreshTokenNull_Valid (line 178) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
FILE: Nakama.Tests/Socket/WebSocketChannelTest.cs
class WebSocketChannelTest (line 25) | public class WebSocketChannelTest : IAsyncLifetime
method WebSocketChannelTest (line 30) | public WebSocketChannelTest()
method ShouldCreateRoomChannel (line 36) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldSendMessageRoomChannel (line 49) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldSendMessageDirectChannel (line 71) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method InitializeAsync (line 100) | Task IAsyncLifetime.InitializeAsync()
method DisposeAsync (line 105) | Task IAsyncLifetime.DisposeAsync()
FILE: Nakama.Tests/Socket/WebSocketMatchTest.cs
class WebSocketMatchTest (line 30) | public class WebSocketMatchTest : IAsyncLifetime
method WebSocketMatchTest (line 36) | public WebSocketMatchTest()
method ShouldCreateMatch (line 42) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateMatchWithName (line 56) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldJoinMatchWithName (line 70) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateMatchAndSecondUserJoin (line 88) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateMatchAndLeave (line 111) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateMatchAndSendState (line 123) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method EachClientShouldReceiveTwoPresences (line 148) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldThrowSocketExceptionWhenSendingMatchDataAfterClosingSocket (line 194) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method InitializeAsync (line 208) | Task IAsyncLifetime.InitializeAsync()
method DisposeAsync (line 213) | Task IAsyncLifetime.DisposeAsync()
FILE: Nakama.Tests/Socket/WebSocketMatchmakerTest.cs
class WebSocketMatchmakerTest (line 22) | public class WebSocketMatchmakerTest : IAsyncLifetime
method WebSocketMatchmakerTest (line 27) | public WebSocketMatchmakerTest()
method ShouldJoinMatchmaker (line 33) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS_MATCHMAKER)]
method ShouldJoinAndLeaveMatchmaker (line 45) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS_MATCHMAKER)]
method ShouldCompleteMatchmaker (line 57) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS_MATCHMAKER)]
method ShouldNotMatchPartiesWithACombinedAmountOfPlayersAboveMaxCount (line 90) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS_MATCHMAKER)]
method ShouldMatchPartiesWithPlayers (line 145) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS_MATCHMAKER)]
method ShouldCompleteMatchmakerAsymmetricQuery (line 190) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS_MATCHMAKER)]
method ShouldCompleteMatchmakerSymmetricQueryMidSize (line 229) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS_MATCHMAKER)]
method InitializeAsync (line 287) | Task IAsyncLifetime.InitializeAsync()
method DisposeAsync (line 292) | Task IAsyncLifetime.DisposeAsync()
FILE: Nakama.Tests/Socket/WebSocketNotificationTest.cs
class WebSocketNotificationTest (line 27) | public class WebSocketNotificationTest : IAsyncLifetime
method WebSocketNotificationTest (line 32) | public WebSocketNotificationTest()
method ShouldReceiveNotification (line 38) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldObtainDifferentCursors (line 55) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method InitializeAsync (line 76) | Task IAsyncLifetime.InitializeAsync()
method DisposeAsync (line 81) | Task IAsyncLifetime.DisposeAsync()
FILE: Nakama.Tests/Socket/WebSocketPartyTest.cs
class WebSocketPartyTest (line 27) | public class WebSocketPartyTest
method WebSocketPartyTest (line 32) | public WebSocketPartyTest(ITestOutputHelper testOutputHelper)
method ShouldCreateParty (line 38) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreatePartyWithLabel (line 59) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldReceiveJoinEvent (line 78) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldAddAndRemovePartyFromMatchmaker (line 110) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldPromoteMember (line 150) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldSendAndReceivePartyData (line 194) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldJoinClosedParty (line 224) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldNotJoinPastMaxSize (line 262) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method LeaderShouldBeInInitialPresences (line 287) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method PresencesInitializedWithConcurrentJoins (line 305) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldBootThenClose (line 360) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method LeaderAndMembersShouldReceiveTicket (line 410) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldUpdateParty (line 441) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method SinglePartyShouldRemoveFromOtherParties (line 474) | [Fact (Timeout = TestsUtil.TIMEOUT_MILLISECONDS, Skip = "requires serv...
FILE: Nakama.Tests/Socket/WebSocketRpcTest.cs
class WebSocketRpcTest (line 23) | public class WebSocketRpcTest : IAsyncLifetime
method WebSocketRpcTest (line 28) | public WebSocketRpcTest()
method ShouldSendRpcRoundtrip (line 34) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method InitializeAsync (line 49) | public Task InitializeAsync() => Task.CompletedTask;
method DisposeAsync (line 51) | public Task DisposeAsync() => _socket.CloseAsync();
FILE: Nakama.Tests/Socket/WebSocketTest.cs
class WebSocketTest (line 22) | public class WebSocketTest
method WebSocketTest (line 30) | public WebSocketTest(ITestOutputHelper testOutputHelper)
method ShouldCreateSocket (line 39) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateSocketAndConnect (line 47) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateSocketAndDisconnectEventListener (line 60) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ShouldCreateSocketAndDisconnectSilent (line 75) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method MultipleConnectAttemptsDoesNotThrowException (line 87) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ClosingBeforeConnecting (line 96) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method LongLivedSocketLifecycle (line 105) | [Fact(Skip = "Test case requires 60 seconds minimum execution time.")]
method SocketDetectsLossOfInternet (line 115) | [Fact(Skip = "Test requires you to disconnect the internet and wait fo...
method SocketCanReconnectAfterClose (line 134) | [Fact]
FILE: Nakama.Tests/Socket/WebSocketUserStatusTest.cs
class WebSocketUserStatusTest (line 27) | public class WebSocketUserStatusTest
method WebSocketUserStatusTest (line 33) | public WebSocketUserStatusTest()
method FollowUsers_NoUsers_AnotherUser (line 38) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FollowUsers_NoUsers_AnotherUserByUsername (line 66) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FollowUsers_NoUsers_FollowedSelf (line 93) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FollowUsers_NoUsers_UserJoinsAndLeaves (line 110) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FollowUsers_AlreadyOnline_HasStatus (line 149) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FollowUsers_TwoSessions_HasTwoStatuses (line 172) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FollowUsers_TwoUsers_ThirdUserFollowsBoth (line 202) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method UpdateStatus_NoStatus_HasStatus (line 240) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method TestFollowMassiveNumberOfUsers (line 261) | [Fact (Skip = "Long-running test")]
method TestUserDoesNotReceiveUpdatedAfterUnfollow (line 310) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method TestUserFollowSameUserTwice (line 360) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method TestUnfollowSelf (line 394) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method TestFollowNonExistentUser (line 418) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method TestRepeatedOnlineOffline (line 432) | [Fact (Skip = "investigate this!")]
FILE: Nakama.Tests/StdoutLogger.cs
class StdoutLogger (line 17) | public class StdoutLogger : ILogger
method DebugFormat (line 19) | public void DebugFormat(string format, params object[] args)
method ErrorFormat (line 24) | public void ErrorFormat(string format, params object[] args)
method InfoFormat (line 29) | public void InfoFormat(string format, params object[] args)
method WarnFormat (line 34) | public void WarnFormat(string format, params object[] args)
FILE: Nakama.Tests/TestsUtil.cs
class TestsUtil (line 19) | internal static class TestsUtil
method FromSettingsFile (line 26) | public static IClient FromSettingsFile()
method FromSettingsFile (line 31) | public static IClient FromSettingsFile(string path)
method FromSettingsFile (line 36) | public static IClient FromSettingsFile(string path, IHttpAdapter adapter)
FILE: Nakama.Tests/TinyJsonParserTest.cs
class TinyJsonParserTest (line 25) | public class TinyJsonParserTest
method FromJson_JsonInput_Parsed (line 27) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FromJson_JsonInput_NumberToString (line 37) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FromJson_JsonInput_SingleDigitNumberToString (line 46) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FromJson_JsonInput_StringToString (line 55) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method ToJson_LongToUnquotedJson (line 64) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FromJson_JsonInput_ParsedTwice (line 74) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FromJson_JsonInput_ParseSingleQuotesAsString (line 85) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FromJson_JsonInput_ParseSingleQuotesAsStringInArray (line 94) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
method FromJson_JsonInput_ParseBool (line 103) | [Fact(Timeout = TestsUtil.TIMEOUT_MILLISECONDS)]
type ITestObject (line 113) | public interface ITestObject
class TestObject (line 120) | internal class TestObject : ITestObject
type INestedTestObject (line 131) | public interface INestedTestObject
class NestedTestObject (line 136) | internal class NestedTestObject : INestedTestObject
FILE: Nakama.Tests/TransientExceptionHttpAdapter.cs
type TransientAdapterResponseType (line 24) | public enum TransientAdapterResponseType
class TransientExceptionHttpAdapter (line 34) | public class TransientExceptionHttpAdapter : IHttpAdapter
method TransientExceptionHttpAdapter (line 44) | public TransientExceptionHttpAdapter(TransientAdapterResponseType[] se...
method SendAsync (line 49) | Task<string> IHttpAdapter.SendAsync(string method, Uri uri, IDictionar...
method IsTransientException (line 70) | private bool IsTransientException(Exception e)
FILE: Nakama/ApiClient.gen.cs
class ApiResponseException (line 15) | public sealed class ApiResponseException : Exception
method ApiResponseException (line 21) | public ApiResponseException(long statusCode, string content, int grpcC...
method ApiResponseException (line 27) | public ApiResponseException(string message, Exception e) : base(messag...
method ApiResponseException (line 33) | public ApiResponseException(string content) : this(-1L, content, -1)
method ToString (line 37) | public override string ToString()
type IApiUpdateGroupRequest (line 46) | public interface IApiUpdateGroupRequest
class ApiUpdateGroupRequest (line 76) | internal class ApiUpdateGroupRequest : IApiUpdateGroupRequest
method ToString (line 99) | public override string ToString()
type IFriendsOfFriendsListFriendOfFriend (line 114) | public interface IFriendsOfFriendsListFriendOfFriend
class FriendsOfFriendsListFriendOfFriend (line 129) | internal class FriendsOfFriendsListFriendOfFriend : IFriendsOfFriendsLis...
method ToString (line 142) | public override string ToString()
type IGroupUserListGroupUser (line 154) | public interface IGroupUserListGroupUser
class GroupUserListGroupUser (line 169) | internal class GroupUserListGroupUser : IGroupUserListGroupUser
method ToString (line 182) | public override string ToString()
type IUserGroupListUserGroup (line 194) | public interface IUserGroupListUserGroup
class UserGroupListUserGroup (line 209) | internal class UserGroupListUserGroup : IUserGroupListUserGroup
method ToString (line 222) | public override string ToString()
type IWriteLeaderboardRecordRequestLeaderboardRecordWrite (line 234) | public interface IWriteLeaderboardRecordRequestLeaderboardRecordWrite
class WriteLeaderboardRecordRequestLeaderboardRecordWrite (line 259) | internal class WriteLeaderboardRecordRequestLeaderboardRecordWrite : IWr...
method ToString (line 280) | public override string ToString()
type IWriteTournamentRecordRequestTournamentRecordWrite (line 294) | public interface IWriteTournamentRecordRequestTournamentRecordWrite
class WriteTournamentRecordRequestTournamentRecordWrite (line 319) | internal class WriteTournamentRecordRequestTournamentRecordWrite : IWrit...
method ToString (line 340) | public override string ToString()
type IApiAccount (line 354) | public interface IApiAccount
class ApiAccount (line 394) | internal class ApiAccount : IApiAccount
method ToString (line 429) | public override string ToString()
type IApiAccountApple (line 446) | public interface IApiAccountApple
class ApiAccountApple (line 461) | internal class ApiAccountApple : IApiAccountApple
method ToString (line 474) | public override string ToString()
type IApiAccountCustom (line 492) | public interface IApiAccountCustom
class ApiAccountCustom (line 507) | internal class ApiAccountCustom : IApiAccountCustom
method ToString (line 520) | public override string ToString()
type IApiAccountDevice (line 538) | public interface IApiAccountDevice
class ApiAccountDevice (line 553) | internal class ApiAccountDevice : IApiAccountDevice
method ToString (line 566) | public override string ToString()
type IApiAccountEmail (line 584) | public interface IApiAccountEmail
class ApiAccountEmail (line 604) | internal class ApiAccountEmail : IApiAccountEmail
method ToString (line 621) | public override string ToString()
type IApiAccountFacebook (line 640) | public interface IApiAccountFacebook
class ApiAccountFacebook (line 655) | internal class ApiAccountFacebook : IApiAccountFacebook
method ToString (line 668) | public override string ToString()
type IApiAccountFacebookInstantGame (line 686) | public interface IApiAccountFacebookInstantGame
class ApiAccountFacebookInstantGame (line 701) | internal class ApiAccountFacebookInstantGame : IApiAccountFacebookInstan...
method ToString (line 714) | public override string ToString()
type IApiAccountGameCenter (line 732) | public interface IApiAccountGameCenter
class ApiAccountGameCenter (line 772) | internal class ApiAccountGameCenter : IApiAccountGameCenter
method ToString (line 805) | public override string ToString()
type IApiAccountGoogle (line 828) | public interface IApiAccountGoogle
class ApiAccountGoogle (line 843) | internal class ApiAccountGoogle : IApiAccountGoogle
method ToString (line 856) | public override string ToString()
type IApiAccountSteam (line 874) | public interface IApiAccountSteam
class ApiAccountSteam (line 889) | internal class ApiAccountSteam : IApiAccountSteam
method ToString (line 902) | public override string ToString()
type IApiChannelMessage (line 920) | public interface IApiChannelMessage
class ApiChannelMessage (line 990) | internal class ApiChannelMessage : IApiChannelMessage
method ToString (line 1045) | public override string ToString()
type IApiChannelMessageList (line 1068) | public interface IApiChannelMessageList
class ApiChannelMessageList (line 1093) | internal class ApiChannelMessageList : IApiChannelMessageList
method ToString (line 1114) | public override string ToString()
type IApiCreateGroupRequest (line 1128) | public interface IApiCreateGroupRequest
class ApiCreateGroupRequest (line 1163) | internal class ApiCreateGroupRequest : IApiCreateGroupRequest
method ToString (line 1190) | public override string ToString()
type IApiDeleteStorageObjectId (line 1206) | public interface IApiDeleteStorageObjectId
class ApiDeleteStorageObjectId (line 1226) | internal class ApiDeleteStorageObjectId : IApiDeleteStorageObjectId
method ToString (line 1241) | public override string ToString()
type IApiDeleteStorageObjectsRequest (line 1254) | public interface IApiDeleteStorageObjectsRequest
class ApiDeleteStorageObjectsRequest (line 1264) | internal class ApiDeleteStorageObjectsRequest : IApiDeleteStorageObjects...
method ToString (line 1273) | public override string ToString()
type IApiEvent (line 1284) | public interface IApiEvent
class ApiEvent (line 1309) | internal class ApiEvent : IApiEvent
method ToString (line 1330) | public override string ToString()
type IApiFriend (line 1350) | public interface IApiFriend
class ApiFriend (line 1375) | internal class ApiFriend : IApiFriend
method ToString (line 1396) | public override string ToString()
type IApiFriendList (line 1410) | public interface IApiFriendList
class ApiFriendList (line 1425) | internal class ApiFriendList : IApiFriendList
method ToString (line 1438) | public override string ToString()
type IApiFriendsOfFriendsList (line 1450) | public interface IApiFriendsOfFriendsList
class ApiFriendsOfFriendsList (line 1465) | internal class ApiFriendsOfFriendsList : IApiFriendsOfFriendsList
method ToString (line 1478) | public override string ToString()
type IApiGroup (line 1490) | public interface IApiGroup
class ApiGroup (line 1555) | internal class ApiGroup : IApiGroup
method ToString (line 1606) | public override string ToString()
type IApiGroupList (line 1628) | public interface IApiGroupList
class ApiGroupList (line 1643) | internal class ApiGroupList : IApiGroupList
method ToString (line 1656) | public override string ToString()
type IApiGroupUserList (line 1668) | public interface IApiGroupUserList
class ApiGroupUserList (line 1683) | internal class ApiGroupUserList : IApiGroupUserList
method ToString (line 1696) | public override string ToString()
type IApiLeaderboardRecord (line 1708) | public interface IApiLeaderboardRecord
class ApiLeaderboardRecord (line 1773) | internal class ApiLeaderboardRecord : IApiLeaderboardRecord
method ToString (line 1824) | public override string ToString()
type IApiLeaderboardRecordList (line 1846) | public interface IApiLeaderboardRecordList
class ApiLeaderboardRecordList (line 1876) | internal class ApiLeaderboardRecordList : IApiLeaderboardRecordList
method ToString (line 1903) | public override string ToString()
type IApiLinkSteamRequest (line 1918) | public interface IApiLinkSteamRequest
class ApiLinkSteamRequest (line 1933) | internal class ApiLinkSteamRequest : IApiLinkSteamRequest
method ToString (line 1946) | public override string ToString()
type IApiListSubscriptionsRequest (line 1958) | public interface IApiListSubscriptionsRequest
class ApiListSubscriptionsRequest (line 1973) | internal class ApiListSubscriptionsRequest : IApiListSubscriptionsRequest
method ToString (line 1984) | public override string ToString()
type IApiMatch (line 1996) | public interface IApiMatch
class ApiMatch (line 2031) | internal class ApiMatch : IApiMatch
method ToString (line 2058) | public override string ToString()
type IApiMatchList (line 2074) | public interface IApiMatchList
class ApiMatchList (line 2084) | internal class ApiMatchList : IApiMatchList
method ToString (line 2093) | public override string ToString()
type IApiMatchmakerCompletionStats (line 2104) | public interface IApiMatchmakerCompletionStats
class ApiMatchmakerCompletionStats (line 2119) | internal class ApiMatchmakerCompletionStats : IApiMatchmakerCompletionStats
method ToString (line 2130) | public override string ToString()
type IApiMatchmakerStats (line 2142) | public interface IApiMatchmakerStats
class ApiMatchmakerStats (line 2162) | internal class ApiMatchmakerStats : IApiMatchmakerStats
method ToString (line 2179) | public override string ToString()
type IApiNotification (line 2192) | public interface IApiNotification
class ApiNotification (line 2232) | internal class ApiNotification : IApiNotification
method ToString (line 2263) | public override string ToString()
type IApiNotificationList (line 2280) | public interface IApiNotificationList
class ApiNotificationList (line 2295) | internal class ApiNotificationList : IApiNotificationList
method ToString (line 2308) | public override string ToString()
type ApiOperator (line 2320) | public enum ApiOperator
type IApiParty (line 2347) | public interface IApiParty
class ApiParty (line 2377) | internal class ApiParty : IApiParty
method ToString (line 2400) | public override string ToString()
type IApiPartyList (line 2415) | public interface IApiPartyList
class ApiPartyList (line 2430) | internal class ApiPartyList : IApiPartyList
method ToString (line 2443) | public override string ToString()
type IApiReadStorageObjectId (line 2455) | public interface IApiReadStorageObjectId
class ApiReadStorageObjectId (line 2475) | internal class ApiReadStorageObjectId : IApiReadStorageObjectId
method ToString (line 2490) | public override string ToString()
type IApiReadStorageObjectsRequest (line 2503) | public interface IApiReadStorageObjectsRequest
class ApiReadStorageObjectsRequest (line 2513) | internal class ApiReadStorageObjectsRequest : IApiReadStorageObjectsRequest
method ToString (line 2522) | public override string ToString()
type IApiRpc (line 2533) | public interface IApiRpc
class ApiRpc (line 2553) | internal class ApiRpc : IApiRpc
method ToString (line 2568) | public override string ToString()
type IApiSession (line 2581) | public interface IApiSession
class ApiSession (line 2601) | internal class ApiSession : IApiSession
method ToString (line 2616) | public override string ToString()
type IApiSessionLogoutRequest (line 2629) | public interface IApiSessionLogoutRequest
class ApiSessionLogoutRequest (line 2644) | internal class ApiSessionLogoutRequest : IApiSessionLogoutRequest
method ToString (line 2655) | public override string ToString()
type IApiSessionRefreshRequest (line 2667) | public interface IApiSessionRefreshRequest
class ApiSessionRefreshRequest (line 2682) | internal class ApiSessionRefreshRequest : IApiSessionRefreshRequest
method ToString (line 2695) | public override string ToString()
type IApiStorageObject (line 2713) | public interface IApiStorageObject
class ApiStorageObject (line 2763) | internal class ApiStorageObject : IApiStorageObject
method ToString (line 2802) | public override string ToString()
type IApiStorageObjectAck (line 2821) | public interface IApiStorageObjectAck
class ApiStorageObjectAck (line 2856) | internal class ApiStorageObjectAck : IApiStorageObjectAck
method ToString (line 2883) | public override string ToString()
type IApiStorageObjectAcks (line 2899) | public interface IApiStorageObjectAcks
class ApiStorageObjectAcks (line 2909) | internal class ApiStorageObjectAcks : IApiStorageObjectAcks
method ToString (line 2918) | public override string ToString()
type IApiStorageObjectList (line 2929) | public interface IApiStorageObjectList
class ApiStorageObjectList (line 2944) | internal class ApiStorageObjectList : IApiStorageObjectList
method ToString (line 2957) | public override string ToString()
type IApiStorageObjects (line 2969) | public interface IApiStorageObjects
class ApiStorageObjects (line 2979) | internal class ApiStorageObjects : IApiStorageObjects
method ToString (line 2988) | public override string ToString()
type ApiStoreEnvironment (line 2999) | public enum ApiStoreEnvironment
type ApiStoreProvider (line 3018) | public enum ApiStoreProvider
type IApiSubscriptionList (line 3041) | public interface IApiSubscriptionList
class ApiSubscriptionList (line 3061) | internal class ApiSubscriptionList : IApiSubscriptionList
method ToString (line 3078) | public override string ToString()
type IApiTournament (line 3091) | public interface IApiTournament
class ApiTournament (line 3201) | internal class ApiTournament : IApiTournament
method ToString (line 3290) | public override string ToString()
type IApiTournamentList (line 3321) | public interface IApiTournamentList
class ApiTournamentList (line 3336) | internal class ApiTournamentList : IApiTournamentList
method ToString (line 3349) | public override string ToString()
type IApiTournamentRecordList (line 3361) | public interface IApiTournamentRecordList
class ApiTournamentRecordList (line 3391) | internal class ApiTournamentRecordList : IApiTournamentRecordList
method ToString (line 3418) | public override string ToString()
type IApiUpdateAccountRequest (line 3433) | public interface IApiUpdateAccountRequest
class ApiUpdateAccountRequest (line 3468) | internal class ApiUpdateAccountRequest : IApiUpdateAccountRequest
method ToString (line 3495) | public override string ToString()
type IApiUser (line 3511) | public interface IApiUser
class ApiUser (line 3606) | internal class ApiUser : IApiUser
method ToString (line 3681) | public override string ToString()
type IApiUserGroupList (line 3709) | public interface IApiUserGroupList
class ApiUserGroupList (line 3724) | internal class ApiUserGroupList : IApiUserGroupList
method ToString (line 3737) | public override string ToString()
type IApiUsers (line 3749) | public interface IApiUsers
class ApiUsers (line 3759) | internal class ApiUsers : IApiUsers
method ToString (line 3768) | public override string ToString()
type IApiValidatePurchaseAppleRequest (line 3779) | public interface IApiValidatePurchaseAppleRequest
class ApiValidatePurchaseAppleRequest (line 3794) | internal class ApiValidatePurchaseAppleRequest : IApiValidatePurchaseApp...
method ToString (line 3805) | public override string ToString()
type IApiValidatePurchaseFacebookInstantRequest (line 3817) | public interface IApiValidatePurchaseFacebookInstantRequest
class ApiValidatePurchaseFacebookInstantRequest (line 3832) | internal class ApiValidatePurchaseFacebookInstantRequest : IApiValidateP...
method ToString (line 3843) | public override string ToString()
type IApiValidatePurchaseGoogleRequest (line 3855) | public interface IApiValidatePurchaseGoogleRequest
class ApiValidatePurchaseGoogleRequest (line 3870) | internal class ApiValidatePurchaseGoogleRequest : IApiValidatePurchaseGo...
method ToString (line 3881) | public override string ToString()
type IApiValidatePurchaseHuaweiRequest (line 3893) | public interface IApiValidatePurchaseHuaweiRequest
class ApiValidatePurchaseHuaweiRequest (line 3913) | internal class ApiValidatePurchaseHuaweiRequest : IApiValidatePurchaseHu...
method ToString (line 3928) | public override string ToString()
type IApiValidatePurchaseResponse (line 3941) | public interface IApiValidatePurchaseResponse
class ApiValidatePurchaseResponse (line 3951) | internal class ApiValidatePurchaseResponse : IApiValidatePurchaseResponse
method ToString (line 3960) | public override string ToString()
type IApiValidateSubscriptionAppleRequest (line 3971) | public interface IApiValidateSubscriptionAppleRequest
class ApiValidateSubscriptionAppleRequest (line 3986) | internal class ApiValidateSubscriptionAppleRequest : IApiValidateSubscri...
method ToString (line 3997) | public override string ToString()
type IApiValidateSubscriptionGoogleRequest (line 4009) | public interface IApiValidateSubscriptionGoogleRequest
class ApiValidateSubscriptionGoogleRequest (line 4024) | internal class ApiValidateSubscriptionGoogleRequest : IApiValidateSubscr...
method ToString (line 4035) | public override string ToString()
type IApiValidateSubscriptionResponse (line 4047) | public interface IApiValidateSubscriptionResponse
class ApiValidateSubscriptionResponse (line 4057) | internal class ApiValidateSubscriptionResponse : IApiValidateSubscriptio...
method ToString (line 4066) | public override string ToString()
type IApiValidatedPurchase (line 4077) | public interface IApiValidatedPurchase
class ApiValidatedPurchase (line 4137) | internal class ApiValidatedPurchase : IApiValidatedPurchase
method ToString (line 4188) | public override string ToString()
type IApiValidatedSubscription (line 4209) | public interface IApiValidatedSubscription
class ApiValidatedSubscription (line 4279) | internal class ApiValidatedSubscription : IApiValidatedSubscription
method ToString (line 4338) | public override string ToString()
type IApiWriteStorageObject (line 4361) | public interface IApiWriteStorageObject
class ApiWriteStorageObject (line 4396) | internal class ApiWriteStorageObject : IApiWriteStorageObject
method ToString (line 4423) | public override string ToString()
type IApiWriteStorageObjectsRequest (line 4439) | public interface IApiWriteStorageObjectsRequest
class ApiWriteStorageObjectsRequest (line 4449) | internal class ApiWriteStorageObjectsRequest : IApiWriteStorageObjectsRe...
method ToString (line 4458) | public override string ToString()
type IProtobufAny (line 4469) | public interface IProtobufAny
class ProtobufAny (line 4479) | internal class ProtobufAny : IProtobufAny
method ToString (line 4486) | public override string ToString()
type IRpcStatus (line 4497) | public interface IRpcStatus
class RpcStatus (line 4517) | internal class RpcStatus : IRpcStatus
method ToString (line 4534) | public override string ToString()
class ApiClient (line 4547) | internal class ApiClient
method ApiClient (line 4554) | public ApiClient(Uri baseUri, IHttpAdapter httpAdapter, int timeout = 10)
method HealthcheckAsync (line 4564) | public async Task HealthcheckAsync(
method DeleteAccountAsync (line 4593) | public async Task DeleteAccountAsync(
method GetAccountAsync (line 4622) | public async Task<IApiAccount> GetAccountAsync(
method UpdateAccountAsync (line 4652) | public async Task UpdateAccountAsync(
method AuthenticateAppleAsync (line 4688) | public async Task<IApiSession> AuthenticateAppleAsync(
method AuthenticateCustomAsync (line 4738) | public async Task<IApiSession> AuthenticateCustomAsync(
method AuthenticateDeviceAsync (line 4788) | public async Task<IApiSession> AuthenticateDeviceAsync(
method AuthenticateEmailAsync (line 4838) | public async Task<IApiSession> AuthenticateEmailAsync(
method AuthenticateFacebookAsync (line 4888) | public async Task<IApiSession> AuthenticateFacebookAsync(
method AuthenticateFacebookInstantGameAsync (line 4942) | public async Task<IApiSession> AuthenticateFacebookInstantGameAsync(
method AuthenticateGameCenterAsync (line 4992) | public async Task<IApiSession> AuthenticateGameCenterAsync(
method AuthenticateGoogleAsync (line 5042) | public async Task<IApiSession> AuthenticateGoogleAsync(
method AuthenticateSteamAsync (line 5092) | public async Task<IApiSession> AuthenticateSteamAsync(
method LinkAppleAsync (line 5146) | public async Task LinkAppleAsync(
method LinkCustomAsync (line 5182) | public async Task LinkCustomAsync(
method LinkDeviceAsync (line 5218) | public async Task LinkDeviceAsync(
method LinkEmailAsync (line 5254) | public async Task LinkEmailAsync(
method LinkFacebookAsync (line 5290) | public async Task LinkFacebookAsync(
method LinkFacebookInstantGameAsync (line 5330) | public async Task LinkFacebookInstantGameAsync(
method LinkGameCenterAsync (line 5366) | public async Task LinkGameCenterAsync(
method LinkGoogleAsync (line 5402) | public async Task LinkGoogleAsync(
method LinkSteamAsync (line 5438) | public async Task LinkSteamAsync(
method SessionRefreshAsync (line 5474) | public async Task<IApiSession> SessionRefreshAsync(
method UnlinkAppleAsync (line 5516) | public async Task UnlinkAppleAsync(
method UnlinkCustomAsync (line 5552) | public async Task UnlinkCustomAsync(
method UnlinkDeviceAsync (line 5588) | public async Task UnlinkDeviceAsync(
method UnlinkEmailAsync (line 5624) | public async Task UnlinkEmailAsync(
method UnlinkFacebookAsync (line 5660) | public async Task UnlinkFacebookAsync(
method UnlinkFacebookInstantGameAsync (line 5696) | public async Task UnlinkFacebookInstantGameAsync(
method UnlinkGameCenterAsync (line 5732) | public async Task UnlinkGameCenterAsync(
method UnlinkGoogleAsync (line 5768) | public async Task UnlinkGoogleAsync(
method UnlinkSteamAsync (line 5804) | public async Task UnlinkSteamAsync(
method ListChannelMessagesAsync (line 5840) | public async Task<IApiChannelMessageList> ListChannelMessagesAsync(
method EventAsync (line 5888) | public async Task EventAsync(
method DeleteFriendsAsync (line 5924) | public async Task DeleteFriendsAsync(
method ListFriendsAsync (line 5963) | public async Task<IApiFriendList> ListFriendsAsync(
method AddFriendsAsync (line 6005) | public async Task AddFriendsAsync(
method BlockFriendsAsync (line 6048) | public async Task BlockFriendsAsync(
method ImportFacebookFriendsAsync (line 6087) | public async Task ImportFacebookFriendsAsync(
method ListFriendsOfFriendsAsync (line 6127) | public async Task<IApiFriendsOfFriendsList> ListFriendsOfFriendsAsync(
method ImportSteamFriendsAsync (line 6165) | public async Task ImportSteamFriendsAsync(
method ListGroupsAsync (line 6205) | public async Task<IApiGroupList> ListGroupsAsync(
method CreateGroupAsync (line 6259) | public async Task<IApiGroup> CreateGroupAsync(
method DeleteGroupAsync (line 6296) | public async Task DeleteGroupAsync(
method UpdateGroupAsync (line 6331) | public async Task UpdateGroupAsync(
method AddGroupUsersAsync (line 6373) | public async Task AddGroupUsersAsync(
method BanGroupUsersAsync (line 6413) | public async Task BanGroupUsersAsync(
method DemoteGroupUsersAsync (line 6453) | public async Task DemoteGroupUsersAsync(
method JoinGroupAsync (line 6493) | public async Task JoinGroupAsync(
method KickGroupUsersAsync (line 6528) | public async Task KickGroupUsersAsync(
method LeaveGroupAsync (line 6568) | public async Task LeaveGroupAsync(
method PromoteGroupUsersAsync (line 6603) | public async Task PromoteGroupUsersAsync(
method ListGroupUsersAsync (line 6643) | public async Task<IApiGroupUserList> ListGroupUsersAsync(
method ValidatePurchaseAppleAsync (line 6691) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseAppleA...
method ValidatePurchaseFacebookInstantAsync (line 6728) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseFacebo...
method ValidatePurchaseGoogleAsync (line 6765) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseGoogle...
method ValidatePurchaseHuaweiAsync (line 6802) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseHuawei...
method ListSubscriptionsAsync (line 6839) | public async Task<IApiSubscriptionList> ListSubscriptionsAsync(
method ValidateSubscriptionAppleAsync (line 6876) | public async Task<IApiValidateSubscriptionResponse> ValidateSubscripti...
method ValidateSubscriptionGoogleAsync (line 6913) | public async Task<IApiValidateSubscriptionResponse> ValidateSubscripti...
method GetSubscriptionAsync (line 6950) | public async Task<IApiValidatedSubscription> GetSubscriptionAsync(
method DeleteLeaderboardRecordAsync (line 6986) | public async Task DeleteLeaderboardRecordAsync(
method ListLeaderboardRecordsAsync (line 7021) | public async Task<IApiLeaderboardRecordList> ListLeaderboardRecordsAsync(
method WriteLeaderboardRecordAsync (line 7074) | public async Task<IApiLeaderboardRecord> WriteLeaderboardRecordAsync(
method ListLeaderboardRecordsAroundOwnerAsync (line 7117) | public async Task<IApiLeaderboardRecordList> ListLeaderboardRecordsAro...
method ListMatchesAsync (line 7171) | public async Task<IApiMatchList> ListMatchesAsync(
method GetMatchmakerStatsAsync (line 7225) | public async Task<IApiMatchmakerStats> GetMatchmakerStatsAsync(
method DeleteNotificationsAsync (line 7255) | public async Task DeleteNotificationsAsync(
method ListNotificationsAsync (line 7289) | public async Task<IApiNotificationList> ListNotificationsAsync(
method ListPartiesAsync (line 7327) | public async Task<IApiPartyList> ListPartiesAsync(
method RpcFunc2Async (line 7373) | public async Task<IApiRpc> RpcFunc2Async(
method RpcFuncAsync (line 7428) | public async Task<IApiRpc> RpcFuncAsync(
method SessionLogoutAsync (line 7486) | public async Task SessionLogoutAsync(
method ReadStorageObjectsAsync (line 7522) | public async Task<IApiStorageObjects> ReadStorageObjectsAsync(
method WriteStorageObjectsAsync (line 7559) | public async Task<IApiStorageObjectAcks> WriteStorageObjectsAsync(
method DeleteStorageObjectsAsync (line 7596) | public async Task DeleteStorageObjectsAsync(
method ListStorageObjectsAsync (line 7632) | public async Task<IApiStorageObjectList> ListStorageObjectsAsync(
method ListStorageObjects2Async (line 7680) | public async Task<IApiStorageObjectList> ListStorageObjects2Async(
method ListTournamentsAsync (line 7730) | public async Task<IApiTournamentList> ListTournamentsAsync(
method DeleteTournamentRecordAsync (line 7784) | public async Task DeleteTournamentRecordAsync(
method ListTournamentRecordsAsync (line 7819) | public async Task<IApiTournamentRecordList> ListTournamentRecordsAsync(
method WriteTournamentRecord2Async (line 7872) | public async Task<IApiLeaderboardRecord> WriteTournamentRecord2Async(
method WriteTournamentRecordAsync (line 7915) | public async Task<IApiLeaderboardRecord> WriteTournamentRecordAsync(
method JoinTournamentAsync (line 7958) | public async Task JoinTournamentAsync(
method ListTournamentRecordsAroundOwnerAsync (line 7993) | public async Task<IApiTournamentRecordList> ListTournamentRecordsAroun...
method GetUsersAsync (line 8047) | public async Task<IApiUsers> GetUsersAsync(
method ListUserGroupsAsync (line 8092) | public async Task<IApiUserGroupList> ListUserGroupsAsync(
FILE: Nakama/ChannelJoinMessage.cs
class ChannelJoinMessage (line 24) | internal class ChannelJoinMessage
method ToString (line 38) | public override string ToString()
type ChannelType (line 47) | public enum ChannelType : uint
FILE: Nakama/ChannelLeaveMessage.cs
class ChannelLeaveMessage (line 24) | internal class ChannelLeaveMessage
method ToString (line 29) | public override string ToString()
FILE: Nakama/ChannelRemoveMessage.cs
class ChannelRemoveMessage (line 24) | internal class ChannelRemoveMessage
method ToString (line 32) | public override string ToString()
FILE: Nakama/ChannelSendMessage.cs
class ChannelSendMessage (line 24) | internal class ChannelSendMessage
method ToString (line 32) | public override string ToString()
FILE: Nakama/ChannelUpdateMessage.cs
class ChannelUpdateMessage (line 24) | internal class ChannelUpdateMessage
method ToString (line 35) | public override string ToString()
FILE: Nakama/Client.cs
class Client (line 23) | public class Client : IClient
method Client (line 98) | public Client(string serverKey) : this(serverKey, HttpRequestAdapter.W...
method Client (line 102) | public Client(string serverKey, IHttpAdapter adapter) : this(DefaultSc...
method Client (line 107) | public Client(string scheme, string host, int port, string serverKey) ...
method Client (line 112) | public Client(string scheme, string host, int port, string serverKey, ...
method Client (line 126) | public Client(Uri uri, string serverKey) : this(
method Client (line 131) | public Client(Uri uri, string serverKey, IHttpAdapter adapter, bool au...
method AddFriendsAsync (line 145) | public async Task AddFriendsAsync(ISession session, IEnumerable<string...
method AddGroupUsersAsync (line 162) | public async Task AddGroupUsersAsync(ISession session, string groupId,...
method AuthenticateAppleAsync (line 177) | public async Task<ISession> AuthenticateAppleAsync(string token, strin...
method AuthenticateCustomAsync (line 189) | public async Task<ISession> AuthenticateCustomAsync(string id, string ...
method AuthenticateDeviceAsync (line 202) | public async Task<ISession> AuthenticateDeviceAsync(string id, string ...
method AuthenticateEmailAsync (line 214) | public async Task<ISession> AuthenticateEmailAsync(string email, strin...
method AuthenticateFacebookAsync (line 227) | public async Task<ISession> AuthenticateFacebookAsync(string token, st...
method AuthenticateGameCenterAsync (line 239) | public async Task<ISession> AuthenticateGameCenterAsync(string bundleI...
method AuthenticateGoogleAsync (line 261) | public async Task<ISession> AuthenticateGoogleAsync(string token, stri...
method AuthenticateSteamAsync (line 273) | public async Task<ISession> AuthenticateSteamAsync(string token, strin...
method BanGroupUsersAsync (line 285) | public async Task BanGroupUsersAsync(ISession session, string groupId,...
method BlockFriendsAsync (line 300) | public async Task BlockFriendsAsync(ISession session, IEnumerable<stri...
method CreateGroupAsync (line 316) | public async Task<IApiGroup> CreateGroupAsync(ISession session, string...
method DeleteAccountAsync (line 339) | public async Task DeleteAccountAsync(ISession session, RetryConfigurat...
method DeleteFriendsAsync (line 354) | public async Task DeleteFriendsAsync(ISession session, IEnumerable<str...
method DeleteGroupAsync (line 370) | public async Task DeleteGroupAsync(ISession session, string groupId,
method DeleteLeaderboardRecordAsync (line 385) | public async Task DeleteLeaderboardRecordAsync(ISession session, strin...
method DeleteNotificationsAsync (line 400) | public async Task DeleteNotificationsAsync(ISession session, IEnumerab...
method DeleteStorageObjectsAsync (line 415) | public async Task DeleteStorageObjectsAsync(ISession session, StorageO...
method DeleteTournamentRecordAsync (line 446) | public async Task DeleteTournamentRecordAsync(ISession session, string...
method DemoteGroupUsersAsync (line 459) | public async Task DemoteGroupUsersAsync(ISession session, string group...
method EventAsync (line 474) | public async Task EventAsync(ISession session, string name, Dictionary...
method GetAccountAsync (line 492) | public async Task<IApiAccount> GetAccountAsync(ISession session, Retry...
method GetSubscriptionAsync (line 506) | public async Task<IApiValidatedSubscription> GetSubscriptionAsync(ISes...
method GetUsersAsync (line 521) | public async Task<IApiUsers> GetUsersAsync(ISession session, IEnumerab...
method ImportFacebookFriendsAsync (line 537) | public async Task ImportFacebookFriendsAsync(ISession session, string ...
method ImportSteamFriendsAsync (line 553) | public async Task ImportSteamFriendsAsync(ISession session, string tok...
method JoinGroupAsync (line 569) | public async Task JoinGroupAsync(ISession session, string groupId, Ret...
method JoinTournamentAsync (line 583) | public async Task JoinTournamentAsync(ISession session, string tournam...
method KickGroupUsersAsync (line 598) | public async Task KickGroupUsersAsync(ISession session, string groupId...
method LeaveGroupAsync (line 613) | public async Task LeaveGroupAsync(ISession session, string groupId,
method LinkAppleAsync (line 627) | public async Task LinkAppleAsync(ISession session, string token, Retry...
method LinkCustomAsync (line 642) | public async Task LinkCustomAsync(ISession session, string id, RetryCo...
method LinkDeviceAsync (line 657) | public async Task LinkDeviceAsync(ISession session, string id, RetryCo...
method LinkEmailAsync (line 672) | public async Task LinkEmailAsync(ISession session, string email, strin...
method LinkFacebookAsync (line 687) | public async Task LinkFacebookAsync(ISession session, string token, bo...
method LinkGameCenterAsync (line 702) | public async Task LinkGameCenterAsync(ISession session, string bundleI...
method LinkGoogleAsync (line 725) | public async Task LinkGoogleAsync(ISession session, string token, Retr...
method LinkSteamAsync (line 740) | public async Task LinkSteamAsync(ISession session, string token, bool ...
method ListChannelMessagesAsync (line 756) | public Task<IApiChannelMessageList> ListChannelMessagesAsync(ISession ...
method ListChannelMessagesAsync (line 762) | public async Task<IApiChannelMessageList> ListChannelMessagesAsync(ISe...
method ListFriendsAsync (line 778) | public async Task<IApiFriendList> ListFriendsAsync(ISession session, i...
method ListGroupUsersAsync (line 797) | public async Task<IApiGroupUserList> ListGroupUsersAsync(ISession sess...
method ListGroupsAsync (line 823) | public async Task<IApiGroupList> ListGroupsAsync(ISession session, str...
method ListLeaderboardRecordsAsync (line 843) | public async Task<IApiLeaderboardRecordList> ListLeaderboardRecordsAsy...
method ListLeaderboardRecordsAroundOwnerAsync (line 882) | public async Task<IApiLeaderboardRecordList> ListLeaderboardRecordsAro...
method ListMatchesAsync (line 917) | public async Task<IApiMatchList> ListMatchesAsync(ISession session, in...
method ListNotificationsAsync (line 937) | public async Task<IApiNotificationList> ListNotificationsAsync(ISessio...
method ListPartiesAsync (line 955) | public async Task<IApiPartyList> ListPartiesAsync(ISession session, in...
method ListStorageObjects (line 968) | [Obsolete("ListStorageObjects is obsolete, please use ListStorageObjec...
method ListStorageObjectsAsync (line 977) | public async Task<IApiStorageObjectList> ListStorageObjectsAsync(ISess...
method ListStorageObjectsAsync (line 985) | public async Task<IApiStorageObjectList> ListStorageObjectsAsync(ISess...
method ListSubscriptionsAsync (line 1001) | public async Task<IApiSubscriptionList> ListSubscriptionsAsync(ISessio...
method ListTournamentRecordsAroundOwnerAsync (line 1021) | public async Task<IApiTournamentRecordList> ListTournamentRecordsAroun...
method ListTournamentRecordsAsync (line 1060) | public async Task<IApiTournamentRecordList> ListTournamentRecordsAsync...
method ListTournamentsAsync (line 1095) | public async Task<IApiTournamentList> ListTournamentsAsync(ISession se...
method ListUserGroupsAsync (line 1112) | public Task<IApiUserGroupList> ListUserGroupsAsync(ISession session, i...
method ListUserGroupsAsync (line 1117) | public async Task<IApiUserGroupList> ListUserGroupsAsync(ISession sess...
method ListUsersStorageObjectsAsync (line 1132) | public async Task<IApiStorageObjectList> ListUsersStorageObjectsAsync(...
method PromoteGroupUsersAsync (line 1148) | public async Task PromoteGroupUsersAsync(ISession session, string grou...
method ReadStorageObjectsAsync (line 1163) | public async Task<IApiStorageObjects> ReadStorageObjectsAsync(ISession...
method RpcAsync (line 1194) | public async Task<IApiRpc> RpcAsync(ISession session, string id, strin...
method RpcAsync (line 1209) | public async Task<IApiRpc> RpcAsync(ISession session, string id, Retry...
method RpcAsync (line 1224) | public Task<IApiRpc> RpcAsync(string httpkey, string id, string payload,
method RpcAsync (line 1230) | public Task<IApiRpc> RpcAsync(string httpkey, string id, RetryConfigur...
method SessionLogoutAsync (line 1236) | public Task SessionLogoutAsync(ISession session, RetryConfiguration re...
method SessionLogoutAsync (line 1241) | public Task SessionLogoutAsync(string authToken, string refreshToken,
method SessionRefreshAsync (line 1248) | public async Task<ISession> SessionRefreshAsync(ISession session, Dict...
method ToString (line 1282) | public override string ToString() =>
method UnlinkAppleAsync (line 1286) | public async Task UnlinkAppleAsync(ISession session, string token, Ret...
method UnlinkCustomAsync (line 1301) | public async Task UnlinkCustomAsync(ISession session, string id, Retry...
method UnlinkDeviceAsync (line 1316) | public async Task UnlinkDeviceAsync(ISession session, string id, Retry...
method UnlinkEmailAsync (line 1331) | public async Task UnlinkEmailAsync(ISession session, string email, str...
method UnlinkFacebookAsync (line 1346) | public async Task UnlinkFacebookAsync(ISession session, string token,
method UnlinkGameCenterAsync (line 1361) | public async Task UnlinkGameCenterAsync(ISession session, string bundl...
method UnlinkGoogleAsync (line 1385) | public async Task UnlinkGoogleAsync(ISession session, string token,
method UnlinkSteamAsync (line 1400) | public async Task UnlinkSteamAsync(ISession session, string token, Ret...
method UpdateAccountAsync (line 1419) | public async Task UpdateAccountAsync(ISession session, string username...
method UpdateGroupAsync (line 1447) | public async Task UpdateGroupAsync(ISession session, string groupId, s...
method ValidatePurchaseAppleAsync (line 1470) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseAppleA...
method ValidatePurchaseFacebookInstantAsync (line 1488) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseFacebo...
method ValidatePurchaseGoogleAsync (line 1506) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseGoogle...
method ValidatePurchaseHuaweiAsync (line 1524) | public async Task<IApiValidatePurchaseResponse> ValidatePurchaseHuawei...
method ValidateSubscriptionAppleAsync (line 1543) | public async Task<IApiValidateSubscriptionResponse> ValidateSubscripti...
method ValidateSubscriptionGoogleAsync (line 1561) | public async Task<IApiValidateSubscriptionResponse> ValidateSubscripti...
method WriteLeaderboardRecordAsync (line 1580) | public async Task<IApiLeaderboardRecord> WriteLeaderboardRecordAsync(I...
method WriteStorageObjectsAsync (line 1602) | public async Task<IApiStorageObjectAcks> WriteStorageObjectsAsync(ISes...
method WriteTournamentRecordAsync (line 1632) | public async Task<IApiLeaderboardRecord> WriteTournamentRecordAsync(IS...
FILE: Nakama/Console/ConsoleClient.gen.cs
class ApiResponseException (line 15) | public sealed class ApiResponseException : Exception
method ApiResponseException (line 21) | public ApiResponseException(long statusCode, string content, int grpcC...
method ApiResponseException (line 27) | public ApiResponseException(string message, Exception e) : base(messag...
method ApiResponseException (line 33) | public ApiResponseException(string content) : this(-1L, content, -1)
method ToString (line 37) | public override string ToString()
type IApiConsole_AddGroupUsersRequest (line 46) | public interface IApiConsole_AddGroupUsersRequest
class ApiConsole_AddGroupUsersRequest (line 61) | internal class ApiConsole_AddGroupUsersRequest : IApiConsole_AddGroupUse...
method ToString (line 72) | public override string ToString()
type IApiConsole_CallApiEndpointRequest (line 84) | public interface IApiConsole_CallApiEndpointRequest
class ApiConsole_CallApiEndpointRequest (line 104) | internal class ApiConsole_CallApiEndpointRequest : IApiConsole_CallApiEn...
method ToString (line 121) | public override string ToString()
type IApiConsole_CallRpcEndpointRequest (line 140) | public interface IApiConsole_CallRpcEndpointRequest
class ApiConsole_CallRpcEndpointRequest (line 160) | internal class ApiConsole_CallRpcEndpointRequest : IApiConsole_CallRpcEn...
method ToString (line 177) | public override string ToString()
type IApiConsole_RequireUserMfaRequest (line 196) | public interface IApiConsole_RequireUserMfaRequest
class ApiConsole_RequireUserMfaRequest (line 206) | internal class ApiConsole_RequireUserMfaRequest : IApiConsole_RequireUse...
method ToString (line 213) | public override string ToString()
type IApiConsole_UnlinkDeviceRequest (line 224) | public interface IApiConsole_UnlinkDeviceRequest
class ApiConsole_UnlinkDeviceRequest (line 234) | internal class ApiConsole_UnlinkDeviceRequest : IApiConsole_UnlinkDevice...
method ToString (line 241) | public override string ToString()
type IApiConsole_UpdateAccountRequest (line 252) | public interface IApiConsole_UpdateAccountRequest
class ApiConsole_UpdateAccountRequest (line 317) | internal class ApiConsole_UpdateAccountRequest : IApiConsole_UpdateAccou...
method ToString (line 370) | public override string ToString()
type IApiConsole_UpdateGroupRequest (line 398) | public interface IApiConsole_UpdateGroupRequest
class ApiConsole_UpdateGroupRequest (line 438) | internal class ApiConsole_UpdateGroupRequest : IApiConsole_UpdateGroupRe...
method ToString (line 469) | public override string ToString()
type IApiConsole_UpdateSettingRequest (line 486) | public interface IApiConsole_UpdateSettingRequest
class ApiConsole_UpdateSettingRequest (line 496) | internal class ApiConsole_UpdateSettingRequest : IApiConsole_UpdateSetti...
method ToString (line 503) | public override string ToString()
type IApiConsole_WriteStorageObjectRequest (line 514) | public interface IApiConsole_WriteStorageObjectRequest
class ApiConsole_WriteStorageObjectRequest (line 539) | internal class ApiConsole_WriteStorageObjectRequest : IApiConsole_WriteS...
method ToString (line 558) | public override string ToString()
type IConfigWarning (line 572) | public interface IConfigWarning
class ConfigWarning (line 587) | internal class ConfigWarning : IConfigWarning
method ToString (line 598) | public override string ToString()
type IGroupUserListGroupUser (line 610) | public interface IGroupUserListGroupUser
class GroupUserListGroupUser (line 625) | internal class GroupUserListGroupUser : IGroupUserListGroupUser
method ToString (line 638) | public override string ToString()
type IRuntimeInfoModuleInfo (line 650) | public interface IRuntimeInfoModuleInfo
class RuntimeInfoModuleInfo (line 665) | internal class RuntimeInfoModuleInfo : IRuntimeInfoModuleInfo
method ToString (line 676) | public override string ToString()
type IUserGroupListUserGroup (line 688) | public interface IUserGroupListUserGroup
class UserGroupListUserGroup (line 703) | internal class UserGroupListUserGroup : IUserGroupListUserGroup
method ToString (line 716) | public override string ToString()
type IApiAccountDevice (line 728) | public interface IApiAccountDevice
class ApiAccountDevice (line 743) | internal class ApiAccountDevice : IApiAccountDevice
method ToString (line 756) | public override string ToString()
type IApiChannelMessage (line 774) | public interface IApiChannelMessage
class ApiChannelMessage (line 844) | internal class ApiChannelMessage : IApiChannelMessage
method ToString (line 899) | public override string ToString()
type IApiChannelMessageList (line 922) | public interface IApiChannelMessageList
class ApiChannelMessageList (line 947) | internal class ApiChannelMessageList : IApiChannelMessageList
method ToString (line 968) | public override string ToString()
type IApiFriend (line 982) | public interface IApiFriend
class ApiFriend (line 1007) | internal class ApiFriend : IApiFriend
method ToString (line 1028) | public override string ToString()
type IApiFriendList (line 1042) | public interface IApiFriendList
class ApiFriendList (line 1057) | internal class ApiFriendList : IApiFriendList
method ToString (line 1070) | public override string ToString()
type IApiGroup (line 1082) | public interface IApiGroup
class ApiGroup (line 1147) | internal class ApiGroup : IApiGroup
method ToString (line 1198) | public override string ToString()
type IApiGroupUserList (line 1220) | public interface IApiGroupUserList
class ApiGroupUserList (line 1235) | internal class ApiGroupUserList : IApiGroupUserList
method ToString (line 1248) | public override string ToString()
type IApiLeaderboardRecord (line 1260) | public interface IApiLeaderboardRecord
class ApiLeaderboardRecord (line 1325) | internal class ApiLeaderboardRecord : IApiLeaderboardRecord
method ToString (line 1376) | public override string ToString()
type IApiLeaderboardRecordList (line 1398) | public interface IApiLeaderboardRecordList
class ApiLeaderboardRecordList (line 1428) | internal class ApiLeaderboardRecordList : IApiLeaderboardRecordList
method ToString (line 1455) | public override string ToString()
type IApiPurchaseList (line 1470) | public interface IApiPurchaseList
class ApiPurchaseList (line 1490) | internal class ApiPurchaseList : IApiPurchaseList
method ToString (line 1507) | public override string ToString()
type IApiStorageObject (line 1520) | public interface IApiStorageObject
class ApiStorageObject (line 1570) | internal class ApiStorageObject : IApiStorageObject
method ToString (line 1609) | public override string ToString()
type IApiStorageObjectAck (line 1628) | public interface IApiStorageObjectAck
class ApiStorageObjectAck (line 1663) | internal class ApiStorageObjectAck : IApiStorageObjectAck
method ToString (line 1690) | public override string ToString()
type ApiStoreEnvironment (line 1706) | public enum ApiStoreEnvironment
type ApiStoreProvider (line 1725) | public enum ApiStoreProvider
type IApiSubscriptionList (line 1748) | public interface IApiSubscriptionList
class ApiSubscriptionList (line 1768) | internal class ApiSubscriptionList : IApiSubscriptionList
method ToString (line 1785) | public override string ToString()
type IApiUserGroupList (line 1798) | public interface IApiUserGroupList
class ApiUserGroupList (line 1813) | internal class ApiUserGroupList : IApiUserGroupList
method ToString (line 1826) | public override string ToString()
type IApiValidatedPurchase (line 1838) | public interface IApiValidatedPurchase
class ApiValidatedPurchase (line 1898) | internal class ApiValidatedPurchase : IApiValidatedPurchase
method ToString (line 1949) | public override string ToString()
type IApiValidatedSubscription (line 1970) | public interface IApiValidatedSubscription
class ApiValidatedSubscription (line 2040) | internal class ApiValidatedSubscription : IApiValidatedSubscription
method ToString (line 2099) | public override string ToString()
type IConsoleAccountExport (line 2122) | public interface IConsoleAccountExport
class ConsoleAccountExport (line 2167) | internal class ConsoleAccountExport : IConsoleAccountExport
method ToString (line 2218) | public override string ToString()
type IConsoleAccountList (line 2236) | public interface IConsoleAccountList
class ConsoleAccountList (line 2256) | internal class ConsoleAccountList : IConsoleAccountList
method ToString (line 2273) | public override string ToString()
type IConsoleAddUserRequest (line 2286) | public interface IConsoleAddUserRequest
class ConsoleAddUserRequest (line 2321) | internal class ConsoleAddUserRequest : IConsoleAddUserRequest
method ToString (line 2350) | public override string ToString()
type IConsoleApiEndpointDescriptor (line 2366) | public interface IConsoleApiEndpointDescriptor
class ConsoleApiEndpointDescriptor (line 2381) | internal class ConsoleApiEndpointDescriptor : IConsoleApiEndpointDescriptor
method ToString (line 2392) | public override string ToString()
type IConsoleApiEndpointList (line 2404) | public interface IConsoleApiEndpointList
class ConsoleApiEndpointList (line 2419) | internal class ConsoleApiEndpointList : IConsoleApiEndpointList
method ToString (line 2434) | public override string ToString()
type IConsoleAuthenticateLogoutRequest (line 2446) | public interface IConsoleAuthenticateLogoutRequest
class ConsoleAuthenticateLogoutRequest (line 2456) | internal class ConsoleAuthenticateLogoutRequest : IConsoleAuthenticateLo...
method ToString (line 2463) | public override string ToString()
type IConsoleAuthenticateMFASetupRequest (line 2474) | public interface IConsoleAuthenticateMFASetupRequest
class ConsoleAuthenticateMFASetupRequest (line 2489) | internal class ConsoleAuthenticateMFASetupRequest : IConsoleAuthenticate...
method ToString (line 2500) | public override string ToString()
type IConsoleAuthenticateMFASetupResponse (line 2512) | public interface IConsoleAuthenticateMFASetupResponse
class ConsoleAuthenticateMFASetupResponse (line 2522) | internal class ConsoleAuthenticateMFASetupResponse : IConsoleAuthenticat...
method ToString (line 2529) | public override string ToString()
type IConsoleAuthenticateRequest (line 2540) | public interface IConsoleAuthenticateRequest
class ConsoleAuthenticateRequest (line 2560) | internal class ConsoleAuthenticateRequest : IConsoleAuthenticateRequest
method ToString (line 2575) | public override string ToString()
type IConsoleCallApiEndpointResponse (line 2588) | public interface IConsoleCallApiEndpointResponse
class ConsoleCallApiEndpointResponse (line 2603) | internal class ConsoleCallApiEndpointResponse : IConsoleCallApiEndpointR...
method ToString (line 2614) | public override string ToString()
type IConsoleConfig (line 2626) | public interface IConsoleConfig
class ConsoleConfig (line 2646) | internal class ConsoleConfig : IConsoleConfig
method ToString (line 2663) | public override string ToString()
type IConsoleConsoleSession (line 2676) | public interface IConsoleConsoleSession
class ConsoleConsoleSession (line 2691) | internal class ConsoleConsoleSession : IConsoleConsoleSession
method ToString (line 2702) | public override string ToString()
type IConsoleDeleteChannelMessagesResponse (line 2714) | public interface IConsoleDeleteChannelMessagesResponse
class ConsoleDeleteChannelMessagesResponse (line 2724) | internal class ConsoleDeleteChannelMessagesResponse : IConsoleDeleteChan...
method ToString (line 2731) | public override string ToString()
type IConsoleGroupExport (line 2742) | public interface IConsoleGroupExport
class ConsoleGroupExport (line 2757) | internal class ConsoleGroupExport : IConsoleGroupExport
method ToString (line 2772) | public override string ToString()
type ConsoleListChannelMessagesRequestType (line 2784) | public enum ConsoleListChannelMessagesRequestType
type IConsoleMatchListMatch (line 2807) | public interface IConsoleMatchListMatch
class ConsoleMatchListMatch (line 2822) | internal class ConsoleMatchListMatch : IConsoleMatchListMatch
method ToString (line 2835) | public override string ToString()
type IConsoleMatchState (line 2847) | public interface IConsoleMatchState
class ConsoleMatchState (line 2867) | internal class ConsoleMatchState : IConsoleMatchState
method ToString (line 2884) | public override string ToString()
type IConsoleRuntimeInfo (line 2897) | public interface IConsoleRuntimeInfo
class ConsoleRuntimeInfo (line 2932) | internal class ConsoleRuntimeInfo : IConsoleRuntimeInfo
method ToString (line 2965) | public override string ToString()
type IConsoleSetting (line 2981) | public interface IConsoleSetting
class ConsoleSetting (line 3001) | internal class ConsoleSetting : IConsoleSetting
method ToString (line 3016) | public override string ToString()
type IConsoleSettingList (line 3029) | public interface IConsoleSettingList
class ConsoleSettingList (line 3039) | internal class ConsoleSettingList : IConsoleSettingList
method ToString (line 3048) | public override string ToString()
type ConsoleStatusHealth (line 3059) | public enum ConsoleStatusHealth
type IConsoleStatusList (line 3082) | public interface IConsoleStatusList
class ConsoleStatusList (line 3097) | internal class ConsoleStatusList : IConsoleStatusList
method ToString (line 3110) | public override string ToString()
type IConsoleStatusListStatus (line 3122) | public interface IConsoleStatusListStatus
class ConsoleStatusListStatus (line 3177) | internal class ConsoleStatusListStatus : IConsoleStatusListStatus
method ToString (line 3222) | public override string ToString()
type IConsoleStorageCollectionsList (line 3242) | public interface IConsoleStorageCollectionsList
class ConsoleStorageCollectionsList (line 3252) | internal class ConsoleStorageCollectionsList : IConsoleStorageCollection...
method ToString (line 3259) | public override string ToString()
type IConsoleStorageList (line 3270) | public interface IConsoleStorageList
class ConsoleStorageList (line 3290) | internal class ConsoleStorageList : IConsoleStorageList
method ToString (line 3307) | public override string ToString()
type IConsoleStorageListObject (line 3320) | public interface IConsoleStorageListObject
class ConsoleStorageListObject (line 3365) | internal class ConsoleStorageListObject : IConsoleStorageListObject
method ToString (line 3400) | public override string ToString()
type IConsoleUserList (line 3418) | public interface IConsoleUserList
class ConsoleUserList (line 3428) | internal class ConsoleUserList : IConsoleUserList
method ToString (line 3437) | public override string ToString()
type IConsoleUserListUser (line 3448) | public interface IConsoleUserListUser
class ConsoleUserListUser (line 3478) | internal class ConsoleUserListUser : IConsoleUserListUser
method ToString (line 3503) | public override string ToString()
type ConsoleUserRole (line 3521) | public enum ConsoleUserRole
type IConsoleWalletLedger (line 3548) | public interface IConsoleWalletLedger
class ConsoleWalletLedger (line 3583) | internal class ConsoleWalletLedger : IConsoleWalletLedger
method ToString (line 3610) | public override string ToString()
type IConsoleWalletLedgerList (line 3626) | public interface IConsoleWalletLedgerList
class ConsoleWalletLedgerList (line 3646) | internal class ConsoleWalletLedgerList : IConsoleWalletLedgerList
method ToString (line 3663) | public override string ToString()
type IGooglerpcStatus (line 3676) | public interface IGooglerpcStatus
class GooglerpcStatus (line 3696) | internal class GooglerpcStatus : IGooglerpcStatus
method ToString (line 3713) | public override string ToString()
type INakamaapiAccount (line 3726) | public interface INakamaapiAccount
class NakamaapiAccount (line 3766) | internal class NakamaapiAccount : INakamaapiAccount
method ToString (line 3801) | public override string ToString()
type INakamaapiMatch (line 3818) | public interface INakamaapiMatch
class NakamaapiMatch (line 3853) | internal class NakamaapiMatch : INakamaapiMatch
method ToString (line 3880) | public override string ToString()
type INakamaapiNotification (line 3896) | public interface INakamaapiNotification
class NakamaapiNotification (line 3936) | internal class NakamaapiNotification : INakamaapiNotification
method ToString (line 3967) | public override string ToString()
type INakamaapiUser (line 3984) | public interface INakamaapiUser
class NakamaapiUser (line 4079) | internal class NakamaapiUser : INakamaapiUser
method ToString (line 4154) | public override string ToString()
type INakamaconsoleAccount (line 4182) | public interface INakamaconsoleAccount
class NakamaconsoleAccount (line 4197) | internal class NakamaconsoleAccount : INakamaconsoleAccount
method ToString (line 4210) | public override string ToString()
type INakamaconsoleGroupList (line 4222) | public interface INakamaconsoleGroupList
class NakamaconsoleGroupList (line 4242) | internal class NakamaconsoleGroupList : INakamaconsoleGroupList
method ToString (line 4259) | public override string ToString()
type INakamaconsoleLeaderboard (line 4272) | public interface INakamaconsoleLeaderboard
class NakamaconsoleLeaderboard (line 4387) | internal class NakamaconsoleLeaderboard : INakamaconsoleLeaderboard
method ToString (line 4478) | public override string ToString()
type INakamaconsoleLeaderboardList (line 4510) | public interface INakamaconsoleLeaderboardList
class NakamaconsoleLeaderboardList (line 4530) | internal class NakamaconsoleLeaderboardList : INakamaconsoleLeaderboardList
method ToString (line 4547) | public override string ToString()
type INakamaconsoleMatchList (line 4560) | public interface INakamaconsoleMatchList
class NakamaconsoleMatchList (line 4570) | internal class NakamaconsoleMatchList : INakamaconsoleMatchList
method ToString (line 4579) | public override string ToString()
type INakamaconsoleNotification (line 4590) | public interface INakamaconsoleNotification
class NakamaconsoleNotification (line 4635) | internal class NakamaconsoleNotification : INakamaconsoleNotification
method ToString (line 4670) | public override string ToString()
type INakamaconsoleNotificationList (line 4688) | public interface INakamaconsoleNotificationList
class NakamaconsoleNotificationList (line 4708) | internal class NakamaconsoleNotificationList : INakamaconsoleNotificatio...
method ToString (line 4725) | public override string ToString()
type IProtobufAny (line 4738) | public interface IProtobufAny
class ProtobufAny (line 4748) | internal class ProtobufAny : IProtobufAny
method ToString (line 4755) | public override string ToString()
type IRealtimeUserPresence (line 4766) | public interface IRealtimeUserPresence
class RealtimeUserPresence (line 4796) | internal class RealtimeUserPresence : IRealtimeUserPresence
method ToString (line 4819) | public override string ToString()
class ApiClient (line 4834) | internal class ApiClient
method ApiClient (line 4841) | public ApiClient(Uri baseUri, IHttpAdapter httpAdapter, int timeout = 10)
method ConsoleDeleteAccountsAsync (line 4851) | public async Task ConsoleDeleteAccountsAsync(
method ConsoleListAccountsAsync (line 4880) | public async Task<IConsoleAccountList> ConsoleListAccountsAsync(
method ConsoleGetWalletLedgerAsync (line 4922) | public async Task<IConsoleWalletLedgerList> ConsoleGetWalletLedgerAsync(
method ConsoleDeleteAccountAsync (line 4966) | public async Task ConsoleDeleteAccountAsync(
method ConsoleGetAccountAsync (line 5005) | public async Task<INakamaconsoleAccount> ConsoleGetAccountAsync(
method ConsoleUpdateAccountAsync (line 5041) | public async Task ConsoleUpdateAccountAsync(
method ConsoleBanAccountAsync (line 5083) | public async Task ConsoleBanAccountAsync(
method ConsoleExportAccountAsync (line 5118) | public async Task<IConsoleAccountExport> ConsoleExportAccountAsync(
method ConsoleGetFriendsAsync (line 5154) | public async Task<IApiFriendList> ConsoleGetFriendsAsync(
method ConsoleDeleteFriendAsync (line 5190) | public async Task ConsoleDeleteFriendAsync(
method ConsoleGetGroupsAsync (line 5231) | public async Task<IApiUserGroupList> ConsoleGetGroupsAsync(
method ConsoleDeleteGroupUserAsync (line 5267) | public async Task ConsoleDeleteGroupUserAsync(
method ConsoleUnbanAccountAsync (line 5308) | public async Task ConsoleUnbanAccountAsync(
method ConsoleUnlinkAppleAsync (line 5343) | public async Task ConsoleUnlinkAppleAsync(
method ConsoleUnlinkCustomAsync (line 5378) | public async Task ConsoleUnlinkCustomAsync(
method ConsoleUnlinkDeviceAsync (line 5413) | public async Task ConsoleUnlinkDeviceAsync(
method ConsoleUnlinkEmailAsync (line 5455) | public async Task ConsoleUnlinkEmailAsync(
method ConsoleUnlinkFacebookAsync (line 5490) | public async Task ConsoleUnlinkFacebookAsync(
method ConsoleUnlinkFacebookInstantGameAsync (line 5525) | public async Task ConsoleUnlinkFacebookInstantGameAsync(
method ConsoleUnlinkGameCenterAsync (line 5560) | public async Task ConsoleUnlinkGameCenterAsync(
method ConsoleUnlinkGoogleAsync (line 5595) | public async Task ConsoleUnlinkGoogleAsync(
method ConsoleUnlinkSteamAsync (line 5630) | public async Task ConsoleUnlinkSteamAsync(
method ConsoleDeleteWalletLedgerAsync (line 5665) | public async Task ConsoleDeleteWalletLedgerAsync(
method ConsoleDeleteAllDataAsync (line 5706) | public async Task ConsoleDeleteAllDataAsync(
method ConsoleListApiEndpointsAsync (line 5735) | public async Task<IConsoleApiEndpointList> ConsoleListApiEndpointsAsync(
method ConsoleCallRpcEndpointAsync (line 5765) | public async Task<IConsoleCallApiEndpointResponse> ConsoleCallRpcEndpo...
method ConsoleCallApiEndpointAsync (line 5808) | public async Task<IConsoleCallApiEndpointResponse> ConsoleCallApiEndpo...
method ConsoleAuthenticateAsync (line 5851) | public async Task<IConsoleConsoleSession> ConsoleAuthenticateAsync(
method ConsoleAuthenticateLogoutAsync (line 5885) | public async Task ConsoleAuthenticateLogoutAsync(
method ConsoleAuthenticateMFASetupAsync (line 5921) | public async Task<IConsoleAuthenticateMFASetupResponse> ConsoleAuthent...
method ConsoleListChannelMessagesAsync (line 5958) | public async Task<IApiChannelMessageList> ConsoleListChannelMessagesAs...
method ConsoleGetConfigAsync (line 6012) | public async Task<IConsoleConfig> ConsoleGetConfigAsync(
method ConsoleListGroupsAsync (line 6042) | public async Task<INakamaconsoleGroupList> ConsoleListGroupsAsync(
method ConsoleDemoteGroupMemberAsync (line 6080) | public async Task ConsoleDemoteGroupMemberAsync(
method ConsolePromoteGroupMemberAsync (line 6121) | public async Task ConsolePromoteGroupMemberAsync(
method ConsoleAddGroupUsersAsync (line 6162) | public async Task ConsoleAddGroupUsersAsync(
method ConsoleDeleteGroupAsync (line 6204) | public async Task ConsoleDeleteGroupAsync(
method ConsoleGetGroupAsync (line 6239) | public async Task<IApiGroup> ConsoleGetGroupAsync(
method ConsoleUpdateGroupAsync (line 6275) | public async Task ConsoleUpdateGroupAsync(
method ConsoleExportGroupAsync (line 6317) | public async Task<IConsoleGroupExport> ConsoleExportGroupAsync(
method ConsoleGetMembersAsync (line 6353) | public async Task<IApiGroupUserList> ConsoleGetMembersAsync(
method ConsoleGetPurchaseAsync (line 6389) | public async Task<IApiValidatedPurchase> ConsoleGetPurchaseAsync(
method ConsoleGetSubscriptionAsync (line 6425) | public async Task<IApiValidatedSubscription> ConsoleGetSubscriptionAsync(
method ConsoleListLeaderboardsAsync (line 6461) | public async Task<INakamaconsoleLeaderboardList> ConsoleListLeaderboar...
method ConsoleDeleteLeaderboardAsync (line 6495) | public async Task ConsoleDeleteLeaderboardAsync(
method ConsoleGetLeaderboardAsync (line 6530) | public async Task<INakamaconsoleLeaderboard> ConsoleGetLeaderboardAsync(
method ConsoleDeleteLeaderboardRecordAsync (line 6566) | public async Task ConsoleDeleteLeaderboardRecordAsync(
method ConsoleListLeaderboardRecordsAsync (line 6607) | public async Task<IApiLeaderboardRecordList> ConsoleListLeaderboardRec...
method ConsoleListMatchesAsync (line 6660) | public async Task<INakamaconsoleMatchList> ConsoleListMatchesAsync(
method ConsoleGetMatchStateAsync (line 6722) | public async Task<IConsoleMatchState> ConsoleGetMatchStateAsync(
method ConsoleDeleteChannelMessagesAsync (line 6758) | public async Task<IConsoleDeleteChannelMessagesResponse> ConsoleDelete...
method ConsoleListNotificationsAsync (line 6797) | public async Task<INakamaconsoleNotificationList> ConsoleListNotificat...
method ConsoleDeleteNotificationAsync (line 6839) | public async Task ConsoleDeleteNotificationAsync(
method ConsoleGetNotificationAsync (line 6874) | public async Task<INakamaconsoleNotification> ConsoleGetNotificationAs...
method ConsoleListPurchasesAsync (line 6910) | public async Task<IApiPurchaseList> ConsoleListPurchasesAsync(
method ConsoleGetRuntimeAsync (line 6952) | public async Task<IConsoleRuntimeInfo> ConsoleGetRuntimeAsync(
method ConsoleListSettingsAsync (line 6982) | public async Task<IConsoleSettingList> ConsoleListSettingsAsync(
method ConsoleGetSettingAsync (line 7017) | public async Task<IConsoleSetting> ConsoleGetSettingAsync(
method ConsoleUpdateSettingAsync (line 7053) | public async Task<IConsoleSetting> ConsoleUpdateSettingAsync(
method ConsoleGetStatusAsync (line 7096) | public async Task<IConsoleStatusList> ConsoleGetStatusAsync(
method ConsoleDeleteStorageAsync (line 7126) | public async Task ConsoleDeleteStorageAsync(
method ConsoleListStorageAsync (line 7155) | public async Task<IConsoleStorageList> ConsoleListStorageAsync(
method ConsoleListStorageCollectionsAsync (line 7201) | public async Task<IConsoleStorageCollectionsList> ConsoleListStorageCo...
method ConsoleDeleteStorageObjectAsync (line 7231) | public async Task ConsoleDeleteStorageObjectAsync(
method ConsoleGetStorageAsync (line 7282) | public async Task<IApiStorageObject> ConsoleGetStorageAsync(
method ConsoleWriteStorageObjectAsync (line 7330) | public async Task<IApiStorageObjectAck> ConsoleWriteStorageObjectAsync(
method ConsoleDeleteStorageObject2Async (line 7385) | public async Task ConsoleDeleteStorageObject2Async(
method ConsoleListSubscriptionsAsync (line 7438) | public async Task<IApiSubscriptionList> ConsoleListSubscriptionsAsync(
method ConsoleDeleteUserAsync (line 7480) | public async Task ConsoleDeleteUserAsync(
method ConsoleListUsersAsync (line 7513) | public async Task<IConsoleUserList> ConsoleListUsersAsync(
method ConsoleAddUserAsync (line 7543) | public async Task ConsoleAddUserAsync(
method ConsoleRequireUserMfaAsync (line 7579) | public async Task ConsoleRequireUserMfaAsync(
method ConsoleResetUserMfaAsync (line 7621) | public async Task ConsoleResetUserMfaAsync(
FILE: Nakama/GZipHttpClientHandler.cs
class GZipHttpClientHandler (line 25) | internal class GZipHttpClientHandler : DelegatingHandler
method GZipHttpClientHandler (line 27) | public GZipHttpClientHandler(HttpMessageHandler innerHandler)
method SendAsync (line 32) | protected override Task<HttpResponseMessage> SendAsync(HttpRequestMess...
class GZipContent (line 43) | internal class GZipContent : HttpContent
method GZipContent (line 47) | public GZipContent(HttpContent content)
method SerializeToStreamAsync (line 58) | protected override async Task SerializeToStreamAsync(System.IO.Stream ...
method TryComputeLength (line 66) | protected override bool TryComputeLength(out long length)
FILE: Nakama/HttpRequestAdapter.cs
class HttpRequestAdapter (line 32) | public class HttpRequestAdapter : IHttpAdapter
method HttpRequestAdapter (line 41) | public HttpRequestAdapter(HttpClient httpClient)
method SendAsync (line 48) | public async Task<string> SendAsync(string method, Uri uri, IDictionar...
method WithGzip (line 134) | public static IHttpAdapter WithGzip(bool decompression = false, bool c...
method IsTransientException (line 149) | public static bool IsTransientException(Exception e)
FILE: Nakama/IChannel.cs
type IChannel (line 25) | public interface IChannel
class Channel (line 64) | internal class Channel : IChannel
method Equals (line 89) | public override bool Equals(object obj)
method Equals (line 98) | private bool Equals(IChannel other) => string.Equals(Id, other.Id);
method GetHashCode (line 100) | public override int GetHashCode() => Id != null ? Id.GetHashCode() : 0;
method ToString (line 102) | public override string ToString()
FILE: Nakama/IChannelMessageAck.cs
type IChannelMessageAck (line 24) | public interface IChannelMessageAck
class ChannelMessageAck (line 83) | internal class ChannelMessageAck : IChannelMessageAck
method ToString (line 107) | public override string ToString()
FILE: Nakama/IChannelPresenceEvent.cs
type IChannelPresenceEvent (line 25) | public interface IChannelPresenceEvent
class ChannelPresenceEvent (line 64) | internal class ChannelPresenceEvent : IChannelPresenceEvent
method ToString (line 89) | public override string ToString()
FILE: Nakama/IClient.cs
type IClient (line 25) | public interface IClient
method AddFriendsAsync (line 88) | Task AddFriendsAsync(ISession session, IEnumerable<string> ids, IEnume...
method AddGroupUsersAsync (line 99) | Task AddGroupUsersAsync(ISession session, string groupId, IEnumerable<...
method AuthenticateAppleAsync (line 110) | Task<ISession> AuthenticateAppleAsync(string token, string username = ...
method AuthenticateCustomAsync (line 123) | Task<ISession> AuthenticateCustomAsync(string id, string username = nu...
method AuthenticateDeviceAsync (line 136) | Task<ISession> AuthenticateDeviceAsync(string id, string username = nu...
method AuthenticateEmailAsync (line 150) | Task<ISession> AuthenticateEmailAsync(string email, string password, s...
method AuthenticateFacebookAsync (line 164) | Task<ISession> AuthenticateFacebookAsync(string token, string username...
method AuthenticateGameCenterAsync (line 182) | Task<ISession> AuthenticateGameCenterAsync(string bundleId, string pla...
method AuthenticateGoogleAsync (line 196) | Task<ISession> AuthenticateGoogleAsync(string token, string username =...
method AuthenticateSteamAsync (line 210) | Task<ISession> AuthenticateSteamAsync(string token, string username = ...
method BanGroupUsersAsync (line 222) | Task BanGroupUsersAsync(ISession session, string groupId, IEnumerable<...
method BlockFriendsAsync (line 233) | Task BlockFriendsAsync(ISession session, IEnumerable<string> ids, IEnu...
method CreateGroupAsync (line 248) | Task<IApiGroup> CreateGroupAsync(ISession session, string name, string...
method DeleteAccountAsync (line 258) | Task DeleteAccountAsync(ISession session, RetryConfiguration retryConf...
method DeleteFriendsAsync (line 269) | Task DeleteFriendsAsync(ISession session, IEnumerable<string> ids, IEn...
method DeleteGroupAsync (line 279) | Task DeleteGroupAsync(ISession session, string groupId, RetryConfigura...
method DeleteLeaderboardRecordAsync (line 289) | Task DeleteLeaderboardRecordAsync(ISession session, string leaderboard...
method DeleteNotificationsAsync (line 299) | Task DeleteNotificationsAsync(ISession session, IEnumerable<string> id...
method DeleteStorageObjectsAsync (line 309) | Task DeleteStorageObjectsAsync(ISession session, StorageObjectId[] ids...
method DeleteTournamentRecordAsync (line 319) | Task DeleteTournamentRecordAsync(ISession session, string tournamentId...
method DemoteGroupUsersAsync (line 330) | Task DemoteGroupUsersAsync(ISession session, string groupId, IEnumerab...
method EventAsync (line 341) | Task EventAsync(ISession session, string name, Dictionary<string, stri...
method GetAccountAsync (line 350) | Task<IApiAccount> GetAccountAsync(ISession session, RetryConfiguration...
method GetSubscriptionAsync (line 360) | Task<IApiValidatedSubscription> GetSubscriptionAsync(ISession session,...
method GetUsersAsync (line 372) | Task<IApiUsers> GetUsersAsync(ISession session, IEnumerable<string> id...
method ImportFacebookFriendsAsync (line 388) | Task ImportFacebookFriendsAsync(ISession session, string token, bool? ...
method ImportSteamFriendsAsync (line 403) | Task ImportSteamFriendsAsync(ISession session, string token, bool? res...
method JoinGroupAsync (line 413) | Task JoinGroupAsync(ISession session, string groupId, RetryConfigurati...
method JoinTournamentAsync (line 423) | Task JoinTournamentAsync(ISession session, string tournamentId, RetryC...
method KickGroupUsersAsync (line 434) | Task KickGroupUsersAsync(ISession session, string groupId, IEnumerable...
method LeaveGroupAsync (line 444) | Task LeaveGroupAsync(ISession session, string groupId, RetryConfigurat...
method LinkAppleAsync (line 454) | Task LinkAppleAsync(ISession session, string token, RetryConfiguration...
method LinkCustomAsync (line 464) | Task LinkCustomAsync(ISession session, string id, RetryConfiguration r...
method LinkDeviceAsync (line 474) | Task LinkDeviceAsync(ISession session, string id, RetryConfiguration r...
method LinkEmailAsync (line 485) | Task LinkEmailAsync(ISession session, string email, string password, R...
method LinkFacebookAsync (line 496) | Task LinkFacebookAsync(ISession session, string token, bool? import = ...
method LinkGameCenterAsync (line 511) | Task LinkGameCenterAsync(ISession session, string bundleId, string pla...
method LinkGoogleAsync (line 522) | Task LinkGoogleAsync(ISession session, string token, RetryConfiguratio...
method LinkSteamAsync (line 533) | Task LinkSteamAsync(ISession session, string token, bool import, Retry...
method ListChannelMessagesAsync (line 546) | Task<IApiChannelMessageList> ListChannelMessagesAsync(ISession session...
method ListChannelMessagesAsync (line 560) | Task<IApiChannelMessageList> ListChannelMessagesAsync(ISession session...
method ListFriendsAsync (line 573) | Task<IApiFriendList> ListFriendsAsync(ISession session, int? state = n...
method ListGroupUsersAsync (line 586) | Task<IApiGroupUserList> ListGroupUsersAsync(ISession session, string g...
method ListGroupsAsync (line 602) | Task<IApiGroupList> ListGroupsAsync(ISession session, string name = nu...
method ListLeaderboardRecordsAsync (line 616) | Task<IApiLeaderboardRecordList> ListLeaderboardRecordsAsync(ISession s...
method ListLeaderboardRecordsAroundOwnerAsync (line 630) | Task<IApiLeaderboardRecordList> ListLeaderboardRecordsAroundOwnerAsync...
method ListMatchesAsync (line 646) | Task<IApiMatchList> ListMatchesAsync(ISession session, int min, int ma...
method ListNotificationsAsync (line 658) | Task<IApiNotificationList> ListNotificationsAsync(ISession session, in...
method ListStorageObjects (line 661) | [Obsolete("ListStorageObjects is obsolete, please use ListStorageObjec...
method ListStorageObjectsAsync (line 675) | Task<IApiStorageObjectList> ListStorageObjectsAsync(ISession session, ...
method ListSubscriptionsAsync (line 687) | Task<IApiSubscriptionList> ListSubscriptionsAsync(ISession session, in...
method ListTournamentRecordsAroundOwnerAsync (line 700) | Task<IApiTournamentRecordList> ListTournamentRecordsAroundOwnerAsync(I...
method ListTournamentRecordsAsync (line 715) | Task<IApiTournamentRecordList> ListTournamentRecordsAsync(ISession ses...
method ListTournamentsAsync (line 731) | Task<IApiTournamentList> ListTournamentsAsync(ISession session, int ca...
method ListUserGroupsAsync (line 744) | Task<IApiUserGroupList> ListUserGroupsAsync(ISession session, int? sta...
method ListUserGroupsAsync (line 758) | Task<IApiUserGroupList> ListUserGroupsAsync(ISession session, string u...
method ListUsersStorageObjectsAsync (line 772) | Task<IApiStorageObjectList> ListUsersStorageObjectsAsync(ISession sess...
method ListPartiesAsync (line 786) | Task<IApiPartyList> ListPartiesAsync(ISession session, int limit, bool...
method PromoteGroupUsersAsync (line 798) | Task PromoteGroupUsersAsync(ISession session, string groupId, IEnumera...
method ReadStorageObjectsAsync (line 808) | Task<IApiStorageObjects> ReadStorageObjectsAsync(ISession session, IAp...
method RpcAsync (line 819) | Task<IApiRpc> RpcAsync(ISession session, string id, string payload, Re...
method RpcAsync (line 829) | Task<IApiRpc> RpcAsync(ISession session, string id, RetryConfiguration...
method RpcAsync (line 843) | Task<IApiRpc> RpcAsync(string httpKey, string id, string payload, Retr...
method RpcAsync (line 856) | Task<IApiRpc> RpcAsync(string httpKey, string id, RetryConfiguration r...
method SessionLogoutAsync (line 865) | Task SessionLogoutAsync(ISession session, RetryConfiguration retryConf...
method SessionLogoutAsync (line 875) | Task SessionLogoutAsync(string authToken, string refreshToken, RetryCo...
method SessionRefreshAsync (line 886) | Task<ISession> SessionRefreshAsync(ISession session, Dictionary<string...
method UnlinkAppleAsync (line 896) | Task UnlinkAppleAsync(ISession session, string token, RetryConfigurati...
method UnlinkCustomAsync (line 906) | Task UnlinkCustomAsync(ISession session, string id, RetryConfiguration...
method UnlinkDeviceAsync (line 916) | Task UnlinkDeviceAsync(ISession session, string id, RetryConfiguration...
method UnlinkEmailAsync (line 927) | Task UnlinkEmailAsync(ISession session, string email, string password,...
method UnlinkFacebookAsync (line 937) | Task UnlinkFacebookAsync(ISession session, string token, RetryConfigur...
method UnlinkGameCenterAsync (line 952) | Task UnlinkGameCenterAsync(ISession session, string bundleId, string p...
method UnlinkGoogleAsync (line 963) | Task UnlinkGoogleAsync(ISession session, string token, RetryConfigurat...
method UnlinkSteamAsync (line 973) | Task UnlinkSteamAsync(ISession session, string token, RetryConfigurati...
method UpdateAccountAsync (line 988) | Task UpdateAccountAsync(ISession session, string username, string disp...
method UpdateGroupAsync (line 1007) | Task UpdateGroupAsync(ISession session, string groupId, string name, b...
method ValidatePurchaseAppleAsync (line 1019) | Task<IApiValidatePurchaseResponse> ValidatePurchaseAppleAsync(ISession...
method ValidatePurchaseFacebookInstantAsync (line 1030) | Task<IApiValidatePurchaseResponse> ValidatePurchaseFacebookInstantAsyn...
method ValidatePurchaseGoogleAsync (line 1042) | Task<IApiValidatePurchaseResponse> ValidatePurchaseGoogleAsync(ISessio...
method ValidatePurchaseHuaweiAsync (line 1054) | Task<IApiValidatePurchaseResponse> ValidatePurchaseHuaweiAsync(ISessio...
method ValidateSubscriptionAppleAsync (line 1066) | Task<IApiValidateSubscriptionResponse> ValidateSubscriptionAppleAsync(...
method ValidateSubscriptionGoogleAsync (line 1077) | Task<IApiValidateSubscriptionResponse> ValidateSubscriptionGoogleAsync...
method WriteLeaderboardRecordAsync (line 1091) | Task<IApiLeaderboardRecord> WriteLeaderboardRecordAsync(ISession sessi...
method WriteStorageObjectsAsync (line 1102) | Task<IApiStorageObjectAcks> WriteStorageObjectsAsync(ISession session,...
method WriteTournamentRecordAsync (line 1116) | Task<IApiLeaderboardRecord> WriteTournamentRecordAsync(ISession sessio...
FILE: Nakama/IHttpAdapter.cs
type IHttpAdapter (line 27) | public interface IHttpAdapter
method SendAsync (line 48) | Task<string> SendAsync(string method, Uri uri, IDictionary<string, str...
FILE: Nakama/IHttpAdapterUtil.cs
class IHttpAdapterUtil (line 26) | public static class IHttpAdapterUtil
method CopyResponseError (line 35) | public static void CopyResponseError(IHttpAdapter adapter, object err,...
FILE: Nakama/ILogger.cs
type ILogger (line 20) | public interface ILogger
method DebugFormat (line 27) | void DebugFormat(string format, params object[] args);
method ErrorFormat (line 34) | void ErrorFormat(string format, params object[] args);
method InfoFormat (line 41) | void InfoFormat(string format, params object[] args);
method WarnFormat (line 48) | void WarnFormat(string format, params object[] args);
FILE: Nakama/IMatch.cs
type IMatch (line 26) | public interface IMatch
method UpdatePresences (line 61) | void UpdatePresences(IMatchPresenceEvent presenceEvent);
class Match (line 65) | internal class Match : IMatch
method ToString (line 81) | public override string ToString()
method UpdatePresences (line 88) | public void UpdatePresences(IMatchPresenceEvent presenceEvent)
FILE: Nakama/IMatchPresenceEvent.cs
type IMatchPresenceEvent (line 25) | public interface IMatchPresenceEvent
class MatchPresenceEvent (line 44) | internal class MatchPresenceEvent : IMatchPresenceEvent
method ToString (line 54) | public override string ToString()
FILE: Nakama/IMatchState.cs
type IMatchState (line 25) | public interface IMatchState
class MatchState (line 52) | internal class MatchState : IMatchState
method ToString (line 67) | public override string ToString()
FILE: Nakama/IMatchmakerMatched.cs
type IMatchmakerMatched (line 25) | public interface IMatchmakerMatched
type IMatchmakerUser (line 59) | public interface IMatchmakerUser
class MatchmakerMatched (line 78) | internal class MatchmakerMatched : IMatchmakerMatched
method ToString (line 92) | public override string ToString()
class MatchmakerUser (line 101) | internal class MatchmakerUser : IMatchmakerUser
method ToString (line 116) | public override string ToString()
FILE: Nakama/IMatchmakerTicket.cs
type IMatchmakerTicket (line 24) | public interface IMatchmakerTicket
class MatchmakerTicket (line 33) | internal class MatchmakerTicket : IMatchmakerTicket
method ToString (line 38) | public override string ToString()
FILE: Nakama/IParty.cs
type IParty (line 22) | public interface IParty
method UpdatePresences (line 67) | void UpdatePresences(IPartyPresenceEvent presenceEvent);
FILE: Nakama/IPartyClose.cs
type IPartyClose (line 20) | public interface IPartyClose
FILE: Nakama/IPartyData.cs
type IPartyData (line 20) | public interface IPartyData
FILE: Nakama/IPartyJoinRequest.cs
type IPartyJoinRequest (line 22) | public interface IPartyJoinRequest
FILE: Nakama/IPartyLeader.cs
type IPartyLeader (line 20) | public interface IPartyLeader
FILE: Nakama/IPartyMatchmakerTicket.cs
type IPartyMatchmakerTicket (line 20) | public interface IPartyMatchmakerTicket
FILE: Nakama/IPartyPresenceEvent.cs
type IPartyPresenceEvent (line 22) | public interface IPartyPresenceEvent
FILE: Nakama/IPartyUpdate.cs
type IPartyUpdate (line 22) | public interface IPartyUpdate
FILE: Nakama/ISession.cs
type ISession (line 23) | public interface ISession
method HasExpired (line 85) | bool HasExpired(DateTime offset);
method HasRefreshExpired (line 92) | bool HasRefreshExpired(DateTime offset);
FILE: Nakama/ISocket.cs
type ISocket (line 24) | public interface ISocket
method AcceptPartyMemberAsync (line 143) | Task AcceptPartyMemberAsync(string partyId, IUserPresence presence);
method AddMatchmakerAsync (line 155) | Task<IMatchmakerTicket> AddMatchmakerAsync(string query = "*", int min...
method AddMatchmakerPartyAsync (line 169) | Task<IPartyMatchmakerTicket> AddMatchmakerPartyAsync(string partyId, s...
method ClosePartyAsync (line 177) | Task ClosePartyAsync(string partyId);
method CloseAsync (line 183) | Task CloseAsync();
method ConnectAsync (line 193) | Task ConnectAsync(ISession session, bool appearOnline = false,
method CreateMatchAsync (line 200) | Task<IMatch> CreateMatchAsync(string matchName = null);
method CreatePartyAsync (line 210) | Task<IParty> CreatePartyAsync(bool open, bool hidden, int maxSize, str...
method FollowUsersAsync (line 217) | Task<IStatus> FollowUsersAsync(IEnumerable<IApiUser> users);
method FollowUsersAsync (line 225) | Task<IStatus> FollowUsersAsync(IEnumerable<string> userIDs, IEnumerabl...
method JoinChatAsync (line 235) | Task<IChannel> JoinChatAsync(string target, ChannelType type, bool per...
method JoinPartyAsync (line 242) | Task JoinPartyAsync(string partyId);
method JoinMatchAsync (line 249) | Task<IMatch> JoinMatchAsync(IMatchmakerMatched matched);
method JoinMatchAsync (line 257) | Task<IMatch> JoinMatchAsync(string matchId, IDictionary<string, string...
method LeaveChatAsync (line 264) | Task LeaveChatAsync(IChannel channel);
method LeaveChatAsync (line 271) | Task LeaveChatAsync(string channelId);
method LeaveMatchAsync (line 278) | Task LeaveMatchAsync(IMatch match);
method LeaveMatchAsync (line 285) | Task LeaveMatchAsync(string matchId);
method LeavePartyAsync (line 292) | Task LeavePartyAsync(string partyId);
method ListPartyJoinRequestsAsync (line 299) | Task<IPartyJoinRequest> ListPartyJoinRequestsAsync(string partyId);
method PromotePartyMemberAsync (line 307) | Task PromotePartyMemberAsync(string partyId, IUserPresence partyMember);
method RemoveChatMessageAsync (line 315) | Task<IChannelMessageAck> RemoveChatMessageAsync(IChannel channel, stri...
method RemoveChatMessageAsync (line 323) | Task<IChannelMessageAck> RemoveChatMessageAsync(string channelId, stri...
method RemoveMatchmakerAsync (line 330) | Task RemoveMatchmakerAsync(IMatchmakerTicket ticket);
method RemoveMatchmakerAsync (line 337) | Task RemoveMatchmakerAsync(string ticket);
method RemoveMatchmakerPartyAsync (line 345) | Task RemoveMatchmakerPartyAsync(string partyId, string ticket);
method RemovePartyMemberAsync (line 353) | Task RemovePartyMemberAsync(string partyId, IUserPresence presence);
method RpcAsync (line 361) | Task<IApiRpc> RpcAsync(string funcId, string payload = null);
method RpcAsync (line 369) | Task<IApiRpc> RpcAsync(string funcId, ArraySegment<byte> payload);
method SendMatchStateAsync (line 382) | Task SendMatchStateAsync(string matchId, long opCode, string state,
method SendMatchStateAsync (line 393) | Task SendMatchStateAsync(string matchId, long opCode, ArraySegment<byt...
method SendMatchStateAsync (line 407) | Task SendMatchStateAsync(string matchId, long opCode, byte[] state,
method SendPartyDataAsync (line 417) | Task SendPartyDataAsync(string partyId, long opCode, ArraySegment<byte...
method SendPartyDataAsync (line 426) | Task SendPartyDataAsync(string partyId, long opCode, string data);
method SendPartyDataAsync (line 435) | Task SendPartyDataAsync(string partyId, long opCode, byte[] data);
method UnfollowUsersAsync (line 442) | Task UnfollowUsersAsync(IEnumerable<IApiUser> users);
method UnfollowUsersAsync (line 449) | Task UnfollowUsersAsync(IEnumerable<string> userIDs);
method UpdateChatMessageAsync (line 458) | Task<IChannelMessageAck> UpdateChatMessageAsync(IChannel channel, stri...
method UpdateChatMessageAsync (line 467) | Task<IChannelMessageAck> UpdateChatMessageAsync(string channelId, stri...
method UpdatePartyAsync (line 477) | Task<IPartyUpdate> UpdatePartyAsync(string partyId, bool open, bool hi...
method UpdateStatusAsync (line 484) | Task UpdateStatusAsync(string status);
method WriteChatMessageAsync (line 492) | Task<IChannelMessageAck> WriteChatMessageAsync(IChannel channel, strin...
method WriteChatMessageAsync (line 500) | Task<IChannelMessageAck> WriteChatMessageAsync(string channelId, strin...
FILE: Nakama/ISocketAdapter.cs
type ISocketAdapter (line 24) | public interface ISocketAdapter
method CloseAsync (line 59) | Task CloseAsync();
method ConnectAsync (line 66) | Task ConnectAsync(Uri uri, int timeout);
method SendAsync (line 74) | Task SendAsync(ArraySegment<byte> buffer, bool reliable = true, Cancel...
FILE: Nakama/IStatus.cs
type IStatus (line 23) | public interface IStatus
class Status (line 32) | internal class Status : IStatus
method ToString (line 38) | public override string ToString()
FILE: Nakama/IStatusPresenceEvent.cs
type IStatusPresenceEvent (line 25) | public interface IStatusPresenceEvent
class StatusPresenceEvent (line 45) | internal class StatusPresenceEvent : IStatusPresenceEvent
method ToString (line 53) | public override string ToString()
FILE: Nakama/IStreamPresenceEvent.cs
type IStreamPresenceEvent (line 28) | public interface IStreamPresenceEvent
type IStreamState (line 49) | public interface IStreamState
type IStream (line 70) | public interface IStream
class StreamPresenceEvent (line 94) | [Preserve]
method ToString (line 106) | public override string ToString() =>
class StreamState (line 111) | [Preserve]
method ToString (line 123) | public override string ToString() => $"StreamState(Sender={Sender}, St...
class Stream (line 127) | [Preserve]
method ToString (line 138) | public override string ToString() =>
FILE: Nakama/IUserPresence.cs
type IUserPresence (line 29) | public interface IUserPresence
class UserPresence (line 58) | internal class UserPresence : IUserPresence
method Equals (line 72) | public override bool Equals(object obj)
method Equals (line 81) | private bool Equals(IUserPresence other) => string.Equals(SessionId, o...
method GetHashCode (line 83) | public override int GetHashCode()
method ToString (line 92) | public override string ToString()
FILE: Nakama/MatchCreateMessage.cs
class MatchCreateMessage (line 24) | internal class MatchCreateMessage
method ToString (line 29) | public override string ToString() => $"MatchCreateMessage(name='{Name}...
FILE: Nakama/MatchJoinMessage.cs
class MatchJoinMessage (line 25) | internal class MatchJoinMessage
method ToString (line 36) | public override string ToString()
FILE: Nakama/MatchLeaveMessage.cs
class MatchLeaveMessage (line 24) | internal class MatchLeaveMessage
method ToString (line 29) | public override string ToString()
FILE: Nakama/MatchSendMessage.cs
class MatchSendMessage (line 25) | internal class MatchSendMessage
method ToString (line 39) | public override string ToString()
FILE: Nakama/MatchmakerAddMessage.cs
class MatchmakerAddMessage (line 23) | internal class MatchmakerAddMessage
method ToString (line 42) | public override string ToString() =>
FILE: Nakama/MatchmakerRemoveMessage.cs
class MatchmakerRemoveMessage (line 24) | internal class MatchmakerRemoveMessage
method ToString (line 29) | public override string ToString()
FILE: Nakama/Ninja.WebSockets/BufferPool.cs
class BufferPool (line 17) | public class BufferPool : IBufferPool
method BufferPool (line 23) | public BufferPool() : this(DEFAULT_BUFFER_SIZE)
method BufferPool (line 27) | public BufferPool(int bufferSize)
class PublicBufferMemoryStream (line 36) | protected class PublicBufferMemoryStream : MemoryStream
method PublicBufferMemoryStream (line 42) | public PublicBufferMemoryStream(byte[] buffer, BufferPool bufferPool...
method BeginRead (line 51) | public override IAsyncResult BeginRead(byte[] buffer, int offset, in...
method BeginWrite (line 57) | public override IAsyncResult BeginWrite(byte[] buffer, int offset, i...
method Close (line 74) | public override void Close()
method CopyToAsync (line 85) | public override Task CopyToAsync(System.IO.Stream destination, int b...
method EndRead (line 90) | public override int EndRead(IAsyncResult asyncResult)
method EndWrite (line 95) | public override void EndWrite(IAsyncResult asyncResult)
method Flush (line 100) | public override void Flush()
method FlushAsync (line 105) | public override Task FlushAsync(CancellationToken cancellationToken)
method GetBuffer (line 110) | public override byte[] GetBuffer()
method Read (line 121) | public override int Read(byte[] buffer, int offset, int count)
method EnlargeBufferIfRequired (line 126) | private void EnlargeBufferIfRequired(int count)
method WriteByte (line 170) | public override void WriteByte(byte value)
method Write (line 176) | public override void Write(byte[] buffer, int offset, int count)
method WriteAsync (line 182) | public override Task WriteAsync(byte[] buffer, int offset, int count...
method InitializeLifetimeService (line 188) | public override object InitializeLifetimeService()
method ReadAsync (line 193) | public override Task<int> ReadAsync(byte[] buffer, int offset, int c...
method ReadByte (line 199) | public override int ReadByte()
method Seek (line 210) | public override long Seek(long offset, SeekOrigin loc)
method SetLength (line 218) | public override void SetLength(long value)
method ToArray (line 223) | public override byte[] ToArray()
method TryGetBuffer (line 236) | public override bool TryGetBuffer(out ArraySegment<byte> buffer)
method WriteTo (line 243) | public override void WriteTo(System.IO.Stream stream)
method GetBuffer (line 254) | public MemoryStream GetBuffer()
method ReturnBuffer (line 265) | protected void ReturnBuffer(byte[] buffer)
FILE: Nakama/Ninja.WebSockets/Exceptions/EntityTooLargeException.cs
class EntityTooLargeException (line 5) | [Serializable]
method EntityTooLargeException (line 8) | public EntityTooLargeException() : base()
method EntityTooLargeException (line 16) | public EntityTooLargeException(string message) : base(message)
method EntityTooLargeException (line 21) | public EntityTooLargeException(string message, Exception inner) : base...
FILE: Nakama/Ninja.WebSockets/Exceptions/InvalidHttpResponseCodeException.cs
class InvalidHttpResponseCodeException (line 5) | [Serializable]
method InvalidHttpResponseCodeException (line 14) | public InvalidHttpResponseCodeException() : base()
method InvalidHttpResponseCodeException (line 18) | public InvalidHttpResponseCodeException(string message) : base(message)
method InvalidHttpResponseCodeException (line 22) | public InvalidHttpResponseCodeException(string responseCode, string re...
method InvalidHttpResponseCodeException (line 29) | public InvalidHttpResponseCodeException(string message, Exception inne...
FILE: Nakama/Ninja.WebSockets/Exceptions/SecWebSocketKeyMissingException.cs
class SecWebSocketKeyMissingException (line 5) | [Serializable]
method SecWebSocketKeyMissingException (line 8) | public SecWebSocketKeyMissingException() : base()
method SecWebSocketKeyMissingException (line 13) | public SecWebSocketKeyMissingException(string message) : base(message)
method SecWebSocketKeyMissingException (line 18) | public SecWebSocketKeyMissingException(string message, Exception inner...
FILE: Nakama/Ninja.WebSockets/Exceptions/ServerListenerSocketException.cs
class ServerListenerSocketException (line 5) | [Serializable]
method ServerListenerSocketException (line 8) | public ServerListenerSocketException() : base()
method ServerListenerSocketException (line 12) | public ServerListenerSocketException(string message) : base(message)
method ServerListenerSocketException (line 16) | public ServerListenerSocketException(string message, Exception inner) ...
FILE: Nakama/Ninja.WebSockets/Exceptions/WebSocketBufferOverflowException.cs
class WebSocketBufferOverflowException (line 5) | [Serializable]
method WebSocketBufferOverflowException (line 8) | public WebSocketBufferOverflowException() : base()
method WebSocketBufferOverflowException (line 12) | public WebSocketBufferOverflowException(string message) : base(message)
method WebSocketBufferOverflowException (line 16) | public WebSocketBufferOverflowException(string message, Exception inne...
FILE: Nakama/Ninja.WebSockets/Exceptions/WebSocketHandshakeFailedException.cs
class WebSocketHandshakeFailedException (line 5) | [Serializable]
method WebSocketHandshakeFailedException (line 8) | public WebSocketHandshakeFailedException() : base()
method WebSocketHandshakeFailedException (line 12) | public WebSocketHandshakeFailedException(string message) : base(message)
method WebSocketHandshakeFailedException (line 16) | public WebSocketHandshakeFailedException(string message, Exception inn...
FILE: Nakama/Ninja.WebSockets/Exceptions/WebSocketVersionNotSupportedException.cs
class WebSocketVersionNotSupportedException (line 5) | [Serializable]
method WebSocketVersionNotSupportedException (line 8) | public WebSocketVersionNotSupportedException() : base()
method WebSocketVersionNotSupportedException (line 12) | public WebSocketVersionNotSupportedException(string message) : base(me...
method WebSocketVersionNotSupportedException (line 16) | public WebSocketVersionNotSupportedException(string message, Exception...
FILE: Nakama/Ninja.WebSockets/HttpHelper.cs
class HttpHelper (line 35) | public class HttpHelper
method CalculateWebSocketKey (line 43) | public static string CalculateWebSocketKey()
method ComputeSocketAcceptString (line 57) | public static string ComputeSocketAcceptString(string secWebSocketKey)
method ReadHttpHeaderAsync (line 76) | public static async Task<string> ReadHttpHeaderAsync(System.IO.Stream ...
method IsWebSocketUpgradeRequest (line 109) | public static bool IsWebSocketUpgradeRequest(String header)
method GetPathFromHeader (line 130) | public static string GetPathFromHeader(string httpHeader)
method GetSubProtocols (line 144) | public static IList<string> GetSubProtocols(string httpHeader)
method ReadHttpResponseCode (line 173) | public static string ReadHttpResponseCode(string response)
method WriteHttpHeaderAsync (line 193) | public static async Task WriteHttpHeaderAsync(string response, System....
FILE: Nakama/Ninja.WebSockets/IBufferPool.cs
type IBufferPool (line 5) | public interface IBufferPool
method GetBuffer (line 12) | MemoryStream GetBuffer();
FILE: Nakama/Ninja.WebSockets/IPingPongManager.cs
type IPingPongManager (line 10) | interface IPingPongManager
method SendPing (line 22) | Task SendPing(ArraySegment<byte> payload, CancellationToken cancellati...
FILE: Nakama/Ninja.WebSockets/IWebSocketClientFactory.cs
type IWebSocketClientFactory (line 11) | public interface IWebSocketClientFactory
method ConnectAsync (line 19) | Task<WebSocket> ConnectAsync(Uri uri, CancellationToken token = defaul...
method ConnectAsync (line 28) | Task<WebSocket> ConnectAsync(Uri uri, WebSocketClientOptions options, ...
method ConnectAsync (line 42) | Task<WebSocket> ConnectAsync(System.IO.Stream responseStream, string s...
FILE: Nakama/Ninja.WebSockets/IWebSocketServerFactory.cs
type IWebSocketServerFactory (line 10) | public interface IWebSocketServerFactory
method ReadHttpHeaderFromStreamAsync (line 18) | Task<WebSocketHttpContext> ReadHttpHeaderFromStreamAsync(System.IO.Str...
method AcceptWebSocketAsync (line 27) | Task<WebSocket> AcceptWebSocketAsync(WebSocketHttpContext context, Can...
method AcceptWebSocketAsync (line 37) | Task<WebSocket> AcceptWebSocketAsync(WebSocketHttpContext context, Web...
FILE: Nakama/Ninja.WebSockets/Internal/BinaryReaderWriter.cs
class BinaryReaderWriter (line 30) | internal class BinaryReaderWriter
method ReadExactly (line 32) | public static async Task ReadExactly(int length, System.IO.Stream stre...
method ReadUShortExactly (line 61) | public static async Task<ushort> ReadUShortExactly(System.IO.Stream st...
method ReadULongExactly (line 73) | public static async Task<ulong> ReadULongExactly(System.IO.Stream stre...
method ReadLongExactly (line 85) | public static async Task<long> ReadLongExactly(System.IO.Stream stream...
method WriteInt (line 97) | public static void WriteInt(int value, System.IO.Stream stream, bool i...
method WriteULong (line 108) | public static void WriteULong(ulong value, System.IO.Stream stream, bo...
method WriteLong (line 119) | public static void WriteLong(long value, System.IO.Stream stream, bool...
method WriteUShort (line 130) | public static void WriteUShort(ushort value, System.IO.Stream stream, ...
FILE: Nakama/Ninja.WebSockets/Internal/WebSocketFrame.cs
class WebSocketFrame (line 6) | internal class WebSocketFrame
method WebSocketFrame (line 20) | public WebSocketFrame(bool isFinBitSet, WebSocketOpCode webSocketOpCod...
method WebSocketFrame (line 28) | public WebSocketFrame(bool isFinBitSet, WebSocketOpCode webSocketOpCod...
FILE: Nakama/Ninja.WebSockets/Internal/WebSocketFrameCommon.cs
class WebSocketFrameCommon (line 27) | internal static class WebSocketFrameCommon
method ToggleMask (line 38) | public static void ToggleMask(ArraySegment<byte> maskKey, ArraySegment...
FILE: Nakama/Ninja.WebSockets/Internal/WebSocketFrameReader.cs
class WebSocketFrameReader (line 36) | internal static class WebSocketFrameReader
method CalculateNumBytesToRead (line 38) | private static int CalculateNumBytesToRead(int numBytesLetfToRead, int...
method ReadFromCursorAsync (line 61) | public static async Task<WebSocketReadCursor> ReadFromCursorAsync(Syst...
method ReadAsync (line 84) | public static async Task<WebSocketReadCursor> ReadAsync(System.IO.Stre...
method DecodeCloseFrame (line 149) | private static WebSocketFrame DecodeCloseFrame(bool isFinBitSet, WebSo...
method ReadLength (line 192) | private static async Task<uint> ReadLength(byte byte2, ArraySegment<by...
FILE: Nakama/Ninja.WebSockets/Internal/WebSocketFrameWriter.cs
class WebSocketFrameWriter (line 34) | internal static class WebSocketFrameWriter
method WebSocketFrameWriter (line 42) | static WebSocketFrameWriter()
method Write (line 54) | public static void Write(WebSocketOpCode opCode, ArraySegment<byte> fr...
FILE: Nakama/Ninja.WebSockets/Internal/WebSocketImplementation.cs
class WebSocketImplementation (line 43) | internal class WebSocketImplementation : WebSocket
method WebSocketImplementation (line 66) | internal WebSocketImplementation(Guid guid, Func<MemoryStream> recycle...
method ReceiveAsync (line 113) | public override async Task<WebSocketReceiveResult> ReceiveAsync(ArrayS...
method SendAsync (line 242) | public override async Task SendAsync(ArraySegment<byte> buffer, WebSoc...
method SendPingAsync (line 277) | public async Task SendPingAsync(ArraySegment<byte> payload, Cancellati...
method Abort (line 298) | public override void Abort()
method CloseAsync (line 307) | public override async Task CloseAsync(WebSocketCloseStatus closeStatus...
method CloseOutputAsync (line 325) | public override async Task CloseOutputAsync(WebSocketCloseStatus close...
method Dispose (line 347) | public override void Dispose()
method OnPong (line 376) | protected virtual void OnPong(PongEventArgs e)
method BuildClosePayload (line 387) | private ArraySegment<byte> BuildClosePayload(WebSocketCloseStatus clos...
method SendPongAsync (line 408) | private async Task SendPongAsync(ArraySegment<byte> payload, Cancellat...
method RespondToCloseFrame (line 443) | private async Task<WebSocketReceiveResult> RespondToCloseFrame(WebSock...
method GetBuffer (line 477) | private ArraySegment<byte> GetBuffer(MemoryStream stream)
method WriteStreamToNetwork (line 521) | private async Task WriteStreamToNetwork(MemoryStream stream, Cancellat...
method GetOppCode (line 538) | private WebSocketOpCode GetOppCode(WebSocketMessageType messageType)
method CloseOutputAutoTimeoutAsync (line 567) | private async Task CloseOutputAutoTimeoutAsync(WebSocketCloseStatus cl...
FILE: Nakama/Ninja.WebSockets/Internal/WebSocketOpCode.cs
type WebSocketOpCode (line 3) | internal enum WebSocketOpCode
FILE: Nakama/Ninja.WebSockets/Internal/WebSocketReadCursor.cs
class WebSocketReadCursor (line 3) | internal class WebSocketReadCursor
method WebSocketReadCursor (line 13) | public WebSocketReadCursor(WebSocketFrame frame, int numBytesRead, int...
FILE: Nakama/Ninja.WebSockets/PingPongManager.cs
class PingPongManager (line 35) | public class PingPongManager : IPingPongManager
method PingPongManager (line 62) | public PingPongManager(Guid guid, WebSocket webSocket, TimeSpan keepAl...
method SendPing (line 89) | public async Task SendPing(ArraySegment<byte> payload, CancellationTok...
method OnPong (line 94) | protected virtual void OnPong(PongEventArgs e)
method PingForever (line 99) | private async Task PingForever()
method WebSocketImpl_Pong (line 134) | private void WebSocketImpl_Pong(object sender, PongEventArgs e)
FILE: Nakama/Ninja.WebSockets/PongEventArgs.cs
class PongEventArgs (line 8) | public class PongEventArgs : EventArgs
method PongEventArgs (line 19) | public PongEventArgs(ArraySegment<byte> payload)
FILE: Nakama/Ninja.WebSockets/WebSocketClientFactory.cs
class WebSocketClientFactory (line 44) | public class WebSocketClientFactory : IWebSocketClientFactory
method WebSocketClientFactory (line 52) | public WebSocketClientFactory()
method WebSocketClientFactory (line 62) | public WebSocketClientFactory(Func<MemoryStream> bufferFactory)
method ConnectAsync (line 73) | public async Task<WebSocket> ConnectAsync(Uri uri, CancellationToken t...
method ConnectAsync (line 85) | public async Task<WebSocket> ConnectAsync(Uri uri, WebSocketClientOpti...
method ConnectAsync (line 109) | public async Task<WebSocket> ConnectAsync(System.IO.Stream responseStr...
method ConnectAsync (line 117) | private async Task<WebSocket> ConnectAsync(Guid guid, System.IO.Stream...
method GetSubProtocolFromHeader (line 139) | private string GetSubProtocolFromHeader(string response)
method ThrowIfInvalidAcceptString (line 153) | private void ThrowIfInvalidAcceptString(Guid guid, string response, st...
method ThrowIfInvalidResponseCode (line 171) | private void ThrowIfInvalidResponseCode(string responseHeader)
method TlsAuthenticateAsClient (line 204) | protected virtual void TlsAuthenticateAsClient(SslStream sslStream, st...
method GetStream (line 219) | protected virtual async Task<System.IO.Stream> GetStream(Guid loggingG...
method ValidateServerCertificate (line 257) | private static bool ValidateServerCertificate(object sender, X509Certi...
method GetAdditionalHeaders (line 269) | private static string GetAdditionalHeaders(Dictionary<string, string> ...
method PerformHandshake (line 287) | private async Task<WebSocket> PerformHandshake(Guid guid, Uri uri, Sys...
FILE: Nakama/Ninja.WebSockets/WebSocketClientOptions.cs
class WebSocketClientOptions (line 9) | public class WebSocketClientOptions
method WebSocketClientOptions (line 56) | public WebSocketClientOptions()
FILE: Nakama/Ninja.WebSockets/WebSocketHttpContext.cs
class WebSocketHttpContext (line 8) | public class WebSocketHttpContext
method WebSocketHttpContext (line 39) | public WebSocketHttpContext(bool isWebSocketRequest, IList<string> web...
FILE: Nakama/Ninja.WebSockets/WebSocketServerFactory.cs
class WebSocketServerFactory (line 38) | public class WebSocketServerFactory : IWebSocketServerFactory
method WebSocketServerFactory (line 46) | public WebSocketServerFactory()
method WebSocketServerFactory (line 57) | public WebSocketServerFactory(Func<MemoryStream> bufferFactory)
method ReadHttpHeaderFromStreamAsync (line 68) | public async Task<WebSocketHttpContext> ReadHttpHeaderFromStreamAsync(...
method AcceptWebSocketAsync (line 85) | public async Task<WebSocket> AcceptWebSocketAsync(WebSocketHttpContext...
method AcceptWebSocketAsync (line 99) | public async Task<WebSocket> AcceptWebSocketAsync(WebSocketHttpContext...
method CheckWebSocketVersion (line 109) | private static void CheckWebSocketVersion(string httpHeader)
method PerformHandshakeAsync (line 131) | private static async Task PerformHandshakeAsync(Guid guid, String http...
FILE: Nakama/Ninja.WebSockets/WebSocketServerOptions.cs
class WebSocketServerOptions (line 8) | public class WebSocketServerOptions
method WebSocketServerOptions (line 38) | public WebSocketServerOptions()
FILE: Nakama/NullLogger.cs
class NullLogger (line 20) | internal class NullLogger : ILogger
method NullLogger (line 24) | private NullLogger()
method DebugFormat (line 29) | public void DebugFormat(string format, params object[] args)
method ErrorFormat (line 34) | public void ErrorFormat(string format, params object[] args)
method InfoFormat (line 39) | public void InfoFormat(string format, params object[] args)
method WarnFormat (line 44) | public void WarnFormat(string format, params object[] args)
FILE: Nakama/Party.cs
class Party (line 24) | internal class Party : IParty
method UpdatePresences (line 56) | public void UpdatePresences(IPartyPresenceEvent presenceEvent)
FILE: Nakama/PartyAccept.cs
class PartyAccept (line 20) | internal class PartyAccept
method ToString (line 28) | public override string ToString() => $"PartyAccept(PartyId='{PartyId}'...
FILE: Nakama/PartyClose.cs
class PartyClose (line 22) | internal class PartyClose : IPartyClose
method ToString (line 27) | public override string ToString() => $"PartyClose(PartyId='{PartyId}')";
FILE: Nakama/PartyCreate.cs
class PartyCreate (line 22) | internal class PartyCreate
method ToString (line 36) | public override string ToString() => $"PartyCreate(Open={Open}, MaxSiz...
FILE: Nakama/PartyData.cs
class PartyData (line 23) | internal class PartyData : IPartyData
method ToString (line 43) | public override string ToString() =>
FILE: Nakama/PartyDataSend.cs
class PartyDataSend (line 22) | internal class PartyDataSend
method ToString (line 33) | public override string ToString() => $"PartyDataSend(PartyId='{PartyId...
FILE: Nakama/PartyJoin.cs
class PartyJoin (line 22) | internal class PartyJoin
method ToString (line 27) | public override string ToString() => $"PartyJoin(PartyId='{PartyId}')";
FILE: Nakama/PartyJoinRequest.cs
class PartyJoinRequest (line 23) | internal class PartyJoinRequest : IPartyJoinRequest
method ToString (line 33) | public override string ToString() =>
FILE: Nakama/PartyJoinRequestList.cs
class PartyJoinRequestList (line 22) | internal class PartyJoinRequestList
method ToString (line 26) | public override string ToString() => $"PartyJoinRequestList(PartyId='{...
FILE: Nakama/PartyLeader.cs
class PartyLeader (line 22) | internal class PartyLeader : IPartyLeader
method ToString (line 32) | public override string ToString() => $"PartyLeader(PartyId='{PartyId}'...
FILE: Nakama/PartyLeave.cs
class PartyLeave (line 22) | internal class PartyLeave
method ToString (line 27) | public override string ToString() => $"PartyLeave(PartyId='{PartyId}')";
FILE: Nakama/PartyMatchmakerAdd.cs
class PartyMatchmakerAdd (line 23) | internal class PartyMatchmakerAdd
method ToString (line 45) | public override string ToString() =>
FILE: Nakama/PartyMatchmakerRemove.cs
class PartyMatchmakerRemove (line 22) | internal class PartyMatchmakerRemove
method ToString (line 30) | public override string ToString() => $"PartyMatchmakerRemove(PartyId='...
FILE: Nakama/PartyMatchmakerTicket.cs
class PartyMatchmakerTicket (line 20) | internal class PartyMatchmakerTicket : IPartyMatchmakerTicket
method ToString (line 28) | public override string ToString() => $"PartyMatchmakerTicket(PartyId='...
FILE: Nakama/PartyMemberRemove.cs
class PartyMemberRemove (line 22) | internal class PartyMemberRemove
method ToString (line 30) | public override string ToString() => $"PartyMemberRemove(PartyId='{Par...
FILE: Nakama/PartyPresenceEvent.cs
class PartyPresenceEvent (line 22) | internal class PartyPresenceEvent : IPartyPresenceEvent
method ToString (line 35) | public override string ToString() =>
FILE: Nakama/PartyPromote.cs
class PartyPromote (line 22) | internal class PartyPromote
method ToString (line 30) | public override string ToString() => $"PartyPromote(PartyId='{PartyId}...
FILE: Nakama/PartyUpdate.cs
class PartyUpdate (line 22) | internal class PartyUpdate : IPartyUpdate
method ToString (line 36) | public override string ToString() => $"PartyUpdate(PartyId={PartyId}, ...
FILE: Nakama/PresenceUtil.cs
class PresenceUtil (line 19) | internal static class PresenceUtil
method CopyJoinsAndLeaves (line 24) | public static List<UserPresence> CopyJoinsAndLeaves(List<UserPresence>...
method IUserPresenceToUserPresence (line 62) | private static UserPresence IUserPresenceToUserPresence(IUserPresence ...
FILE: Nakama/PreserveAttribute.cs
class PreserveAttribute (line 26) | internal class PreserveAttribute : System.Attribute
FILE: Nakama/Retry.cs
class Retry (line 22) | public class Retry
method Retry (line 34) | internal Retry(int expoBackoff, int jitterBackoff)
FILE: Nakama/RetryConfiguration.cs
class RetryConfiguration (line 29) | public class RetryConfiguration
method RetryConfiguration (line 57) | public RetryConfiguration(int baseDelayMs, int maxRetries) :
method RetryConfiguration (line 66) | public RetryConfiguration(int baseDelayMs, int maxRetries, RetryListen...
method RetryConfiguration (line 76) | public RetryConfiguration(int baseDelayMs, int maxRetries, RetryListen...
FILE: Nakama/RetryHistory.cs
class RetryHistory (line 23) | internal class RetryHistory
method RetryHistory (line 30) | public RetryHistory(ISession session, RetryConfiguration configuration...
method RetryHistory (line 34) | public RetryHistory(string jitterHashKey, RetryConfiguration configura...
FILE: Nakama/RetryInvoker.cs
class RetryInvoker (line 25) | internal class RetryInvoker
method RetryInvoker (line 29) | public RetryInvoker(TransientExceptionDelegate del)
method InvokeWithRetry (line 39) | public async Task<T> InvokeWithRetry<T>(Func<Task<T>> request, RetryHi...
method InvokeWithRetry (line 59) | public async Task InvokeWithRetry(Func<Task> request, RetryHistory his...
method CreateNewRetry (line 79) | private Retry CreateNewRetry(RetryHistory history)
method Backoff (line 86) | private Task Backoff(RetryHistory history, Exception e)
FILE: Nakama/RetryJitter.cs
class RetryJitter (line 35) | public static class RetryJitter
method FullJitter (line 40) | public static int FullJitter(IList<Retry> retries, int retryDelay, Ran...
FILE: Nakama/Session.cs
class Session (line 22) | public class Session : ISession
method HasExpired (line 60) | public bool HasExpired(DateTime offset)
method HasRefreshExpired (line 67) | public bool HasRefreshExpired(DateTime offset)
method ToString (line 73) | public override string ToString()
method Session (line 85) | internal Session(string authToken, string refreshToken, bool created)
method Update (line 100) | public void Update(string authToken, string refreshToken)
method Restore (line 141) | public static ISession Restore(string authToken, string refreshToken =...
method JwtUnpack (line 146) | private static string JwtUnpack(string jwt)
FILE: Nakama/Socket.cs
class Socket (line 29) | public class Socket : ISocket
method Socket (line 124) | public Socket() : this(Client.DefaultScheme, Client.DefaultHost, Clien...
method Socket (line 132) | public Socket(ISocketAdapter adapter) : this(Client.DefaultScheme, Cli...
method Socket (line 145) | public Socket(string scheme, string host, int port, ISocketAdapter ada...
method AcceptPartyMemberAsync (line 190) | public Task AcceptPartyMemberAsync(string partyId, IUserPresence prese...
method AddMatchmakerAsync (line 207) | public async Task<IMatchmakerTicket> AddMatchmakerAsync(string query =...
method AddMatchmakerPartyAsync (line 230) | public async Task<IPartyMatchmakerTicket> AddMatchmakerPartyAsync(stri...
method CloseAsync (line 255) | public Task CloseAsync() => _adapter.CloseAsync();
method ConnectAsync (line 258) | public Task ConnectAsync(ISession session, bool appearOnline = false,
method ClosePartyAsync (line 270) | public Task ClosePartyAsync(string partyId)
method CreateMatchAsync (line 283) | public async Task<IMatch> CreateMatchAsync(string name = null)
method CreatePartyAsync (line 297) | public async Task<IParty> CreatePartyAsync(bool open, bool hidden, int...
method FollowUsersAsync (line 317) | public Task<IStatus> FollowUsersAsync(IEnumerable<IApiUser> users) =>
method FollowUsersAsync (line 321) | public async Task<IStatus> FollowUsersAsync(IEnumerable<string> userID...
method JoinChatAsync (line 339) | public async Task<IChannel> JoinChatAsync(string target, ChannelType t...
method JoinMatchAsync (line 360) | public async Task<IMatch> JoinMatchAsync(IMatchmakerMatched matched)
method JoinMatchAsync (line 384) | public async Task<IMatch> JoinMatchAsync(string matchId, IDictionary<s...
method JoinPartyAsync (line 403) | public Task JoinPartyAsync(string partyId)
method LeaveChatAsync (line 419) | public Task LeaveChatAsync(IChannel channel) => LeaveChatAsync(channel...
method LeaveChatAsync (line 422) | public Task LeaveChatAsync(string channelId)
method LeaveMatchAsync (line 438) | public Task LeaveMatchAsync(IMatch match) => LeaveMatchAsync(match.Id);
method LeaveMatchAsync (line 441) | public Task LeaveMatchAsync(string matchId)
method LeavePartyAsync (line 457) | public Task LeavePartyAsync(string partyId)
method ListPartyJoinRequestsAsync (line 473) | public async Task<IPartyJoinRequest> ListPartyJoinRequestsAsync(string...
method PromotePartyMemberAsync (line 490) | public Task PromotePartyMemberAsync(string partyId, IUserPresence part...
method RemoveChatMessageAsync (line 508) | public Task<IChannelMessageAck> RemoveChatMessageAsync(IChannel channe...
method RemoveChatMessageAsync (line 512) | public async Task<IChannelMessageAck> RemoveChatMessageAsync(string ch...
method RemoveMatchmakerAsync (line 530) | public Task RemoveMatchmakerAsync(IMatchmakerTicket ticket) => RemoveM...
method RemoveMatchmakerAsync (line 533) | public Task RemoveMatchmakerAsync(string ticket)
method RemoveMatchmakerPartyAsync (line 549) | public Task RemoveMatchmakerPartyAsync(string partyId, string ticket)
method RemovePartyMemberAsync (line 566) | public Task RemovePartyMemberAsync(string partyId, IUserPresence prese...
method RpcAsync (line 583) | public async Task<IApiRpc> RpcAsync(string funcId, string payload = null)
method RpcAsync (line 601) | public async Task<IApiRpc> RpcAsync(string funcId, ArraySegment<byte> ...
method SendMatchStateAsync (line 619) | public Task SendMatchStateAsync(string matchId, long opCode, ArraySegm...
method SendMatchStateAsync (line 636) | public Task SendMatchStateAsync(string matchId, long opCode, string st...
method SendMatchStateAsync (line 641) | public Task SendMatchStateAsync(string matchId, long opCode, byte[] st...
method SendPartyDataAsync (line 658) | public Task SendPartyDataAsync(string partyId, long opCode, ArraySegme...
method SendPartyDataAsync (line 673) | public Task SendPartyDataAsync(string partyId, long opCode, string dat...
method SendPartyDataAsync (line 677) | public Task SendPartyDataAsync(string partyId, long opCode, byte[] data)
method ToString (line 692) | public override string ToString()
method UnfollowUsersAsync (line 699) | public Task UnfollowUsersAsync(IEnumerable<IApiUser> users) =>
method UnfollowUsersAsync (line 703) | public Task UnfollowUsersAsync(IEnumerable<string> userIDs)
method UpdateChatMessageAsync (line 719) | public Task<IChannelMessageAck> UpdateChatMessageAsync(IChannel channe...
method UpdateChatMessageAsync (line 723) | public async Task<IChannelMessageAck> UpdateChatMessageAsync(string ch...
method UpdatePartyAsync (line 741) | public async Task<IPartyUpdate> UpdatePartyAsync(string partyId, bool ...
method UpdateStatusAsync (line 761) | public Task UpdateStatusAsync(string status)
method WriteChatMessageAsync (line 777) | public Task<IChannelMessageAck> WriteChatMessageAsync(IChannel channel...
method WriteChatMessageAsync (line 781) | public async Task<IChannelMessageAck> WriteChatMessageAsync(string cha...
method From (line 803) | public static ISocket From(IClient client) => From(client, new WebSock...
method From (line 811) | public static ISocket From(IClient client, ISocketAdapter adapter)
method ProcessMessage (line 817) | private void ProcessMessage(ArraySegment<byte> buffer)
method SendAsync (line 940) | private async Task<WebSocketMessageEnvelope> SendAsync(WebSocketMessag...
method BuildPresenceList (line 975) | private static List<UserPresence> BuildPresenceList(IEnumerable<IUserP...
FILE: Nakama/StatusFollowMessage.cs
class StatusFollowMessage (line 25) | internal class StatusFollowMessage
method ToString (line 31) | public override string ToString()
FILE: Nakama/StatusUnfollowMessage.cs
class StatusUnfollowMessage (line 25) | internal class StatusUnfollowMessage
method ToString (line 30) | public override string ToString()
FILE: Nakama/StatusUpdateMessage.cs
class StatusUpdateMessage (line 24) | internal class StatusUpdateMessage
method ToString (line 29) | public override string ToString()
FILE: Nakama/StorageObjectId.cs
class StorageObjectId (line 23) | public class StorageObjectId : IApiReadStorageObjectId, IApiDeleteStorag...
method ToString (line 37) | public override string ToString()
FILE: Nakama/TinyJson/JsonParser.cs
class JsonParser (line 51) | public static class JsonParser
method FromJson (line 58) | public static T FromJson<T>(this string json)
method AppendUntilStringEnd (line 102) | private static int AppendUntilStringEnd(bool appendEscapeCharacter, in...
method Split (line 129) | private static List<string> Split(string json)
method ParseValue (line 170) | private static object ParseValue(Type type, string json)
method ParseAnonymousValue (line 326) | private static object ParseAnonymousValue(string json)
method CreateMemberNameDictionary (line 382) | private static Dictionary<string, T> CreateMemberNameDictionary<T>(IEn...
method ParseObject (line 407) | private static object ParseObject(Type type, string json)
FILE: Nakama/TinyJson/JsonWriter.cs
class JsonWriter (line 36) | public static class JsonWriter
method ToJson (line 38) | public static string ToJson(this object item)
method AppendValue (line 45) | private static void AppendValue(StringBuilder stringBuilder, object item)
method GetMemberName (line 198) | private static string GetMemberName(MemberInfo member)
FILE: Nakama/WebSocketAdapter.cs
class WebSocketAdapter (line 28) | public class WebSocketAdapter : ISocketAdapter
method WebSocketAdapter (line 64) | public WebSocketAdapter(int keepAliveIntervalSec = KeepAliveIntervalSe...
method WebSocketAdapter (line 75) | public WebSocketAdapter(WebSocketClientOptions options, int sendTimeou...
method CloseAsync (line 84) | public async Task CloseAsync()
method ConnectAsync (line 102) | public async Task ConnectAsync(Uri uri, int timeout)
method SendAsync (line 124) | public Task SendAsync(ArraySegment<byte> buffer, bool reliable = true,
method ToString (line 150) | public override string ToString() => $"WebSocketAdapter(MaxMessageSize...
method ReceiveLoop (line 152) | private async Task ReceiveLoop(WebSocket webSocket, CancellationToken ...
FILE: Nakama/WebSocketErrorMessage.cs
class WebSocketErrorMessage (line 25) | internal class WebSocketErrorMessage
method ToString (line 33) | public override string ToString()
FILE: Nakama/WebSocketMessageEnvelope.cs
class WebSocketMessageEnvelope (line 24) | internal class WebSocketMessageEnvelope
method ToString (line 173) | public override string ToString()
FILE: Nakama/WebSocketStdlibAdapter.cs
class WebSocketStdlibAdapter (line 27) | public class WebSocketStdlibAdapter : ISocketAdapter
method WebSocketStdlibAdapter (line 61) | public WebSocketStdlibAdapter(int sendTimeoutSec = SendTimeoutSec, int...
method WebSocketStdlibAdapter (line 68) | public WebSocketStdlibAdapter(ClientWebSocket webSocket)
method CloseAsync (line 75) | public async Task CloseAsync()
method ConnectAsync (line 93) | public async Task ConnectAsync(Uri uri, int timeout)
method SendAsync (line 113) | public Task SendAsync(ArraySegment<byte> buffer, bool reliable = true,...
method ToString (line 138) | public override string ToString() =>
method ReceiveLoop (line 141) | private async Task ReceiveLoop(WebSocket webSocket, CancellationToken ...
FILE: Nakama/WriteStorageObject.cs
class WriteStorageObject (line 20) | public class WriteStorageObject : IApiWriteStorageObject
FILE: Satori.Tests/ClientIdentifyTest.cs
class ClientIdentifyTest (line 24) | public class ClientIdentifyTest
method ClientIdentifyTest (line 29) | public ClientIdentifyTest(ITestOutputHelper helper)
method IdentifyEvents (line 35) | [Fact]
FILE: Satori.Tests/ClientTest.cs
class ClientTest (line 22) | public class ClientTest
method TestAuthenticateAndLogout (line 30) | [Fact(Timeout = TimeoutMilliseconds)]
method TestGetExperiments (line 39) | [Fact(Timeout = TimeoutMilliseconds)]
method TestGetFlags (line 48) | [Fact(Timeout = TimeoutMilliseconds)]
method TestGetFlagsDefault (line 59) | [Fact(Timeout = TimeoutMilliseconds)]
method TestSendEvents (line 68) | [Fact(Timeout = TimeoutMilliseconds)]
method TestGetLiveEvent (line 77) | [Fact(Timeout = TimeoutMilliseconds)]
FILE: Satori/ApiClient.gen.cs
class ApiResponseException (line 15) | public sealed class ApiResponseException : Exception
method ApiResponseException (line 21) | public ApiResponseException(long statusCode, string content, int grpcC...
method ApiResponseException (line 27) | public ApiResponseException(string message, Exception e) : base(messag...
method ApiResponseException (line 33) | public ApiResponseException(string content) : this(-1L, content, -1)
method ToString (line 37) | public override string ToString()
type IApiUpdateMessageRequest (line 46) | public interface IApiUpdateMessageRequest
class ApiUpdateMessageRequest (line 61) | internal class ApiUpdateMessageRequest : IApiUpdateMessageRequest
method ToString (line 72) | public override string ToString()
type IFlagValueChangeReason (line 84) | public interface IFlagValueChangeReason
class FlagValueChangeReason (line 104) | internal class FlagValueChangeReason : IFlagValueChangeReason
method ToString (line 121) | public override string ToString()
type FlagValueChangeReasonType (line 134) | public enum FlagValueChangeReasonType
type IApiAuthenticateLogoutRequest (line 157) | public interface IApiAuthenticateLogoutRequest
class ApiAuthenticateLogoutRequest (line 172) | internal class ApiAuthenticateLogoutRequest : IApiAuthenticateLogoutRequest
method ToString (line 183) | public override string ToString()
type IApiAuthenticateRefreshRequest (line 195) | public interface IApiAuthenticateRefreshRequest
class ApiAuthenticateRefreshRequest (line 205) | internal class ApiAuthenticateRefreshRequest : IApiAuthenticateRefreshRe...
method ToString (line 212) | public override string ToString()
type IApiAuthenticateRequest (line 223) | public interface IApiAuthenticateRequest
class ApiAuthenticateRequest (line 248) | internal class ApiAuthenticateRequest : IApiAuthenticateRequest
method ToString (line 271) | public override string ToString()
type IApiEvent (line 297) | public interface IApiEvent
class ApiEvent (line 347) | internal class ApiEvent : IApiEvent
method ToString (line 388) | public override string ToString()
type IApiEventRequest (line 413) | public interface IApiEventRequest
class ApiEventRequest (line 423) | internal class ApiEventRequest : IApiEventRequest
method ToString (line 432) | public override string ToString()
type IApiExperiment (line 443) | public interface IApiExperiment
class ApiExperiment (line 473) | internal class ApiExperiment : IApiExperiment
method ToString (line 496) | public override string ToString()
type IApiExperimentList (line 511) | public interface IApiExperimentList
class ApiExperimentList (line 521) | internal class ApiExperimentList : IApiExperimentList
method ToString (line 530) | public override string ToString()
type IApiFlag (line 541) | public interface IApiFlag
class ApiFlag (line 571) | internal class ApiFlag : IApiFlag
method ToString (line 596) | public override string ToString()
type IApiFlagList (line 611) | public interface IApiFlagList
class ApiFlagList (line 621) | internal class ApiFlagList : IApiFlagList
method ToString (line 630) | public override string ToString()
type IApiFlagOverride (line 641) | public interface IApiFlagOverride
class ApiFlagOverride (line 661) | internal class ApiFlagOverride : IApiFlagOverride
method ToString (line 678) | public override string ToString()
type IApiFlagOverrideList (line 691) | public interface IApiFlagOverrideList
class ApiFlagOverrideList (line 701) | internal class ApiFlagOverrideList : IApiFlagOverrideList
method ToString (line 710) | public override string ToString()
type ApiFlagOverrideType (line 721) | public enum ApiFlagOverrideType
type IApiFlagOverrideValue (line 748) | public interface IApiFlagOverrideValue
class ApiFlagOverrideValue (line 778) | internal class ApiFlagOverrideValue : IApiFlagOverrideValue
method ToString (line 803) | public override string ToString()
type IApiGetMessageListResponse (line 818) | public interface IApiGetMessageListResponse
class ApiGetMessageListResponse (line 843) | internal class ApiGetMessageListResponse : IApiGetMessageListResponse
method ToString (line 864) | public override string ToString()
type IApiIdentifyRequest (line 878) | public interface IApiIdentifyRequest
class ApiIdentifyRequest (line 898) | internal class ApiIdentifyRequest : IApiIdentifyRequest
method ToString (line 917) | public override string ToString()
type IApiLiveEvent (line 942) | public interface IApiLiveEvent
class ApiLiveEvent (line 1007) | internal class ApiLiveEvent : IApiLiveEvent
method ToString (line 1060) | public override string ToString()
type IApiLiveEventList (line 1082) | public interface IApiLiveEventList
class ApiLiveEventList (line 1097) | internal class ApiLiveEventList : IApiLiveEventList
method ToString (line 1112) | public override string ToString()
type ApiLiveEventStatus (line 1124) | public enum ApiLiveEventStatus
type IApiMessage (line 1147) | public interface IApiMessage
class ApiMessage (line 1207) | internal class ApiMessage : IApiMessage
method ToString (line 1256) | public override string ToString()
type IApiProperties (line 1283) | public interface IApiProperties
class ApiProperties (line 1303) | internal class ApiProperties : IApiProperties
method ToString (line 1324) | public override string ToString()
type IApiSession (line 1355) | public interface IApiSession
class ApiSession (line 1375) | internal class ApiSession : IApiSession
method ToString (line 1392) | public override string ToString()
type IApiUpdatePropertiesRequest (line 1405) | public interface IApiUpdatePropertiesRequest
class ApiUpdatePropertiesRequest (line 1425) | internal class ApiUpdatePropertiesRequest : IApiUpdatePropertiesRequest
method ToString (line 1444) | public override string ToString()
type IGooglerpcStatus (line 1469) | public interface IGooglerpcStatus
class GooglerpcStatus (line 1489) | internal class GooglerpcStatus : IGooglerpcStatus
method ToString (line 1506) | public override string ToString()
type IProtobufAny (line 1519) | public interface IProtobufAny
class ProtobufAny (line 1529) | internal class ProtobufAny : IProtobufAny
method ToString (line 1536) | public override string ToString()
class ApiClient (line 1547) | internal class ApiClient
method ApiClient (line 1554) | public ApiClient(Uri baseUri, IHttpAdapter httpAdapter, int timeout = 10)
method SatoriHealthcheckAsync (line 1564) | public async Task SatoriHealthcheckAsync(
method SatoriReadycheckAsync (line 1593) | public async Task SatoriReadycheckAsync(
method SatoriAuthenticateAsync (line 1622) | public async Task<IApiSession> SatoriAuthenticateAsync(
method SatoriAuthenticateLogoutAsync (line 1664) | public async Task SatoriAuthenticateLogoutAsync(
method SatoriAuthenticateRefreshAsync (line 1700) | public async Task<IApiSession> SatoriAuthenticateRefreshAsync(
method SatoriEventAsync (line 1742) | public async Task SatoriEventAsync(
method SatoriGetExperimentsAsync (line 1778) | public async Task<IApiExperimentList> SatoriGetExperimentsAsync(
method SatoriGetFlagsAsync (line 1818) | public async Task<IApiFlagList> SatoriGetFlagsAsync(
method SatoriGetFlagOverridesAsync (line 1869) | public async Task<IApiFlagOverrideList> SatoriGetFlagOverridesAsync(
method SatoriIdentifyAsync (line 1920) | public async Task<IApiSession> SatoriIdentifyAsync(
method SatoriDeleteIdentityAsync (line 1957) | public async Task SatoriDeleteIdentityAsync(
method SatoriGetLiveEventsAsync (line 1986) | public async Task<IApiLiveEventList> SatoriGetLiveEventsAsync(
method SatoriJoinLiveEventAsync (line 2042) | public async Task SatoriJoinLiveEventAsync(
method SatoriGetMessageListAsync (line 2077) | public async Task<IApiGetMessageListResponse> SatoriGetMessageListAsync(
method SatoriDeleteMessageAsync (line 2124) | public async Task SatoriDeleteMessageAsync(
method SatoriUpdateMessageAsync (line 2159) | public async Task SatoriUpdateMessageAsync(
method SatoriListPropertiesAsync (line 2201) | public async Task<IApiProperties> SatoriListPropertiesAsync(
method SatoriUpdatePropertiesAsync (line 2231) | public async Task SatoriUpdatePropertiesAsync(
method SatoriServerEventAsync (line 2267) | public async Task SatoriServerEventAsync(
FILE: Satori/Client.cs
class Client (line 24) | public class Client : IClient
method Client (line 83) | public Client(string scheme, string host, int port, string apiKey) : t...
method Client (line 88) | public Client(string scheme, string host, int port, string apiKey, IHt...
method AuthenticateAsync (line 102) | public async Task<ISession> AuthenticateAsync(string id, Dictionary<st...
method AuthenticateLogoutAsync (line 115) | public Task AuthenticateLogoutAsync(ISession session, CancellationToke...
method EventAsync (line 123) | public async Task EventAsync(ISession session, Event @event, Cancellat...
method EventsAsync (line 146) | public async Task EventsAsync(ISession session, IEnumerable<Event> eve...
method GetAllExperimentsAsync (line 172) | public Task<IApiExperimentList> GetAllExperimentsAsync(ISession session,
method GetExperimentsAsync (line 177) | public async Task<IApiExperimentList> GetExperimentsAsync(ISession ses...
method GetFlagAsync (line 193) | public async Task<IApiFlag> GetFlagAsync(ISession session, string name,
method GetFlagAsync (line 209) | public Task<IApiFlag> GetFlagAsync(ISession session, string name, stri...
method GetFlagDefaultAsync (line 234) | public async Task<IApiFlag> GetFlagDefaultAsync(string name,
method GetFlagDefaultAsync (line 247) | public Task<IApiFlag> GetFlagDefaultAsync(string name, string defaultV...
method GetFlagsAsync (line 272) | public async Task<IApiFlagList> GetFlagsAsync(ISession session, IEnume...
method GetFlagsDefaultAsync (line 289) | public Task<IApiFlagList> GetFlagsDefaultAsync(IEnumerable<string> names,
method IdentifyAsync (line 299) | public async Task<ISession> IdentifyAsync(ISession session, string id,
method GetLiveEventsAsync (line 326) | public async Task<IApiLiveEventList> GetLiveEventsAsync(
method JoinLiveEventAsync (line 350) | public async Task JoinLiveEventAsync(ISession session, string id = null,
method ListPropertiesAsync (line 365) | public async Task<IApiProperties> ListPropertiesAsync(ISession session,
method SessionRefreshAsync (line 380) | public async Task<ISession> SessionRefreshAsync(ISession session,
method UpdatePropertiesAsync (line 402) | public async Task UpdatePropertiesAsync(ISession session, Dictionary<s...
method DeleteIdentityAsync (line 424) | public async Task DeleteIdentityAsync(ISession session, CancellationTo...
method GetMessageListAsync (line 439) | public async Task<IApiGetMessageListResponse> GetMessageListAsync(ISes...
method UpdateMessageAsync (line 456) | public async Task UpdateMessageAsync(ISession session, string id, stri...
method DeleteMessageAsync (line 471) | public async Task DeleteMessageAsync(ISession session, string id,
method GetFlagOverridesAsync (line 486) | public async Task<IApiFlagOverrideList> GetFlagOverridesAsync(ISession...
FILE: Satori/Console/ConsoleClient.gen.cs
class ApiResponseException (line 15) | public sealed class ApiResponseException : Exception
method ApiResponseException (line 21) | public ApiResponseException(long statusCode, string content, int grpcC...
method ApiResponseException (line 27) | public ApiResponseException(string message, Exception e) : base(messag...
method ApiResponseException (line 33) | public ApiResponseException(string content) : this(-1L, content, -1)
method ToString (line 37) | public override string ToString()
class ApiClient (line 46) | internal class ApiClient
method ApiClient (line 53) | public ApiClient(Uri baseUri, IHttpAdapter httpAdapter, int timeout = 10)
FILE: Satori/Event.cs
class Event (line 24) | public class Event
method Event (line 84) | public Event(string name, DateTime timestamp, string value = null, Dic...
method ToApiEvent (line 99) | internal ApiEvent ToApiEvent()
FILE: Satori/GZipHttpClientHandler.cs
class GZipHttpClientHandler (line 23) | internal class GZipHttpClientHandler : DelegatingHandler
method GZipHttpClientHandler (line 25) | public GZipHttpClientHandler(HttpMessageHandler innerHandler)
method SendAsync (line 30) | protected override Task<HttpResponseMessage> SendAsync(HttpRequestMess...
class GZipContent (line 41) | internal class GZipContent : HttpContent
method GZipContent (line 45) | public GZipContent(HttpContent content)
method SerializeToStreamAsync (line 56) | protected override async Task SerializeToStreamAsync(System.IO.Stream ...
method TryComputeLength (line 64) | protected override bool TryComputeLength(out long length)
FILE: Satori/HttpRequestAdapter.cs
class HttpRequestAdapter (line 32) | public class HttpRequestAdapter : IHttpAdapter
method HttpRequestAdapter (line 41) | public HttpRequestAdapter(HttpClient httpClient)
method SendAsync (line 48) | public async Task<string> SendAsync(string method, Uri uri, IDictionar...
method WithGzip (line 134) | public static IHttpAdapter WithGzip(bool decompression = false, bool c...
method IsTransientException (line 149) | public static bool IsTransientException(Exception e)
FILE: Satori/IClient.cs
type IClient (line 25) | public interface IClient
method AuthenticateAsync (line 87) | public Task<ISession> AuthenticateAsync(string id, Dictionary<string, ...
method AuthenticateLogoutAsync (line 98) | public Task AuthenticateLogoutAsync(ISession session, CancellationToke...
method EventAsync (line 109) | public Task EventAsync(ISession session, Event @event, CancellationTok...
method EventsAsync (line 120) | public Task EventsAsync(ISession session, IEnumerable<Event> events,
method GetAllExperimentsAsync (line 130) | public Task<IApiExperimentList> GetAllExperimentsAsync(ISession session,
method GetExperimentsAsync (line 142) | public Task<IApiExperimentList> GetExperimentsAsync(ISession session, ...
method GetFlagAsync (line 157) | public Task<IApiFlag> GetFlagAsync(ISession session, string name, stri...
method GetFlagDefaultAsync (line 167) | public Task<IApiFlag> GetFlagDefaultAsync(string name,
method GetFlagDefaultAsync (line 181) | public Task<IApiFlag> GetFlagDefaultAsync(string name, string defaultV...
method GetFlagsAsync (line 193) | public Task<IApiFlagList> GetFlagsAsync(ISession session, IEnumerable<...
method GetFlagsDefaultAsync (line 205) | public Task<IApiFlagList> GetFlagsDefaultAsync(IEnumerable<string> nam...
method GetLiveEventsAsync (line 221) | public Task<IApiLiveEventList> GetLiveEventsAsync(
method JoinLiveEventAsync (line 240) | public Task JoinLiveEventAsync(ISession session, string id = null,
method IdentifyAsync (line 255) | public Task<ISession> IdentifyAsync(ISession session, string id, Dicti...
method ListPropertiesAsync (line 266) | public Task<IApiProperties> ListPropertiesAsync(ISession session,
method SessionRefreshAsync (line 276) | public Task<ISession> SessionRefreshAsync(ISession session, Cancellati...
method UpdatePropertiesAsync (line 289) | public Task UpdatePropertiesAsync(ISession session, Dictionary<string,...
method DeleteIdentityAsync (line 300) | public Task DeleteIdentityAsync(ISession session, CancellationToken? c...
method GetMessageListAsync (line 313) | public Task<IApiGetMessageListResponse> GetMessageListAsync(ISession s...
method UpdateMessageAsync (line 327) | public Task UpdateMessageAsync(ISession session, string id, string con...
method DeleteMessageAsync (line 338) | public Task DeleteMessageAsync(ISession session, string id, Cancellati...
method GetFlagOverridesAsync (line 350) | public Task<IApiFlagOverrideList> GetFlagOverridesAsync(ISession sessi...
FILE: Satori/IHttpAdapter.cs
type IHttpAdapter (line 25) | public interface IHttpAdapter
method SendAsync (line 48) | Task<string> SendAsync(string method, Uri uri, IDictionary<string, str...
FILE: Satori/IHttpAdapterUtil.cs
class HttpAdapterUtil (line 24) | public static class HttpAdapterUtil
method CopyResponseError (line 33) | public static void CopyResponseError(IHttpAdapter adapter, object err,...
FILE: Satori/ILogger.cs
type ILogger (line 20) | public interface ILogger
method DebugFormat (line 27) | void DebugFormat(string format, params object[] args);
method ErrorFormat (line 34) | void ErrorFormat(string format, params object[] args);
method InfoFormat (line 41) | void InfoFormat(string format, params object[] args);
method WarnFormat (line 48) | void WarnFormat(string format, params object[] args);
FILE: Satori/ISession.cs
type ISession (line 22) | public interface ISession
method HasExpired (line 69) | bool HasExpired(DateTime offset);
method HasRefreshExpired (line 76) | bool HasRefreshExpired(DateTime offset);
FILE: Satori/NullLogger.cs
class NullLogger (line 20) | internal class NullLogger : ILogger
method NullLogger (line 24) | private NullLogger()
method DebugFormat (line 29) | public void DebugFormat(string format, params object[] args)
method ErrorFormat (line 34) | public void ErrorFormat(string format, params object[] args)
method InfoFormat (line 39) | public void InfoFormat(string format, params object[] args)
method WarnFormat (line 44) | public void WarnFormat(string format, params object[] args)
FILE: Satori/PreserveAttribute.cs
class PreserveAttribute (line 26) | internal class PreserveAttribute : System.Attribute
FILE: Satori/Retry.cs
class Retry (line 22) | public class Retry
method Retry (line 34) | internal Retry(int expoBackoff, int jitterBackoff)
FILE: Satori/RetryConfiguration.cs
class RetryConfiguration (line 29) | public class RetryConfiguration
method RetryConfiguration (line 57) | public RetryConfiguration(int baseDelayMs, int maxRetries) :
method RetryConfiguration (line 66) | public RetryConfiguration(int baseDelayMs, int maxRetries, RetryListen...
method RetryConfiguration (line 76) | public RetryConfiguration(int baseDelayMs, int maxRetries, RetryListen...
FILE: Satori/RetryHistory.cs
class RetryHistory (line 23) | internal class RetryHistory
method RetryHistory (line 30) | public RetryHistory(ISession session, RetryConfiguration configuration...
method RetryHistory (line 34) | public RetryHistory(string jitterHashKey, RetryConfiguration configura...
FILE: Satori/RetryInvoker.cs
class RetryInvoker (line 25) | internal class RetryInvoker
method RetryInvoker (line 29) | public RetryInvoker(TransientExceptionDelegate del)
method InvokeWithRetry (line 39) | public async Task<T> InvokeWithRetry<T>(Func<Task<T>> request, RetryHi...
method InvokeWithRetry (line 59) | public async Task InvokeWithRetry(Func<Task> request, RetryHistory his...
method CreateNewRetry (line 79) | private Retry CreateNewRetry(RetryHistory history)
method Backoff (line 86) | private Task Backoff(RetryHistory history, Exception e)
FILE: Satori/RetryJitter.cs
class RetryJitter (line 35) | public static class RetryJitter
method FullJitter (line 40) | public static int FullJitter(IList<Retry> retries, int retryDelay, Ran...
FILE: Satori/Session.cs
class Session (line 22) | public class Session : ISession
method HasExpired (line 51) | public bool HasExpired(DateTime offset)
method HasRefreshExpired (line 58) | public bool HasRefreshExpired(DateTime offset)
method ToString (line 64) | public override string ToString()
method Session (line 70) | internal Session(string authToken, string refreshToken)
method Update (line 81) | public void Update(string authToken, string refreshToken)
method Restore (line 114) | public static ISession Restore(string authToken, string refreshToken =...
method JwtUnpack (line 119) | private static string JwtUnpack(string jwt)
FILE: Satori/TinyJson/JsonParser.cs
class JsonParser (line 51) | public static class JsonParser
method FromJson (line 58) | public static T FromJson<T>(this string json)
method AppendUntilStringEnd (line 102) | private static int AppendUntilStringEnd(bool appendEscapeCharacter, in...
method Split (line 129) | private static List<string> Split(string json)
method ParseValue (line 170) | private static object ParseValue(Type type, string json)
method ParseAnonymousValue (line 326) | private static object ParseAnonymousValue(string json)
method CreateMemberNameDictionary (line 382) | private static Dictionary<string, T> CreateMemberNameDictionary<T>(IEn...
method ParseObject (line 407) | private static object ParseObject(Type type, string json)
FILE: Satori/TinyJson/JsonWriter.cs
class JsonWriter (line 36) | public static class JsonWriter
method ToJson (line 38) | public static string ToJson(this object item)
method AppendValue (line 45) | private static void AppendValue(StringBuilder stringBuilder, object item)
method GetMemberName (line 198) | private static string GetMemberName(MemberInfo member)
FILE: codegen/main.go
constant codeTemplate (line 28) | codeTemplate string = `/* Code generated by codegen/main.go. DO NOT EDIT...
function convertRefToClassName (line 448) | func convertRefToClassName(input string) (className string) {
function camelToSnake (line 455) | func camelToSnake(input string) (output string) {
function snakeToCamel (line 473) | func snakeToCamel(input string) (snakeToCamel string) {
function snakeToPascal (line 495) | func snakeToPascal(input string) (output string) {
function isPropertyEnum (line 516) | func isPropertyEnum(string) (output string) {
function pascalToCamel (line 521) | func pascalToCamel(input string) (camelCase string) {
function splitEnumDescription (line 531) | func splitEnumDescription(description string, idx int) []string {
function stripNewlines (line 542) | func stripNewlines(input string) string {
function stripOperationPrefix (line 546) | func stripOperationPrefix(input string) string {
function descriptionOrTitle (line 550) | func descriptionOrTitle(description string, title string) string {
function commentify (line 558) | func commentify(input string) string {
function camelToPascal (line 563) | func camelToPascal(camelCase string) (pascalCase string) {
function main (line 573) | func main() {
type Schema (line 676) | type Schema struct
type ObjectSchema (line 705) | type ObjectSchema struct
type ObjectDefinition (line 715) | type ObjectDefinition struct
type ObjectProperty (line 724) | type ObjectProperty struct
type Items (line 734) | type Items struct
type AdditionalProperties (line 739) | type AdditionalProperties struct
function generateBodyDefinitionFromSchema (line 745) | func generateBodyDefinitionFromSchema(s *Schema) {
FILE: docs/html/cookie.js
method readSetting (line 9) | readSetting(cookie,defVal) {
method writeSetting (line 31) | writeSetting(cookie,val,days=10*365) { // default days='forever', 0=sess...
method eraseSetting (line 47) | eraseSetting(cookie) {
FILE: docs/html/dynsections.js
function toggleVisibility (line 26) | function toggleVisibility(linkObj) {
FILE: docs/html/jquery.js
function b (line 2) | function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e...
function w (line 2) | function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof...
function p (line 3) | function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e...
function se (line 8) | function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeTy...
function ue (line 9) | function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cac...
function le (line 9) | function le(e){return e[S]=!0,e}
function ce (line 9) | function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(...
function fe (line 9) | function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[...
function pe (line 9) | function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourc...
function de (line 9) | function de(t){return function(e){return"input"===e.nodeName.toLowerCase...
function he (line 9) | function he(n){return function(e){var t=e.nodeName.toLowerCase();return(...
function ge (line 9) | function ge(t){return function(e){
function ve (line 10) | function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,...
function ye (line 10) | function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
function me (line 21) | function me(){}
function xe (line 21) | function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
function be (line 21) | function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r...
function we (line 21) | function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r-...
function Te (line 21) | function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(...
function Ce (line 21) | function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)...
function Ee (line 22) | function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.r...
function A (line 26) | function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerC...
function j (line 26) | function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,...
function O (line 27) | function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}
function R (line 29) | function R(e){return e}
function M (line 29) | function M(e){throw e}
function I (line 29) | function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n...
function l (line 31) | function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(...
function B (line 33) | function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventLi...
function U (line 34) | function U(e,t){return t.toUpperCase()}
function X (line 34) | function X(e){return e.replace(_,"ms-").replace(z,U)}
function G (line 34) | function G(){this.expando=S.expando+G.uid++}
function Z (line 35) | function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.r...
function se (line 38) | function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:functio...
function le (line 38) | function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[...
function ve (line 39) | function ve(e,t){var n;
function ye (line 40) | function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",...
function xe (line 40) | function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),...
function we (line 41) | function we(){return!0}
function Te (line 41) | function Te(){return!1}
function Ce (line 41) | function Ce(e,t){return e===function(){try{return E.activeElement}catch(...
function Ee (line 41) | function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"...
function Se (line 41) | function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handle...
function je (line 48) | function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"...
function De (line 48) | function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
function qe (line 48) | function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.sli...
function Le (line 48) | function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=...
function He (line 49) | function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],...
function Oe (line 49) | function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
function We (line 52) | function We(e,t
function Fe (line 53) | function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(...
function e (line 53) | function e(){if(l){u.style.cssText="position:absolute;left:-11111px;widt...
function t (line 53) | function t(e){return Math.round(parseFloat(e))}
function ze (line 54) | function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=fun...
function Ye (line 55) | function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[...
function Qe (line 55) | function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border...
function Je (line 55) | function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-bo...
function Ke (line 56) | function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}
function ot (line 60) | function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnima...
function at (line 60) | function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}
function st (line 60) | function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin...
function ut (line 60) | function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["...
function lt (line 60) | function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().alw...
function ht (line 67) | function ht(e){return(e.match(P)||[]).join(" ")}
function gt (line 67) | function gt(e){return e.getAttribute&&e.getAttribute("class")||""}
function vt (line 67) | function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)|...
function At (line 74) | function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r|...
function It (line 75) | function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var ...
function Wt (line 75) | function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!...
function Ft (line 75) | function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)voi...
function l (line 79) | function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=vo...
function n (line 94) | function n(){return i.prototype[e].apply(this,arguments)}
function o (line 95) | function o(t){return i.prototype[e].apply(this,t)}
function t (line 99) | function t(t,e){for(var i,s=0;s<t.length;s++)i=h.classesElementLookup[t[...
function i (line 100) | function i(){if(n||!0!==a.options.disabled&&!y(this).hasClass("ui-state-...
function E (line 102) | function E(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFl...
function H (line 102) | function H(t,e){return parseInt(y.css(t,e),10)||0}
function S (line 102) | function S(t){return null!=t&&t===t.window}
function t (line 116) | function t(t){y(t
function n (line 138) | function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase()...
function h (line 138) | function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}
function k (line 138) | function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&funct...
function CSSCoordinates (line 152) | function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.ri...
function DisplayController (line 152) | function DisplayController(element,options,tipController){var hoverTimer...
function PlacementCalculator (line 154) | function PlacementCalculator(){function computePlacementCoords(element,p...
function TooltipController (line 158) | function TooltipController(options){var placementCalculator=new Placemen...
function isSvgElement (line 163) | function isSvgElement(element){return Boolean(window.SVGElement&&element...
function isMouseEvent (line 163) | function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,...
function initTracking (line 164) | function initTracking(){if(!session.mouseTrackingActive){session.mouseTr...
function getViewportDimensions (line 164) | function getViewportDimensions(){session.scrollLeft=$window.scrollLeft()...
function trackResize (line 164) | function trackResize(){session.windowWidth=$window.width();session.windo...
function trackScroll (line 164) | function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();...
function trackMouse (line 164) | function trackMouse(event){session.currentX=event.pageX;session.currentY...
function isMouseOver (line 164) | function isMouseOver(element){var elementPosition=element.offset(),eleme...
function getTooltipContent (line 165) | function getTooltipContent(element){var tipText=element.data(DATA_POWERT...
function getViewportCollisions (line 165) | function getViewportCollisions(coords,elementWidth,elementHeight){var vi...
function countFlags (line 166) | function countFlags(value){var count=0;while(value){value&=value-1;count...
function f (line 176) | function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault...
function initMouseDetection (line 180) | function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetecti...
function isTouchEvent (line 181) | function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}
function getEventsNS (line 181) | function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ...
FILE: docs/html/menu.js
function initMenu (line 25) | function initMenu(relPath,searchEnabled,serverSide,searchPage,search,tre...
FILE: docs/html/navtree.js
function initNavTree (line 26) | function initNavTree(toroot,relpath,allMembersFile) {
FILE: docs/html/resize.js
function initResizable (line 26) | function initResizable(treeview) {
FILE: docs/html/search/search.js
constant SEARCH_COOKIE_NAME (line 25) | const SEARCH_COOKIE_NAME = ''+'search_grp';
function SearchBox (line 36) | function SearchBox(name, resultsPath, extension) {
function SearchResults (line 351) | function SearchResults() {
function createResults (line 597) | function createResults(resultsPath) {
function init_search (line 677) | function init_search() {
Copy disabled (too large)
Download .json
Condensed preview — 1862 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (14,349K chars).
[
{
"path": ".editorconfig",
"chars": 182,
"preview": "# EditorConfig, options: https://editorconfig.org\n\nroot = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\n\n[*.{ym"
},
{
"path": ".github/workflows/doxygen.yml",
"chars": 412,
"preview": "name: Generate Doxygen Docs\n\non:\n push:\n branches:\n - master\n\njobs:\n doxygen:\n runs-on: ubuntu-latest\n ste"
},
{
"path": ".github/workflows/pr.yml",
"chars": 745,
"preview": "name: Checkout and Test\n\non:\n pull_request:\n\njobs:\n test:\n # disabled\n if: false \n runs-on: ubuntu-latest\n\n "
},
{
"path": ".gitignore",
"chars": 12864,
"preview": "Nakama.sln.DotSettings\n.env\n.task/\n\n# Created by https://www.gitignore.io/api/cake,linux,macos,csharp,windows,monodevelo"
},
{
"path": "CHANGELOG.md",
"chars": 17442,
"preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Change"
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "Nakama/ApiClient.gen.cs",
"chars": 265718,
"preview": "/* Code generated by codegen/main.go. DO NOT EDIT. */\nnamespace Nakama\n{\n using System;\n using System.Collections."
},
{
"path": "Nakama/ChannelJoinMessage.cs",
"chars": 1834,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/ChannelLeaveMessage.cs",
"chars": 1016,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/ChannelRemoveMessage.cs",
"chars": 1143,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/ChannelSendMessage.cs",
"chars": 1140,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/ChannelUpdateMessage.cs",
"chars": 1274,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/Client.cs",
"chars": 86958,
"preview": "// Copyright 2022 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/Console/ConsoleClient.gen.cs",
"chars": 244536,
"preview": "/* Code generated by codegen/main.go. DO NOT EDIT. */\nnamespace Nakama.Console\n{\n using System;\n using System.Coll"
},
{
"path": "Nakama/GZipHttpClientHandler.cs",
"chars": 2241,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/HttpRequestAdapter.cs",
"chars": 7268,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IChannel.cs",
"chars": 3520,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IChannelMessageAck.cs",
"chars": 3980,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IChannelPresenceEvent.cs",
"chars": 3386,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IClient.cs",
"chars": 84287,
"preview": "// Copyright 2022 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IHttpAdapter.cs",
"chars": 2061,
"preview": "/**\r\n * Copyright 2020 The Nakama Authors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * y"
},
{
"path": "Nakama/IHttpAdapterUtil.cs",
"chars": 1953,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/ILogger.cs",
"chars": 2115,
"preview": "// Copyright 2018 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IMatch.cs",
"chars": 3255,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IMatchPresenceEvent.cs",
"chars": 2094,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IMatchState.cs",
"chars": 2382,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IMatchmakerMatched.cs",
"chars": 4282,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IMatchmakerTicket.cs",
"chars": 1258,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IParty.cs",
"chars": 2009,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IPartyClose.cs",
"chars": 877,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IPartyData.cs",
"chars": 1261,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IPartyJoinRequest.cs",
"chars": 1133,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IPartyLeader.cs",
"chars": 1017,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IPartyMatchmakerTicket.cs",
"chars": 1022,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IPartyPresenceEvent.cs",
"chars": 1215,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IPartyUpdate.cs",
"chars": 1270,
"preview": "// Copyright 2025 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/ISession.cs",
"chars": 2987,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/ISocket.cs",
"chars": 24057,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/ISocketAdapter.cs",
"chars": 2707,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IStatus.cs",
"chars": 1430,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IStatusPresenceEvent.cs",
"chars": 2218,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/IStreamPresenceEvent.cs",
"chars": 4792,
"preview": "// Copyright 2018 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/IUserPresence.cs",
"chars": 3254,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/MatchCreateMessage.cs",
"chars": 976,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/MatchJoinMessage.cs",
"chars": 1285,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/MatchLeaveMessage.cs",
"chars": 1012,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/MatchSendMessage.cs",
"chars": 1445,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/MatchmakerAddMessage.cs",
"chars": 1733,
"preview": "// Copyright 2018 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/MatchmakerRemoveMessage.cs",
"chars": 1028,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/Nakama.csproj",
"chars": 2166,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <TargetFrameworks>net46;netstandard2.1</TargetFrameworks>\n"
},
{
"path": "Nakama/Ninja.WebSockets/BufferPool.cs",
"chars": 9244,
"preview": "using System;\nusing System.Collections.Concurrent;\nusing System.IO;\nusing System.Threading;\nusing System.Threading.Task"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/EntityTooLargeException.cs",
"chars": 550,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets.Exceptions\n{\n [Serializable]\n public class EntityTooLargeExcepti"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/InvalidHttpResponseCodeException.cs",
"chars": 941,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets.Exceptions\n{\n [Serializable]\n public class InvalidHttpResponseCo"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/README.txt",
"chars": 57,
"preview": "Make sure that exceptions follow the microsoft standards"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/SecWebSocketKeyMissingException.cs",
"chars": 462,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets.Exceptions\n{\n [Serializable]\n public class SecWebSocketKeyMissin"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/ServerListenerSocketException.cs",
"chars": 475,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets.Exceptions\n{\n [Serializable]\n public class ServerListenerSocketE"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/WebSocketBufferOverflowException.cs",
"chars": 462,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets.Exceptions\n{\n [Serializable]\n public class WebSocketBufferOverfl"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/WebSocketHandshakeFailedException.cs",
"chars": 491,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets.Exceptions\n{\n [Serializable]\n public class WebSocketHandshakeFai"
},
{
"path": "Nakama/Ninja.WebSockets/Exceptions/WebSocketVersionNotSupportedException.cs",
"chars": 507,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets.Exceptions\n{\n [Serializable]\n public class WebSocketVersionNotSu"
},
{
"path": "Nakama/Ninja.WebSockets/HttpHelper.cs",
"chars": 8525,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/IBufferPool.cs",
"chars": 390,
"preview": "using System.IO;\n\nnamespace Nakama.Ninja.WebSockets\n{\n public interface IBufferPool\n {\n /// <summary>\n "
},
{
"path": "Nakama/Ninja.WebSockets/IPingPongManager.cs",
"chars": 716,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Nakama.Ninja.WebSockets\n{\n /// <summa"
},
{
"path": "Nakama/Ninja.WebSockets/IWebSocketClientFactory.cs",
"chars": 2410,
"preview": "using System;\nusing System.Net.WebSockets;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Nakama.Ninj"
},
{
"path": "Nakama/Ninja.WebSockets/IWebSocketServerFactory.cs",
"chars": 1968,
"preview": "using System.Net.WebSockets;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Nakama.Ninja.WebSockets\n{"
},
{
"path": "Nakama/Ninja.WebSockets/Internal/BinaryReaderWriter.cs",
"chars": 5566,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/Internal/WebSocketFrame.cs",
"chars": 1141,
"preview": "using System;\nusing System.Net.WebSockets;\n\nnamespace Nakama.Ninja.WebSockets.Internal\n{\n internal class WebSocketFr"
},
{
"path": "Nakama/Ninja.WebSockets/Internal/WebSocketFrameCommon.cs",
"chars": 2825,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/Internal/WebSocketFrameReader.cs",
"chars": 9806,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/Internal/WebSocketFrameWriter.cs",
"chars": 4711,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/Internal/WebSocketImplementation.cs",
"chars": 27461,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/Internal/WebSocketOpCode.cs",
"chars": 238,
"preview": "namespace Nakama.Ninja.WebSockets.Internal\n{\n internal enum WebSocketOpCode\n {\n ContinuationFrame = 0,\n "
},
{
"path": "Nakama/Ninja.WebSockets/Internal/WebSocketReadCursor.cs",
"chars": 679,
"preview": "namespace Nakama.Ninja.WebSockets.Internal\n{\n internal class WebSocketReadCursor\n {\n public WebSocketFrame "
},
{
"path": "Nakama/Ninja.WebSockets/LICENCE",
"chars": 1086,
"preview": "The MIT License (MIT)\n\nCopyright 2018 David Haig\n\nPermission is hereby granted, free of charge, to any person obtaining"
},
{
"path": "Nakama/Ninja.WebSockets/PingPongManager.cs",
"chars": 5967,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/PongEventArgs.cs",
"chars": 662,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets\n{\n /// <summary>\n /// Pong EventArgs\n /// </summary>\n publ"
},
{
"path": "Nakama/Ninja.WebSockets/WebSocketClientFactory.cs",
"chars": 14639,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/WebSocketClientOptions.cs",
"chars": 2851,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace Nakama.Ninja.WebSockets\n{\n /// <summary>\n /// Client W"
},
{
"path": "Nakama/Ninja.WebSockets/WebSocketHttpContext.cs",
"chars": 1833,
"preview": "using System.Collections.Generic;\n\nnamespace Nakama.Ninja.WebSockets\n{\n /// <summary>\n /// The WebSocket HTTP Con"
},
{
"path": "Nakama/Ninja.WebSockets/WebSocketServerFactory.cs",
"chars": 8330,
"preview": "// ---------------------------------------------------------------------\n// Copyright 2018 David Haig\n//\n// Permission "
},
{
"path": "Nakama/Ninja.WebSockets/WebSocketServerOptions.cs",
"chars": 1832,
"preview": "using System;\n\nnamespace Nakama.Ninja.WebSockets\n{\n /// <summary>\n /// Server WebSocket init options\n /// </su"
},
{
"path": "Nakama/NullLogger.cs",
"chars": 1430,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/Party.cs",
"chars": 2182,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyAccept.cs",
"chars": 1026,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyClose.cs",
"chars": 983,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyCreate.cs",
"chars": 1224,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyData.cs",
"chars": 1616,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyDataSend.cs",
"chars": 1140,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyJoin.cs",
"chars": 970,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyJoinRequest.cs",
"chars": 1330,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyJoinRequestList.cs",
"chars": 978,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyLeader.cs",
"chars": 1151,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyLeave.cs",
"chars": 928,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyMatchmakerAdd.cs",
"chars": 1822,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyMatchmakerRemove.cs",
"chars": 1084,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyMatchmakerTicket.cs",
"chars": 1078,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyMemberRemove.cs",
"chars": 1101,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyPresenceEvent.cs",
"chars": 1482,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyPromote.cs",
"chars": 1068,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PartyUpdate.cs",
"chars": 1242,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PresenceUtil.cs",
"chars": 2594,
"preview": "// Copyright 2023 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/PreserveAttribute.cs",
"chars": 1122,
"preview": "/*\n * Copyright 2020 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Nakama/Retry.cs",
"chars": 1282,
"preview": "/*\n * Copyright 2021 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Nakama/RetryConfiguration.cs",
"chars": 4022,
"preview": "/*\n * Copyright 2021 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Nakama/RetryHistory.cs",
"chars": 1457,
"preview": "/*\n * Copyright 2021 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Nakama/RetryInvoker.cs",
"chars": 3343,
"preview": "/*\n * Copyright 2021 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Nakama/RetryJitter.cs",
"chars": 1874,
"preview": "/*\n * Copyright 2021 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Nakama/RetryListener.cs",
"chars": 954,
"preview": "/*\n * Copyright 2021 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Nakama/Session.cs",
"chars": 6135,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/Socket.cs",
"chars": 37326,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/StatusFollowMessage.cs",
"chars": 1290,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/StatusUnfollowMessage.cs",
"chars": 1113,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/StatusUpdateMessage.cs",
"chars": 1007,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/StorageObjectId.cs",
"chars": 1382,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/TinyJson/JsonParser.cs",
"chars": 17111,
"preview": "// The MIT License (MIT)\n//\n// Copyright (c) 2018 Alex Parker\n//\n// Permission is hereby granted, free of charge, to any"
},
{
"path": "Nakama/TinyJson/JsonWriter.cs",
"chars": 7974,
"preview": "// The MIT License (MIT)\n//\n// Copyright (c) 2018 Alex Parker\n//\n// Permission is hereby granted, free of charge, to an"
},
{
"path": "Nakama/TinyJson/LICENSE",
"chars": 1078,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2018 Alex Parker\n\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "Nakama/TransientExceptionDelegate.cs",
"chars": 377,
"preview": "using System;\n\nnamespace Nakama\n{\n /// <summary>\n /// A delegate used to determine whether or not a network except"
},
{
"path": "Nakama/WebSocketAdapter.cs",
"chars": 9831,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama/WebSocketErrorMessage.cs",
"chars": 1273,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/WebSocketMessageEnvelope.cs",
"chars": 6530,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama/WebSocketStdlibAdapter.cs",
"chars": 8450,
"preview": "// Copyright 2022 The Nakama Authors\r\n//\r\n// Licensed under the Apache License, Version 2.0 (the \"License\");\r\n// you ma"
},
{
"path": "Nakama/WriteStorageObject.cs",
"chars": 1289,
"preview": "/**\n * Copyright 2018 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/AssemblyInfo.cs",
"chars": 102,
"preview": "using Xunit;\n\n// resolve test hangs\n[assembly: CollectionBehavior(DisableTestParallelization = true)]\n"
},
{
"path": "Nakama.Tests/AuthenticateTest.cs",
"chars": 5123,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you m"
},
{
"path": "Nakama.Tests/AwaitedSocketTaskTest.cs",
"chars": 2326,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/CancelTest.cs",
"chars": 2160,
"preview": "/**\n* Copyright 2021 The Nakama Authors\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may no"
},
{
"path": "Nakama.Tests/FriendTest.cs",
"chars": 3337,
"preview": "/**\n * Copyright 2023 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/GroupTest.cs",
"chars": 11451,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you m"
},
{
"path": "Nakama.Tests/HttpErrorTest.cs",
"chars": 3381,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/LeaderboardAroundOwnerTest.cs",
"chars": 9429,
"preview": "/**\n * Copyright 2021 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/LeaderboardTest.cs",
"chars": 5450,
"preview": "/**\n * Copyright 2021 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you m"
},
{
"path": "Nakama.Tests/LinkUnlinkTest.cs",
"chars": 18261,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you m"
},
{
"path": "Nakama.Tests/Nakama.Tests.csproj",
"chars": 1193,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n <PropertyGroup>\r\n <TargetFramework>net8.0</TargetFramework>\r\n <Nullable>ena"
},
{
"path": "Nakama.Tests/PresenceUtilTest.cs",
"chars": 3972,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/RetryTest.cs",
"chars": 12122,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/RpcTest.cs",
"chars": 3379,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you m"
},
{
"path": "Nakama.Tests/SessionTest.cs",
"chars": 7844,
"preview": "// Copyright 2018 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/Socket/WebSocketChannelTest.cs",
"chars": 4340,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/Socket/WebSocketMatchTest.cs",
"chars": 8159,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/Socket/WebSocketMatchmakerTest.cs",
"chars": 13140,
"preview": "// Copyright 2020 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/Socket/WebSocketNotificationTest.cs",
"chars": 3158,
"preview": "/**\n * Copyright 2020 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/Socket/WebSocketPartyTest.cs",
"chars": 20126,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/Socket/WebSocketRpcTest.cs",
"chars": 1780,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/Socket/WebSocketTest.cs",
"chars": 5487,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/Socket/WebSocketUserStatusTest.cs",
"chars": 18413,
"preview": "/**\n * Copyright 2021 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/StdoutLogger.cs",
"chars": 1348,
"preview": "// Copyright 2019 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/TestsUtil.cs",
"chars": 1714,
"preview": "// Copyright 2021 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Nakama.Tests/TinyJsonParserTest.cs",
"chars": 4944,
"preview": "/**\r\n * Copyright 2018 The Nakama Authors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * yo"
},
{
"path": "Nakama.Tests/TransientExceptionHttpAdapter.cs",
"chars": 2788,
"preview": "/**\n * Copyright 2021 The Nakama Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
},
{
"path": "Nakama.Tests/settings.json",
"chars": 111,
"preview": "{\n \"HOST\": \"127.0.0.1\",\n \"PORT\": 7350,\n \"SCHEME\": \"http\",\n \"SERVER_KEY\": \"defaultkey\",\n \"STDOUT\": false\n}\n"
},
{
"path": "Nakama.sln",
"chars": 2445,
"preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.3"
},
{
"path": "README.md",
"chars": 9731,
"preview": "Nakama .NET\n===========\n\n# Nakama\n\n> .NET client for Nakama and Satori servers written in C#.\n\n[Nakama](https://github.c"
},
{
"path": "RELEASEINST.md",
"chars": 2037,
"preview": "Release Instructions\n===\n\nThis document outlines the release of the Nakama and Satori .NET clients to Github and [Nuget]"
},
{
"path": "Satori/ApiClient.gen.cs",
"chars": 73217,
"preview": "/* Code generated by codegen/main.go. DO NOT EDIT. */\nnamespace Satori\n{\n using System;\n using System.Collections."
},
{
"path": "Satori/Client.cs",
"chars": 23582,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/Console/ConsoleClient.gen.cs",
"chars": 1689,
"preview": "/* Code generated by codegen/main.go. DO NOT EDIT. */\nnamespace Satori.Console\n{\n using System;\n using System.Coll"
},
{
"path": "Satori/Event.cs",
"chars": 4470,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/GZipHttpClientHandler.cs",
"chars": 2233,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/HttpRequestAdapter.cs",
"chars": 7267,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/IClient.cs",
"chars": 22490,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/IHttpAdapter.cs",
"chars": 2106,
"preview": "// Copyright 2022 The Satori Authors\r\n//\r\n// Licensed under the Apache License, Version 2.0 (the \"License\");\r\n// you ma"
},
{
"path": "Satori/IHttpAdapterUtil.cs",
"chars": 1944,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/ILogger.cs",
"chars": 2115,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/ISession.cs",
"chars": 2515,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/NullLogger.cs",
"chars": 1430,
"preview": "// Copyright 2025 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/PreserveAttribute.cs",
"chars": 1122,
"preview": "/*\n * Copyright 2022 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Satori/Retry.cs",
"chars": 1282,
"preview": "/*\n * Copyright 2024 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Satori/RetryConfiguration.cs",
"chars": 4022,
"preview": "/*\n * Copyright 2024 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Satori/RetryHistory.cs",
"chars": 1457,
"preview": "/*\n * Copyright 2024 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Satori/RetryInvoker.cs",
"chars": 3343,
"preview": "/*\n * Copyright 2024 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Satori/RetryJitter.cs",
"chars": 1874,
"preview": "/*\n * Copyright 2024 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Satori/RetryListener.cs",
"chars": 954,
"preview": "/*\n * Copyright 2024 Heroic Labs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "Satori/Satori.csproj",
"chars": 1944,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <TargetFrameworks>net46;netstandard2.1</TargetFrameworks>\n"
},
{
"path": "Satori/Session.cs",
"chars": 4993,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori/TinyJson/JsonParser.cs",
"chars": 17094,
"preview": "// The MIT License (MIT)\n//\n// Copyright (c) 2018 Alex Parker\n//\n// Permission is hereby granted, free of charge, to any"
},
{
"path": "Satori/TinyJson/JsonWriter.cs",
"chars": 7974,
"preview": "// The MIT License (MIT)\n//\n// Copyright (c) 2018 Alex Parker\n//\n// Permission is hereby granted, free of charge, to any"
},
{
"path": "Satori/TinyJson/LICENSE",
"chars": 1078,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2018 Alex Parker\n\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "Satori/TransientExceptionDelegate.cs",
"chars": 970,
"preview": "// Copyright 2022 The Satori Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori.Tests/ClientIdentifyTest.cs",
"chars": 3532,
"preview": "// Copyright 2022 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori.Tests/ClientTest.cs",
"chars": 3644,
"preview": "// Copyright 2022 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "Satori.Tests/README.md",
"chars": 0,
"preview": ""
},
{
"path": "Satori.Tests/Satori.Tests.csproj",
"chars": 1096,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <TargetFramework>net8.0</TargetFramework>\n <Nullable>en"
},
{
"path": "Taskfile.dist.yml",
"chars": 7941,
"preview": "version: '3'\n\ndotenv: [ '.env' ]\n\nvars:\n NAKAMA_REPO_URL: 'https://github.com/heroiclabs/nakama.git'\n SATORI_REPO_"
},
{
"path": "codegen/README.md",
"chars": 1151,
"preview": "codegen\n=======\n\n> A util tool to generate a client from the Swagger spec of Nakama's server API.\n\n### Nakama API\n\nTo ge"
},
{
"path": "codegen/go.mod",
"chars": 909,
"preview": "module github.com/heroiclabs/nakama-dotnet/codegen\n\ngo 1.25.0\n\ntool (\n\tgithub.com/grpc-ecosystem/grpc-gateway/v2/protoc-"
},
{
"path": "codegen/go.sum",
"chars": 3003,
"preview": "github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/google/go-cmp v0.7.0 h1:w"
},
{
"path": "codegen/main.go",
"chars": 27670,
"preview": "// Copyright 2020 The Nakama Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may no"
},
{
"path": "docs/.nojekyll",
"chars": 0,
"preview": ""
},
{
"path": "docs/CNAME",
"chars": 26,
"preview": "dotnet.docs.heroiclabs.com"
},
{
"path": "docs/Doxyfile",
"chars": 116176,
"preview": "# Doxyfile 1.9.2\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
},
{
"path": "docs/html/_api_client_8gen_8cs.html",
"chars": 60290,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
},
{
"path": "docs/html/_api_client_8gen_8cs.js",
"chars": 9988,
"preview": "var _api_client_8gen_8cs =\n[\n [ \"Nakama.ApiResponseException\", \"class_nakama_1_1_api_response_exception.html\", \"class"
},
{
"path": "docs/html/_binary_reader_writer_8cs.html",
"chars": 6324,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
},
{
"path": "docs/html/_buffer_pool_8cs.html",
"chars": 7435,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
},
{
"path": "docs/html/_buffer_pool_8cs.js",
"chars": 449,
"preview": "var _buffer_pool_8cs =\n[\n [ \"Nakama.Ninja.WebSockets.BufferPool\", \"class_nakama_1_1_ninja_1_1_web_sockets_1_1_buffer_"
},
{
"path": "docs/html/_c_h_a_n_g_e_l_o_g_8md.html",
"chars": 4191,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
},
{
"path": "docs/html/_channel_join_message_8cs.html",
"chars": 6457,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
},
{
"path": "docs/html/_channel_join_message_8cs.js",
"chars": 547,
"preview": "var _channel_join_message_8cs =\n[\n [ \"Nakama.ChannelType\", \"namespace_nakama.html#addd7f097ac4c449d75e44da62657f307\","
},
{
"path": "docs/html/_channel_leave_message_8cs.html",
"chars": 5285,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
},
{
"path": "docs/html/_channel_remove_message_8cs.html",
"chars": 5296,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
}
]
// ... and 1662 more files (download for full content)
About this extraction
This page contains the full source code of the heroiclabs/nakama-dotnet GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1862 files (12.8 MB), approximately 3.5M tokens, and a symbol index with 1898 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.