public void Connect(String matchId)
        {
//			URI uri;
//			try {
//				uri = new URI(url);
//			} catch (URISyntaxException e) {
//				e.printStackTrace();
//				// TODO: 7/13/16 AD What to do?
//				return;
//			}
            Dictionary <String, String> extraHeaders = new Dictionary <String, String>();

            // TODO: uncomment
//			extraHeaders.Add("user-agent", System.getProperty("http.agent"));
            // TODO: 7/13/16 AD WebSocket should gather token in true manner
            //        extraHeaders.put("Authorization", "Bearer " + BacktoryAuth.getAccessToken());
            extraHeaders.Add("Authorization-Bearer", BacktoryUser.GetAccessToken());
            extraHeaders.Add("X-Backtory-Connectivity-Id", X_BACKTORY_CONNECTIVITY_ID);
            if (matchId != null)
            {
                extraHeaders.Add("X-Backtory-Realtime-Challenge-Id", matchId);
            }

            InnerStompWebSocketEventHandler innerEventHandler = new InnerStompWebSocketEventHandler(this);

            webSocketClient = new InnerBacktoryStompWebSocket(this, url, extraHeaders, innerEventHandler);

            webSocketClient.Connect();
        }
Beispiel #2
0
 public void loginChallengeUser2()
 {
     BacktoryUser.LoginInBackground(testUser2.username, testUser2.password, (IBacktoryResponse response) => {
         ResultText.text = response.Successful ? "Challenge user 2 login succeeded." : "failed; " + response.Message;
         setChallengeListeners();
     });
 }
Beispiel #3
0
 private IRestRequest AddDefaultHeaders(IRestRequest rawRequest)
 {
     rawRequest.AddHeader(Backtory.GameInstanceIdString, BacktoryConfig.BacktoryGameInstanceId);
     rawRequest.AddHeader(BacktoryUser.KeyAuthorization, BacktoryUser.AuthorizationHeader());
     rawRequest.AddHeader("Accept", Backtory.ApplicationJson);
     return(rawRequest);
 }
 public void onChangePassword()
 {
     BacktoryUser.GetCurrentUser().ChangePasswordInBackground(LastGenPassword, "4321", changePassResponse =>
     {
         ResultText.text = changePassResponse.Successful ? "succeeded" : "failed; " + changePassResponse.Message;
     });
 }
Beispiel #5
0
 public void LogIn()
 {
     loadingPanel.SetActive(true);
     BacktoryUser.LoginInBackground(usernameLogIn.text, passwordLogIn.text, loginResponse =>
     {
         // Login operation done (fail or success), handling it:
         if (loginResponse.Successful)
         {
             PlayerPrefs.SetString("Username", usernameLogIn.text);
             PlayerPrefs.SetString("PassWord", passwordLogIn.text);
             // Login successful
             LogInPanel.SetTrigger("Idle");
             DownloadData();
             loadingScreen.Instance.Show("MainMenu");
         }
         else if (loginResponse.Code == (int)BacktoryHttpStatusCode.Unauthorized)
         {
             // Username 'mohx' with password '123456' is wrong
             Debug.Log("Either username or password is wrong.");
             LogInLogText.text = GameManager.Language("نام کاربری یا رزم عبور اشتباه است", "Either username or password is wrong.", LogInLogText);
             loadingPanel.SetActive(false);
         }
         else
         {
             // Operation generally failed, maybe internet connection issue
             Debug.Log("Login failed for other reasons like network issues.");
             LogInLogText.text = GameManager.Language("خطلا در ورود", "Login failed", LogInLogText);
             loadingPanel.SetActive(false);
         }
     });
 }
