Beispiel #1
0
        public static IDoxSession CreateFromPassword(DoxApi api, string username, string password,
                                                     IApiHelper apiHelper = null)
        {
            if (apiHelper == null)
            {
                apiHelper = new ApiHelper();
            }
            string userId = null;
            string devicetoken = null;

            if (!api.RetryAction(() => apiHelper.Login(api.ServiceUrl, username, password, out userId, out devicetoken)))
            {
                return null;
            }
            api.ClearError();
            var credentials = new DoxCredentials
                {
                    //UserId = userId,
                    UserName = username,
                    DeviceToken = devicetoken
                };
            return new DoxSession(api, credentials, apiHelper);
        }
Beispiel #2
0
 private DoxSession(DoxApi api, IDoxCredentials credentials, IApiHelper apiHelper)
 {
     _api = api;
     _apiHelper = apiHelper;
     _credentials = credentials;
 }
Beispiel #3
0
		protected override void InnerRun()
		{
            Succeeded = false;
            PendingUserActivation = true;
		    ShouldRetry = true;

            DoxApi api = new DoxApi(_serviceUrl);
		    IDoxSession session = null;

		    if (!string.IsNullOrEmpty(DeviceToken))
		    {
		        session = api.CreateSessionFromDeviceToken(_loginName, DeviceToken, ApiHelper);
                if (session == null && api.Error.IsConnectionError())
                {
                    PendingUserActivation = false;
                    ErrorMessage = Properties.Resources.ConnectionErrorDuringUpload;
                    return;
                }
		    }

		    if (session == null)
		    {
                // show login dialog
                var nativeWindow = new NativeWindow();
                nativeWindow.AssignHandle(IntPtr.Zero);
                _loginUi.NativeWindow = nativeWindow;
                _loginUi.RegisterTabVisible = false;
                _loginUi.LoginFieldEnabled = false;

		        var authenticator = new Authenticator(_loginUi);
                authenticator.Api = api;
		        authenticator.ApiHelper = ApiHelper;
		        bool cancelSend;
                session = authenticator.Authenticate(_loginName, null, out cancelSend);
                if (cancelSend)
                {
                    ShouldRetry = false;
                    PendingUserActivation = false;
                    Logger.LogInfo("User cancelled send");
                    ErrorMessage = "Unable to log in.";
                    return;
                }
		    }

		    if (session == null)
		    {
		        return; // something weird is happening, try again later
		    }

		    DeviceToken = session.Credentials.DeviceToken;
            OptionApi.SetEncrypted("SendLinkDeviceToken", DeviceToken, _entropy);
            OptionApi.SetEncrypted("SendLinkAccountId", session.CurrentUser.AccountId, _entropy);
            OptionApi.SetEncrypted("SendLinkUserId", session.CurrentUser.Id, _entropy);

		    if (session.CurrentUser.IsValidated)
		    {
		        PendingUserActivation = false;
                Succeeded = true;
                ErrorMessage = string.Empty;
		    }
		}
Beispiel #4
0
        public static IDoxSession CreateFromDeviceToken(DoxApi api, string username, string deviceToken,
                                                        IApiHelper apiHelper = null)
        {
            if (apiHelper == null)
            {
                apiHelper = new ApiHelper();
            }

            IDoxUser user = null;

            if (!api.RetryAction(
                () => user = apiHelper.SetDeviceToken(api.ServiceUrl, deviceToken)))
            {
                return null;
            }

            var credentials = new DoxCredentials
                {
                    //UserId = user.Id,
                    UserName = username,
                    DeviceToken = deviceToken
                };

            var session = new DoxSession(api, credentials, apiHelper);
            session.CurrentUser = user;
            return session;
        }
Beispiel #5
0
 public DoxFolder(IApiHelper apiHelper, DoxApi api)
 {
     _apiHelper = apiHelper;
     _api = api;
 }