Пример #1
0
    public static void LoginAsGuestInBackground(Action <BacktoryResponse <LoginResponse> > callback)
    {
        // Simplifying this by removing "BacktoryUser" type parameter leads to error though compiler suggests, but why?!
        Backtory.RestClient.ExecuteAsync <BacktoryUser>(GuestRegisterRequest(), response =>
        {
            // **this part will be called on background thread! (Since we're using restsharp async method)**

            // if guest register failed don't proceed to login
            if (!response.IsSuccessful())
            {
                Backtory.Dispatch(() => BacktoryResponse <LoginResponse> .Unknown(response.ErrorMessage));
                return;
            }

            var guest         = response.Data;
            var loginResponse = Backtory.Execute <LoginResponse>(LoginRequest(guest.Username, guest.Password));

            if (loginResponse.Successful)
            {
                DispatchSaveCurrentUser(guest);
                DispatchSaveGuestPassword(guest.Password);
                DispatchSaveLoginInfo(loginResponse.Body);
            }

            Backtory.Dispatch(() => callback(loginResponse));
        });
    }
 private BacktoryResponse <ConnectResponse> connectSynchronized()
 {
     connectLatch = new CountDownLatch(LATCH_COUNT);
     Debug.Log(TAG + "connecting");
     connectorStateEngine.ChangeState(ConnectorStateEngine.StateChangeEvent.CONNECT);
     try {
         if (connectLatch.Wait(TIMEOUT_IN_SECONDS * 1000))
         {
             if (connectorStateEngine.getConnectionState() == ConnectorStateEngine.ConnectorState.CONNECTED)
             {
                 ConnectResponse response = new ConnectResponse(webSocket.userId, webSocket.username);
                 return(BacktoryResponse <ConnectResponse> .Success((int)BacktoryHttpStatusCode.OK, response));
             }
             else
             {
                 return(new BacktoryResponse <ConnectResponse> (1000, "Error connecting", default(ConnectResponse), false));
             }
         }
         else
         {
             Debug.LogError(TAG + "Timeout waiting to connect");
             connectorStateEngine.ChangeState(ConnectorStateEngine.StateChangeEvent.GENERAL_ERROR);
             return(new BacktoryResponse <ConnectResponse> (1000, "Timeout waiting to connect", default(ConnectResponse), false));
         }
     } catch (Exception e) {
         Debug.LogError(TAG + e.Data);
         return(new BacktoryResponse <ConnectResponse> (1000, "Error while connecting", default(ConnectResponse), false));
     }
 }
Пример #3
0
 public static void LoginInBackground(string username, string password,
                                      Action <BacktoryResponse <LoginResponse> > callback)
 {
     Backtory.ExecuteAsync <LoginResponse>(LoginRequest(username, password), loginResopnse =>
     {
         // this will be called in main thread since we're using backtory API
         if (loginResopnse.Successful)
         {
             Backtory.ExecuteAsync <BacktoryUser>(UserByUsernameRequest(username, loginResopnse.Body.AccessToken), userResponse =>
             {
                 // also on main thread
                 if (userResponse.Successful)
                 {
                     //DispatchSaveCurrentUser(userResponse.Body);
                     //DispatchSaveLoginInfo(loginResopnse.Body);
                     SaveAsCurrentUserInMemoryAndStorage(userResponse.Body);
                     SaveLoginInfo(loginResopnse.Body);
                     callback(loginResopnse);
                 }
                 else
                 {
                     callback(BacktoryResponse <LoginResponse> .Unknown(userResponse.Message));
                 }
             });
         }
         else
         {
             callback(loginResopnse);
         }
     });
 }
Пример #4
0
 /// <summary>
 /// Create a new response from another, converting generic type
 /// </summary>
 /// <typeparam name="RAW"></typeparam>
 /// <typeparam name="TRANSFORMED"></typeparam>
 /// <param name="backtoryResponse"></param>
 /// <returns></returns>
 public static BacktoryResponse <TRANSFORMED> Error <RAW, TRANSFORMED>(BacktoryResponse <RAW> backtoryResponse)
     where TRANSFORMED : class
     where RAW : class
 {
     return(new BacktoryResponse <TRANSFORMED>(backtoryResponse.Code,
                                               backtoryResponse.Message, /*backtoryResponse.Message*/ null, false));
 }