Beispiel #6
0
 /*
  * Person-to-Person Chat
  */
 public void loginChatUser()
 {
     BacktoryUser.LoginInBackground(testUser1.username, testUser1.password, (IBacktoryResponse response) => {
         ResultText.text = response.Successful ? "Chat user login succeeded" : "failed; " + response.Message;
         BacktoryChat.Direct.SetOnReceivingMessageListener((message) => {
             MessageText.text = JsonConvert.SerializeObject(message, Formatting.Indented, JsonnetSetting());
         });
         BacktoryChat.Group.SetOnInvitingToJoinListener((message) => {
             MessageText.text = "Invited to join!\n" +
                                JsonConvert.SerializeObject(message, Formatting.Indented, JsonnetSetting());
             invitedGroupId = message.GroupId;
         });
         BacktoryChat.Group.SetOnMemberAddedListener((message) => {
             MessageText.text = "Member added to group!\n" +
                                JsonConvert.SerializeObject(message, Formatting.Indented, JsonnetSetting());
         });
         BacktoryChat.Group.SetOnMemberJoinedListener((message) => {
             MessageText.text = "Member joined the group!\n" +
                                JsonConvert.SerializeObject(message, Formatting.Indented, JsonnetSetting());
         });
         BacktoryChat.Group.SetOnMemberLeftListener((message) => {
             MessageText.text = "Member left the group!\n" +
                                JsonConvert.SerializeObject(message, Formatting.Indented, JsonnetSetting());
         });
         BacktoryChat.Group.SetOnMemberRemovedListener((message) => {
             MessageText.text = "Member is removed from group!\n" +
                                JsonConvert.SerializeObject(message, Formatting.Indented, JsonnetSetting());
         });
         BacktoryChat.Group.SetOnReceivingMessageListener((message) => {
             MessageText.text = "Message received from group chat!\n" +
                                JsonConvert.SerializeObject(message, Formatting.Indented, JsonnetSetting());
         });
     });
 }
 public void onGuestRegisterClick()
 {
     //BacktoryUser.LoginAsGuestInBackground(response =>
     //{
     //    ResultText.text = response.Body.AccessToken;
     //    Debug.Log("result set");
     //});
     BacktoryUser.LoginAsGuestInBackground(PrintCallBack <BacktoryUser.LoginResponse>());
 }
Beispiel #8
0
    private static RestRequest RegisterRequest(BacktoryUser registrationParams)
    {
//		var request = Backtory.RestRequest("users", Method.POST);
        var request = Backtory.RestRequest("auth/users", Method.POST);

        request.AddHeader(Backtory.AuthInstanceIdString, BacktoryConfig.BacktoryAuthInstanceId);
        request.AddJsonBody(registrationParams);
        return(request);
    }
Beispiel #9
0
        public void onUpdateUser()
        {
            BacktoryUser user = BacktoryUser.CurrentUser;

            user.FirstName   = "UpdatedFirstName";
            user.LastName    = "UpdatedLastName";
            user.Username    = usernameInput.text;
            user.Email       = emailInput.text;
            user.PhoneNumber = "22222222";
            user.UpdateUserInBackground(PrintCallBack <BacktoryUser> ());
        }
Beispiel #10
0
 public void onForgetPassword()
 {
     if (usernameInput.text == "")
     {
         ResultText.text = "Enter username!";
         return;
     }
     BacktoryUser.ForgotPasswordInBackground(usernameInput.text, response => {
         ResultText.text = response.Successful ? "Forgot password succeeded." : "failed; " + response.Message;
     });
 }
Beispiel #11
0
        private static IRestRequest NewAccessTokenRequest()
        {
            var request = RestRequest("auth/login", Method.POST);

            request.AlwaysMultipartFormData = true;
            request.AddHeader(AuthInstanceIdString, BacktoryConfig.BacktoryAuthInstanceId);
            request.AddHeader(AuthClientKeyString, BacktoryConfig.BacktoryAuthClientKey);
            request.AddHeader("X-Backtory-Authentication-Refresh", "1");
            request.AddParameter("refresh_token", BacktoryUser.GetRefreshToken(), ParameterType.GetOrPost);
            return(request);
        }
        private IRestRequest SendEventRequest(BacktoryGameEvent backtoryGameEvent)
        {
            var request = Backtory.RestRequest("game/events", Method.POST);

            request.AddHeader(Backtory.GameInstanceIdString, BacktoryConfig.BacktoryGameInstanceId);
            request.AddHeader(BacktoryUser.KeyAuthorization, BacktoryUser.AuthorizationHeader());
            request.AddHeader("Accept", Backtory.ApplicationJson);
            request.AddJsonBody(backtoryGameEvent);

            return(request);
        }
    public void onUpdateUser()
    {
        var user = BacktoryUser.GetCurrentUser();

        user.FirstName   = "edit";
        user.LastName    = "edit manesh";
        user.Username    = GenerateUsername(true);
        user.Email       = GenerateEmail(true);
        user.PhoneNumber = "22222222";
        user.UpdateUserInBackground(PrintCallBack <BacktoryUser>());
    }