Пример #5
0
        internal BacktoryResponse <T> SendAndReceive <T> (string destination, Dictionary <string, object> apiParamData, Type clazz) where T : class
        {
            BacktorySender sender = GetSender(destination, apiParamData);
            string         responseStr;

            try {
                responseStr = sender.Send();
            } catch (Exception) {
                return(BacktoryResponse <T> .Error(1000, "Not Connected"));
            }
            return(GenerateBacktoryResponse <T> (responseStr, clazz));
        }
        private void createChatGroup(ChatGroupType type)
        {
            BacktoryResponse <ChatGroupCreationResponse> response = backtoryApi.CreateChatGroup(getMessage(), type);

            if (response.Successful)
            {
                writeLine("--+group created. id: " + response.Body.GroupId);
            }
            else
            {
                writeLine("--+group creation failed with code: " + response.Code + " and message " + response.Message);
            }
        }
        private void connect()
        {
            BacktoryResponse <ConnectResponse> response = backtoryApi.Connect();

            if (response.Successful)
            {
                writeLine("---connected: " + response.Body.Username + ":" + response.Body.UserId);
            }
            else
            {
                writeLine("---connect failed with code: " + response.Code + " and message: " + response.Message);
            }
        }
        private void addClickListeners()
        {
            btnEvent.onClick.AddListener(() => {
                Dictionary <string, string> data = new Dictionary <string, string> ();
                data.Add("key1", "added data 1");
                data.Add("key2", "added data 2");
                matchApi.SendEvent(getMessage(), data);
            });

            btnGroupChat.onClick.AddListener(() => {
                BacktoryResponse <BacktoryVoid> response = matchApi.SendChatToMatch(getMessage());
                if (response.Successful)
                {
                    writeLine("-+-match chat sent");
                }
                else
                {
                    writeLine("-+-group list failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnDirectChat.onClick.AddListener(() => {
                BacktoryResponse <BacktoryVoid> response = matchApi.DirectToUser(getUserId(), getMessage());
                if (response.Successful)
                {
                    writeLine("-+-direct chat sent");
                }
                else
                {
                    writeLine("-+-direct chat failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnSendResult.onClick.AddListener(() => {
                List <string> winners = new List <string> ();
                winners.Add(getUserId());
                BacktoryResponse <BacktoryVoid> response = matchApi.SendMatchResult(winners);
                if (response.Successful)
                {
                    writeLine("-+-winners sent");
                }
                else
                {
                    writeLine("-+-sending winners failed with code: " + response.Code + " and message " + response.Message);
                }
            });
        }
Пример #9
0
        private BacktoryResponse <T> GenerateBacktoryResponse <T> (string responseJson, Type clazz) where T : class
        {
            Debug.Log("jsonnode: " + responseJson);
            if (responseJson == null)
            {
                return(BacktoryResponse <T> .Error((int)BacktoryHttpStatusCode.RequestTimeout, null));
            }
            JSONNode jsonNode = JSONNode.Parse(responseJson);
            string   _type    = jsonNode ["_type"];

            if (_type.Equals(".ExceptionResponse"))
            {
                ExceptionResponse exceptionResponse = Backtory.FromJson <ExceptionResponse> (responseJson);
                string            message           = exceptionResponse.Exception.Message;
                int errorCode = (int)exceptionResponse.Exception.Code;
                return(BacktoryResponse <T> .Error(errorCode, message));
            }
            else if (typeof(T).Equals(typeof(GroupChatHistoryResponse)))
            {
                T body = GroupChatHistoryResponse.Get(responseJson) as T;
                return(BacktoryResponse <T> .Success(200, body));
            }
            else if (typeof(T).Equals(typeof(UserChatHistoryResponse)))
            {
                T body = UserChatHistoryResponse.Get(responseJson) as T;
                return(BacktoryResponse <T> .Success(200, body));
            }
            else if (typeof(T).Equals(typeof(OfflineMessageResponse)))
            {
                T body = OfflineMessageResponse.Get(responseJson) as T;
                return(BacktoryResponse <T> .Success(200, body));
            }
            else
            {
                T body;
                if (clazz != typeof(BacktoryVoid))
                {
                    body = Backtory.FromJson(responseJson, clazz) as T;
                }
                else
                {
                    body = default(BacktoryVoid) as T;
                }
                return(BacktoryResponse <T> .Success(200, body));
            }
        }
Пример #10
0
    public static BacktoryResponse <LoginResponse> LoginAsGuest()
    {
        var regResponse = Backtory.Execute <BacktoryUser>(GuestRegisterRequest());

        if (!regResponse.Successful)
        {
            return(BacktoryResponse.Error <BacktoryUser, LoginResponse>(regResponse));
        }
        var guest         = regResponse.Body;
        var loginResponse = Backtory.Execute <LoginResponse>(LoginRequest(guest.Username, guest.Password));

        if (loginResponse.Successful)
        {
            DispatchSaveCurrentUser(guest);
            DispatchSaveGuestPassword(guest.Password);
            DispatchSaveLoginInfo(loginResponse.Body);
        }

        return(loginResponse);
    }
Пример #11
0
    public static BacktoryResponse <LoginResponse> Login(string username, string password)
    {
        var loginResponse = Backtory.Execute <LoginResponse>(LoginRequest(username, password));

        if (loginResponse.Successful)
        {
            var userResponse = Backtory.Execute <BacktoryUser>(UserByUsernameRequest(username, loginResponse.Body.AccessToken));
            if (userResponse.Successful)
            {
                DispatchSaveCurrentUser(userResponse.Body);
                DispatchSaveLoginInfo(loginResponse.Body);
            }
            else
            {
                BacktoryResponse <LoginResponse> .Unknown(userResponse.Message);

                Debug.Log("error getting user info by username\n" + userResponse.Message);
            }
        }
        return(loginResponse);
    }
 private BacktoryResponse <BacktoryVoid> disconnectSyncronized()
 {
     disconnectLatch = new CountDownLatch(LATCH_COUNT);
     Debug.Log(TAG + "disconnecting");
     connectorStateEngine.ChangeState(ConnectorStateEngine.StateChangeEvent.DISCONNECT);
     try {
         if (disconnectLatch.Wait(TIMEOUT_IN_SECONDS * 1000))
         {
             return(BacktoryResponse <BacktoryVoid> .Success(200, default(BacktoryVoid)));
         }
         else
         {
             Debug.LogError(TAG + "Timeout waiting to connect");
             connectorStateEngine.ChangeState(ConnectorStateEngine.StateChangeEvent.GENERAL_ERROR);
             return(new BacktoryResponse <BacktoryVoid> (1000, "Timeout waiting to connect", default(BacktoryVoid), false));
         }
     } catch (Exception e) {
         Debug.LogError(TAG + e.Data);
         return(new BacktoryResponse <BacktoryVoid> (1000, "Error while connecting", default(BacktoryVoid), false));
     }
 }
        // Use this for initialization
        void Start()
        {
//			UnityThreadHelper.EnsureHelperForce ();

            matchApi = BacktoryRealtimeUnityApi.GetMatchApi(MainScript.LastFoundedGameId);
            matchApi.SetRealtimeSdkListener(this);
            matchApi.SetMatchListener(this);

            addClickListeners();

            // TODO use better name like JoinAndStart or ConnectAndJoin
            BacktoryResponse <ConnectResponse> response = matchApi.ConnectAndJoin();

            if (response.Successful)
            {
                writeLine("---connected: " + response.Body.Username + ":" + response.Body.UserId);
            }
            else
            {
                writeLine("---connect failed with code: " + response.Code + " and message: " + response.Message);
            }
        }
 private void addClickListeners()
 {
     btnCreatePri.onClick.AddListener(() => {
         createChatGroup(ChatGroupType.Private);
     });
     btnCreatePub.onClick.AddListener(() => {
         createChatGroup(ChatGroupType.Public);
     });
     btnListGroups.onClick.AddListener(() => {
         BacktoryResponse <ChatGroupsListResponse> response = backtoryApi.RequestListOfChatGroups();
         if (response.Successful)
         {
             writeLine("--+group list returned with json: " + Backtory.ToJson(response.Body, true));
         }
         else
         {
             writeLine("--+group list failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnListMembers.onClick.AddListener(() => {
         BacktoryResponse <ChatGroupMembersListResponse> response = backtoryApi.RequestListOfChatGroupMembers(getGroupId());
         if (response.Successful)
         {
             writeLine("--+group member list returned with json: " + Backtory.ToJson(response.Body, true));
         }
         else
         {
             writeLine("--+group member list failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnAddMember.onClick.AddListener(() => {
         BacktoryResponse <BacktoryVoid> response = backtoryApi.AddMemberToChatGroup(getGroupId(), getUserId());
         if (response.Successful)
         {
             writeLine("--+member added");
         }
         else
         {
             writeLine("--+member adding failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnRemoveMember.onClick.AddListener(() => {
         BacktoryResponse <BacktoryVoid> response = backtoryApi.RemoveMemberFromChatGroup(getGroupId(), getUserId());
         if (response.Successful)
         {
             writeLine("--+member removed");
         }
         else
         {
             writeLine("--+member removing failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnAddOwner.onClick.AddListener(() => {
         BacktoryResponse <BacktoryVoid> response = backtoryApi.AddOwnerToChatGroup(getGroupId(), getUserId());
         if (response.Successful)
         {
             writeLine("--+owner added");
         }
         else
         {
             writeLine("--+owner adding failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnGroupChat.onClick.AddListener(() => {
         BacktoryResponse <BacktoryVoid> response = backtoryApi.SendChatToGroup(getGroupId(), getMessage());
         if (response.Successful)
         {
             writeLine("--+group chat sent");
         }
         else
         {
             writeLine("--+group chat sending failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnDirectChat.onClick.AddListener(() => {
         BacktoryResponse <BacktoryVoid> response = backtoryApi.SendChatToUser(getUserId(), getMessage());
         if (response.Successful)
         {
             writeLine("--+direct chat sent");
         }
         else
         {
             writeLine("--+direct chat sending failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnJoin.onClick.AddListener(() => {
         string groupId = getGroupId();
         BacktoryResponse <BacktoryVoid> response = backtoryApi.JoinChatGroup(groupId);
         if (response.Successful)
         {
             writeLine("--+you joined to group with id " + groupId);
         }
         else
         {
             writeLine("--+group creation failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnLeave.onClick.AddListener(() => {
         BacktoryResponse <BacktoryVoid> response = backtoryApi.LeaveChatGroup(getGroupId());
         if (response.Successful)
         {
             writeLine("--+you left chat group");
         }
         else
         {
             writeLine("--+group leaving failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnInvite.onClick.AddListener(() => {
         BacktoryResponse <BacktoryVoid> response = backtoryApi.InviteUserToChatGroup(getGroupId(), getUserId());
         if (response.Successful)
         {
             writeLine("--+invitation sent");
         }
         else
         {
             writeLine("--+invitation sending failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnOffline.onClick.AddListener(() => {
         BacktoryResponse <OfflineMessageResponse> response = backtoryApi.RequestOfflineMessages();
         if (response.Successful)
         {
             writeLine("--+offline list: ");
             List <ChatMessage> list = response.Body.ChatMessageList;
             for (int i = 0; i < list.Count; i++)
             {
                 list[i].OnMessageReceived(this);
             }
         }
         else
         {
             writeLine("--+offline request failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnGroupHist.onClick.AddListener(() => {
         BacktoryResponse <GroupChatHistoryResponse> response = backtoryApi.RequestGroupChatHistory(getGroupId(), lastGroupDate);
         if (response.Successful)
         {
             writeLine("--+group history");
             List <ChatMessage> list = response.Body.ChatMessageList;
             if (list.Count > 0)
             {
                 lastGroupDate = list[list.Count - 1].Date;
             }
             else
             {
                 lastGroupDate = 0;
             }
             for (int i = 0; i < list.Count; i++)
             {
                 list[i].OnMessageReceived(this);
             }
         }
         else
         {
             writeLine("--+group history request failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnDirectHist.onClick.AddListener(() => {
         BacktoryResponse <UserChatHistoryResponse> response = backtoryApi.RequestUserChatHistory(lastDirectDate);
         if (response.Successful)
         {
             writeLine("--+direct history");
             List <ChatMessage> list = response.Body.ChatMessageList;
             if (list.Count > 0)
             {
                 lastDirectDate = list[list.Count - 1].Date;
             }
             else
             {
                 lastDirectDate = 0;
             }
             for (int i = 0; i < list.Count; i++)
             {
                 list[i].OnMessageReceived(this);
             }
         }
         else
         {
             writeLine("--+direct history request failed with code: " + response.Code + " and message " + response.Message);
         }
     });
     btnReturn.onClick.AddListener(() => {
         int previousLevel = PlayerPrefs.GetInt("MainLevel");
         Application.LoadLevel(previousLevel);
     });
 }
        private void addClickListeners()
        {
            btnLogin.onClick.AddListener(() => {
                string username = ifUsername.text;
                string password = ifPassword.text;
                BacktoryUser.LoginInBackground(username, password, loginResponse =>
                {
                    if (loginResponse.Successful)
                    {
                        writeLine("logged in!");
                    }
                    else
                    {
                        writeLine("Unable to login=> " + loginResponse.Code + ":" + loginResponse.Message);
                    }
                });
            });

            btnConnect.onClick.AddListener(() => {
                Debug.Log("AccessToken: " + BacktoryUser.GetAccessToken());
                if (BacktoryUser.GetAccessToken() == null)
                {
                    writeLine("login first");
                    return;
                }
                connect();
            });

            btnDisconnect.onClick.AddListener(() => {
                BacktoryResponse <BacktoryVoid> response = backtoryApi.Disconnect();
                if (response.Successful)
                {
                    writeLine("---disconnect successful");
                }
                else
                {
                    writeLine("---disconnect failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnMatchmaking.onClick.AddListener(() => {
                BacktoryResponse <MatchmakingResponse> response = backtoryApi.RequestMatchmaking(matchmakingName, 55, "sample meta data");
                if (response.Successful)
                {
                    lastMatchmakingRequestId = response.Body.RequestId;
                    writeLine("---matchmaking successful. id: " + lastMatchmakingRequestId);
                }
                else
                {
                    writeLine("---matchmaking failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnCancelMM.onClick.AddListener(() => {
                BacktoryResponse <BacktoryVoid> response = backtoryApi.CancelMatchmaking(matchmakingName, lastMatchmakingRequestId);
                if (response.Successful)
                {
                    writeLine("---matchmaking cancelled successful.");
                }
                else
                {
                    writeLine("---matchmaking cancellation failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnChallenge.onClick.AddListener(() => {
                List <String> users = new List <String> ();
                users.Add("5720b016e4b0bf11f90cdee6");  // ali
                users.Add("5720b01be4b0bf11f90cdee7");  // mamad
                users.Add("5720b01ee4b0bf11f90cdee8");  // farib
                BacktoryResponse <ChallengeResponse> response = backtoryApi.RequestChallenge(users, 15, 2);
                if (response.Successful)
                {
                    writeLine("---challenge request successful. challenge id: " + response.Body.ChallengeId);
                }
                else
                {
                    writeLine("---challenge request failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnChallengeList.onClick.AddListener(() => {
                BacktoryResponse <ActiveChallengesListResponse> response = backtoryApi.RequestListOfActiveChallenges();
                if (response.Successful)
                {
                    writeLine("---active challenges list json: " + Backtory.ToJson((response.Body), true));
                }
                else
                {
                    writeLine("---active challenges list failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnAccept.onClick.AddListener(() => {
                BacktoryResponse <BacktoryVoid> response = backtoryApi.AcceptChallenge(lastChallengeInvitationId);
                if (response.Successful)
                {
                    writeLine("---challenge accepted successful.");
                }
                else
                {
                    writeLine("---accepting challenge failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnDecline.onClick.AddListener(() => {
                BacktoryResponse <BacktoryVoid> response = backtoryApi.DeclineChallenge(lastChallengeInvitationId);
                if (response.Successful)
                {
                    writeLine("---challenge declined successful.");
                }
                else
                {
                    writeLine("---declining challenge failed with code: " + response.Code + " and message " + response.Message);
                }
            });

            btnChat.onClick.AddListener(() => SceneManager.LoadScene("ChatScene"));
        }