Beispiel #14
0
    private RestRequest UpdateUserRequest(BacktoryUser toBeUpdateUser)
    {
//		var request = Backtory.RestRequest("users/{user_id}", Method.PUT);
        var request = Backtory.RestRequest("auth/users/{user_id}", Method.PUT);

        request.AddHeader(Backtory.AuthInstanceIdString, BacktoryConfig.BacktoryAuthInstanceId);
        request.AddHeader(KeyAuthorization, AuthorizationHeader());
        request.AddParameter("user_id", toBeUpdateUser.UserId, ParameterType.UrlSegment);
        request.AddJsonBody(toBeUpdateUser);
        return(request);
    }
 public void onCompleteRegistration()
 {
     LastGenUsername = GenerateUsername(true);
     LastGenPassword = "******";
     BacktoryUser.GetCurrentUser().CompleteRegistrationInBackgrond(new BacktoryUser.GuestCompletionParam()
     {
         FirstName   = "not guest",
         LastName    = "not guest last name",
         Email       = GenerateEmail(true),
         NewPassword = LastGenPassword,
         NewUsername = LastGenUsername
     }, PrintCallBack <BacktoryUser>());
 }
Beispiel #16
0
    void clicked()
    {
        playSound("Button");

        if (PlayerPrefs.GetString("Username") != "")
        {
            LoadingPanel.SetActive(true);
            BacktoryUser.LoginInBackground(PlayerPrefs.GetString("Username"), PlayerPrefs.GetString("PassWord"), loginResponse =>
            {
                // Login operation done (fail or success), handling it:
                if (loginResponse.Successful)
                {
                    // Login successful
                    ShowLeaderBoard();
                }
                else if (loginResponse.Code == (int)BacktoryHttpStatusCode.Unauthorized)
                {
                    // Username 'mohx' with password '123456' is wrong
                    Debug.Log("Either username or password is wrong.");
                    LoadingPanel.SetActive(false);
                }
                else
                {
                    // Operation generally failed, maybe internet connection issue
                    Debug.Log("Login failed for other reasons like network issues.");
                    LoadingPanel.SetActive(false);
                }
            });
        }
        else
        {
            signUpPanel.SetTrigger("Enter");
            SignUpName.text = GameManager.Language("ثبت نام", "Sign Up", SignUpName);

            if (PlayerPrefs.GetString("Language") == "Persian")
            {
                UserNameText.text = "نام کاربری";
                PassWordText.text = "رمز ورود";
                EmailText.text    = "ایمیل";
            }
            else
            {
                UserNameText.text = "Username";
                PassWordText.text = "Password";
                EmailText.text    = "E-mail";
            }
        }
    }
Beispiel #17
0
        //private static BacktoryResponse<T> RawResponseToBacktoryResponse<T>(IRestResponse<T> response) where T : class, new()
        //{
        //    BacktoryResponse<T> result;
        //    if (response.ErrorException != null || !response.IsSuccessful())
        //    {
        //        if ((int)response.StatusCode == (int)BacktoryHttpStatusCode.Unauthorized)
        //            response = Handle401StatusCode(response);
        //        result = BacktoryResponse<T>.Error((int)response.StatusCode, response.ErrorMessage);
        //    }
        //    else
        //        result = BacktoryResponse<T>.Success((int)response.StatusCode, response.Data);
        //    Debug.Log("Receiving response of: " + typeof(T).Name + " with code: " + result.Code + "\ncause: " + response.ErrorMessage);
        //    Debug.Log(response.ResponseUri);
        //    return result;
        //}

        /// <summary>
        /// A 401 error mostly indicates access-token is expired. (Only exception is login which 401 shows incorrect username/password)
        /// We must refresh the access-token using refresh-token and retry the original request with new access-token
        /// If on refreshing access-token we get another 401, it indicates refresh-token is expired, too
        /// On that case, if current user is guest we must login with stored username-pass and if not we must force the user to login
        /// </summary>
        /// <typeparam name="T">type of response body</typeparam>
        /// <param name="response">raw response containing error 401</param>
        /// <returns></returns>
        private static IRestResponse Handle401StatusCode(IRestResponse response)
        {
            // in response of login request (no access token yet!) return the original response
            if (response.Request.Resource.Contains("login"))
            {
                return(response);
            }

            // In some request like cloudcode's run, 401 might indicate to absence of access-token not the expiration.
            // We detect this by checking access-token nullity and simply just return the response.
            if (BacktoryUser.GetAccessToken() == null)
            {
                return(response);
            }
            // getting new access-token
            var tokenResponse = RestClient.Execute <BacktoryUser.LoginResponse>(BacktoryUser.NewAccessTokenRequest());

            if (tokenResponse.ErrorException != null || !response.IsSuccessful())
            {
                // failed to get new token
                if ((int)tokenResponse.StatusCode == (int)BacktoryHttpStatusCode.Unauthorized)                 // 401
                {
                    // refresh token itself is expired
                    if (BacktoryUser.GetCurrentUser().Guest)
                    {
                        // if guest, first login with stored username/pass and the retry the request
                        // new token is stored and after this we can simply call original request again which uses new token
                        BacktoryUser.Login(BacktoryUser.GetCurrentUser().Username, BacktoryUser.GetGuestPassword());
                    }

                    // normal user must login again
                    // TODO: clean way for forcing user to login. How to keep his/her progress? How to retry original request?
                    else
                    {
                        BacktoryUser.ClearBacktoryStoredData();

                        // On this case return value is not important
                        // TODO: may be changing the response error message
                        BacktoryManager.Instance.GlobalEventListener.OnEvent(BacktorySDKEvent.LogoutEvent());
                    }
                }

                // successfully gotten new token
            }
            return(RestClient.Execute(response.Request));
        }
Beispiel #18
0
    // Forgetting password function
    public void onForgotpassClick()
    {
        string username = usernameInputlog.text;

        // Requesting forget password to backtory
        BacktoryUser.ForgotPasswordInBackground(username, response => {
            if (response.Successful)
            {
                myMessageBoxlogin.SetMessage("کلمه عبور جدید به ایمیلت ارسال شد.");
                // Showforgotpass();
                // Debug.Log("Go to your mail inbox and verify your request.");
            }
            else
            {
                Debug.Log("failed; " + response.Message);
            }
        });
    }
Beispiel #19
0
 public void OnLoginButtonClicked()
 {
     BacktoryUser.LoginInBackground(loginUsername.text, loginPassword.text, loginResponse => {
         if (loginResponse.Successful)
         {
             Debug.Log("Welcome, " + loginUsername.text + "!");
             SceneManager.LoadScene("Main");
         }
         else if (loginResponse.Code == (int)BacktoryHttpStatusCode.Unauthorized)
         {
             Debug.Log("Either username or password is wrong");
         }
         else
         {
             Debug.Log("Strange! Login Failed! code: " + loginResponse.Code);
         }
     });
 }
Beispiel #20
0
    public void LoginProcess(string username, string password, bool newUser)
    {
        BacktoryUser.LoginInBackground(username, password, loginResponse =>
        {
            // Login operation done (fail or success), handling it:
            if (loginResponse.Successful)
            {
                Debug.Log("Login Successful.");
                SceneManager.LoadScene("MainMenu");

                // We have UserId and if it is the first time that he logs in, we should send age and gender to Backtory.
                if (PlayerPrefs.GetInt(alreadyRegistered) != 1)
                {
                    if (newUser)
                    {
                        saveAgegen();
                    }
                    // If the user is a member of service and because of exchanging his phone or clearing his playerprefs' data,
                    // we can read his age/gen data locally.
                    else
                    {
                        //TODO: LoadAgeGen()
                    }
                }
            }
            else if (loginResponse.Code == (int)BacktoryHttpStatusCode.Unauthorized)
            {
                myMessageBoxlogin.SetMessage("نام کاربری یا کلمه عبور وارد شده صحیح نمی باشد.");
                // Showwrongmailusername();
                // Username 'mohx' with password '123456' is wrong
                Debug.Log("Either username or password is wrong.");
            }
            else
            {
                myMessageBoxlogin.SetMessage("مشکلی در شبکه بوجود آمده، لطفا دوباره تلاش کنید.");
                // Shownetdownlog();
                // Operation generally failed, maybe internet connection issue
                Debug.Log("Login failed for other reasons like network issues.");
            }
        });
    }
Beispiel #21
0
        // all methods could be static but we get a threading exception from PlayerPrefs

        /* GetString can only be called from the main thread.
         * Constructors and field initializers will be executed from the loading thread when loading a scene.
         * Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function. */

        private IRestRequest CloudCodeRequest(string functionName, object requestBody, Type responseType)
        {
            var request = Backtory.RestRequest("cloud-code/{cloud_instance_id}/{function_name}", Method.POST);

            request.Timeout = 20 * 1000; // 20 seconds
            request.AddParameter("cloud_instance_id", BacktoryConfig.BacktoryCloudcodeInstanceId, ParameterType.UrlSegment);
            request.AddParameter("function_name", functionName, ParameterType.UrlSegment);
            request.AddHeader(BacktoryUser.KeyAuthorization, BacktoryUser.AuthorizationHeader());

            if (requestBody.GetType() != typeof(string))
            {
                request.AddJsonBody(requestBody);
                request.OnBeforeDeserialization = irestresponse => irestresponse.ContentType = Backtory.ApplicationJson;
            }
            else
            {
                request.AddParameter(Backtory.TextPlain, requestBody, ParameterType.RequestBody);
                request.OnBeforeDeserialization = irestresponse => irestresponse.ContentType = Backtory.TextPlain;
            }
            return(request);
        }
Beispiel #22
0
 /*
  * Auth
  */
 public void onGuestLoginClick()
 {
     BacktoryUser.LoginAsGuestInBackground(response =>
                                           ResultText.text = response.Successful ? "Login as guest succeeded." : "failed; " + response.Message
                                           );
 }
Beispiel #23
0
 public void loginMMUser2()
 {
     BacktoryUser.LoginInBackground(testUser2.username, testUser2.password, (IBacktoryResponse response) => {
         ResultText.text = response.Successful ? "Matchmaking user 2 login succeeded." : "failed; " + response.Message;
     });
 }
Beispiel #24
0
 private static void DispatchSaveCurrentUser(BacktoryUser backtoryUser)
 {
     Backtory.Dispatch(() => { SaveAsCurrentUserInMemoryAndStorage(backtoryUser); });
 }
Beispiel #25
0
 private static void SaveAsCurrentUserInMemoryAndStorage(BacktoryUser user)
 {
     currentUser = user;
     Backtory.Storage.Put(KeyUsername, user.Username);
     Backtory.Storage.Put(KeyCurrentUser, Backtory.ToJson(user));
 }
Beispiel #26
0
 internal static void ClearBacktoryStoredData()
 {
     currentUser = null;
     Backtory.Storage.Clear();
 }
 public void onLogout()
 {
     BacktoryUser.LogoutInBackground();
     ResultText.text = "successfully logged out";
 }
Beispiel #28
0
 public void onLoginClick()
 {
     BacktoryUser.LoginInBackground(usernameInput.text, passwordInput.text, response =>
                                    ResultText.text = response.Successful ? "Login succeeded." : "failed; " + response.Message
                                    );
 }
 public void onLoginClick()
 {
     BacktoryUser.LoginInBackground(LastGenUsername, LastGenPassword, PrintCallBack <BacktoryUser.LoginResponse>());
 }
 public void onCurrentUserClick()
 {
     ResultText.text = Backtory.ToJson(BacktoryUser.GetCurrentUser(), true);
 }