Ejemplo n.º 1
0
 public void Login(string username, string password, Action <ILoginResult> callback)
 {
     try
     {
         database.ClearServerTimeOffsetMillis();
         IGuestControllerClient guestControllerClient = guestControllerClientFactory.Create("NoSwid");
         guestControllerClient.LogIn(new LogInRequest
         {
             loginValue = username,
             password   = password
         }, delegate(GuestControllerResult <LogInResponse> r)
         {
             if (!r.Success)
             {
                 logger.Error("Login failed");
                 callback(new LoginFailedAuthenticationResult());
             }
             else
             {
                 HandleLoginSuccess(r, callback);
             }
         });
     }
     catch (Exception arg)
     {
         logger.Critical("Unhandled exception: " + arg);
         callback(new LoginResult(success: false, null));
     }
 }
 public void Get(Action <IInternalGetRegistrationConfigurationResult> callback)
 {
     try
     {
         IGuestControllerClient guestControllerClient = guestControllerClientFactory.Create("NoSWID");
         guestControllerClient.GetSiteConfiguration(delegate(GuestControllerResult <SiteConfigurationResponse> r)
         {
             HandleResult(r, callback);
         });
     }
     catch (Exception arg)
     {
         logger.Critical("Unhandled exception: " + arg);
         callback(new GetRegistrationConfigurationResult(success: false, null));
     }
 }
Ejemplo n.º 3
0
        public IInternalSession Create(string swid)
        {
            byte[] localStorageKey = keychain.LocalStorageKey;
            IDocumentCollection <AlertDocument>            documentCollection  = GetDocumentCollection <AlertDocument>(swid, "Alerts", databaseDirectoryCreator, localStorageKey, documentCollectionFactory);
            IDocumentCollection <FriendDocument>           documentCollection2 = GetDocumentCollection <FriendDocument>(swid, "Friends", databaseDirectoryCreator, localStorageKey, documentCollectionFactory);
            IDocumentCollection <FriendInvitationDocument> documentCollection3 = GetDocumentCollection <FriendInvitationDocument>(swid, "FriendInvitations", databaseDirectoryCreator, localStorageKey, documentCollectionFactory);
            IDocumentCollection <UserDocument>             documentCollection4 = GetDocumentCollection <UserDocument>(swid, "Users", databaseDirectoryCreator, localStorageKey, documentCollectionFactory);

            databaseCorruptionHandler.Add(documentCollection4);
            string       dirPath      = BuildDocCollectionPath(databaseDirectoryCreator, swid);
            UserDatabase userDatabase = new UserDatabase(documentCollection, documentCollection2, documentCollection3, documentCollection4, localStorageKey, dirPath, epochTime, documentCollectionFactory, databaseCorruptionHandler, coroutineManager);

            database.ClearServerTimeOffsetMillis();
            epochTime.OffsetMilliseconds = database.GetServerTimeOffsetMillis() ?? 0;
            logger.Debug("Initial time offset: " + epochTime.Offset);
            SessionDocument sessionDocument = database.GetSessionDocument(swid);

            keychain.PushNotificationKey = sessionDocument.CurrentSymmetricEncryptionKey;
            IWebCallEncryptor      webCallEncryptor      = webCallEncryptorFactory.Create(sessionDocument.CurrentSymmetricEncryptionKey, sessionDocument.SessionId);
            IGuestControllerClient guestControllerClient = guestControllerClientFactory.Create(swid);
            ISessionRefresher      sessionRefresher      = sessionRefresherFactory.Create(mixSessionStarter, guestControllerClient);
            IMixWebCallFactory     mixWebCallFactory     = mixWebCallFactoryFactory.Create(webCallEncryptor, swid, sessionDocument.GuestControllerAccessToken, sessionRefresher);

            guestControllerClient.OnAccessTokenChanged += delegate(object sender, AbstractGuestControllerAccessTokenChangedEventArgs e)
            {
                mixWebCallFactory.GuestControllerAccessToken = e.GuestControllerAccessToken;
            };
            AssetLoader             assetLoader           = new AssetLoader(logger, wwwCallFactory);
            IList <IInternalFriend> friends               = CreateFriends(userDatabase);
            AgeBandType             ageBandType           = AgeBandTypeConverter.Convert(sessionDocument.AgeBand);
            DateTime               lastRefreshTime        = epochTime.FromSeconds(sessionDocument.LastProfileRefreshTime);
            RegistrationProfile    registrationProfile    = new RegistrationProfile(logger, sessionDocument.DisplayNameText, sessionDocument.ProposedDisplayName, sessionDocument.ProposedDisplayNameStatus, sessionDocument.FirstName, sessionDocument.AccountStatus, lastRefreshTime, sessionDocument.CountryCode);
            GetStateResponseParser getStateResponseParser = new GetStateResponseParser(logger);
            NotificationPoller     notificationPoller     = new NotificationPoller(logger, mixWebCallFactory, notificationQueue, pollCountdownStopwatch, getStateResponseParser, epochTime, random, database, swid);
            DisplayName            displayName            = new DisplayName(sessionDocument.DisplayNameText);
            LocalUser              localUser              = new LocalUser(logger, displayName, swid, friends, ageBandType, database, userDatabase, registrationProfile, mixWebCallFactory, guestControllerClient, notificationQueue, encryptor, epochTime);
            Session session = new Session(logger, localUser, sessionDocument.GuestControllerAccessToken, sessionDocument.PushNotificationToken != null, notificationPoller, coroutineManager, database, userDatabase, guestControllerClient, mixWebCallFactory, epochTime, databaseCorruptionHandler, sessionStatus, keychain, getStateResponseParser, clientVersion, notificationQueue);

            try
            {
                NotificationHandler.Handle(notificationDispatcher, userDatabase, localUser, epochTime);
                notificationQueue.LatestSequenceNumber = sessionDocument.LatestNotificationSequenceNumber;
                IEnumerable <IncomingFriendInvitation> incomingFriendInvitations = GetIncomingFriendInvitations(userDatabase, localUser);
                foreach (IncomingFriendInvitation item in incomingFriendInvitations)
                {
                    localUser.AddIncomingFriendInvitation(item);
                }
                IEnumerable <OutgoingFriendInvitation> outgoingFriendInvitations = GetOutgoingFriendInvitations(userDatabase, localUser);
                foreach (OutgoingFriendInvitation item2 in outgoingFriendInvitations)
                {
                    localUser.AddOutgoingFriendInvitation(item2);
                }
            }
            catch (Exception)
            {
                session.Dispose();
                throw;
            }
            return(session);
        }
Ejemplo n.º 4
0
 public void Register(bool isTestProfile, string username, string password, string firstName, string lastName, string email, string parentEmail, string languagePreference, string assertedCountry, DateTime?dateOfBirth, IEnumerable <KeyValuePair <IMarketingItem, bool> > marketingAgreements, IEnumerable <ILegalDocument> acceptedLegalDocuments, Action <IRegisterResult> callback)
 {
     try
     {
         database.ClearServerTimeOffsetMillis();
         List <Disney.Mix.SDK.Internal.GuestControllerDomain.MarketingItem> marketing = (from p in marketingAgreements
                                                                                         select new Disney.Mix.SDK.Internal.GuestControllerDomain.MarketingItem
         {
             code = p.Key.Id,
             subscribed = p.Value
         }).ToList();
         object obj;
         if (!dateOfBirth.HasValue)
         {
             obj = new BaseRegisterProfile();
         }
         else
         {
             RegisterProfile registerProfile = new RegisterProfile();
             registerProfile.dateOfBirth = dateOfBirth.Value.ToString("yyyy-MM-dd");
             obj = registerProfile;
         }
         BaseRegisterProfile baseRegisterProfile = (BaseRegisterProfile)obj;
         baseRegisterProfile.testProfileFlag    = (isTestProfile ? "Y" : "N");
         baseRegisterProfile.username           = username;
         baseRegisterProfile.firstName          = firstName;
         baseRegisterProfile.lastName           = lastName;
         baseRegisterProfile.email              = email;
         baseRegisterProfile.parentEmail        = parentEmail;
         baseRegisterProfile.languagePreference = languagePreference;
         baseRegisterProfile.region             = assertedCountry;
         BaseRegisterProfile profile         = baseRegisterProfile;
         List <string>       legalAssertions = (from doc in acceptedLegalDocuments
                                                select doc.Id).ToList();
         RegisterRequest registerRequest = new RegisterRequest();
         registerRequest.password        = password;
         registerRequest.profile         = profile;
         registerRequest.marketing       = marketing;
         registerRequest.legalAssertions = legalAssertions;
         RegisterRequest        request = registerRequest;
         IGuestControllerClient guestControllerClient = guestControllerClientFactory.Create("NoSwid");
         guestControllerClient.Register(request, delegate(GuestControllerResult <LogInResponse> r)
         {
             HandleRegisterSuccess(r, marketing, callback);
         });
     }
     catch (CorruptionException arg)
     {
         logger.Fatal("Corruption detected during registration: " + arg);
         callback(new RegisterCorruptionDetectedResult());
     }
     catch (Exception arg2)
     {
         logger.Critical("Unhandled exception: " + arg2);
         callback(new RegisterResult(success: false, null, null));
     }
 }
 public void RestoreLastSession(Action <IRestoreLastSessionResult> callback)
 {
     try
     {
         database.ClearServerTimeOffsetMillis();
         SessionDocument lastSessionDoc = database.GetLastLoggedInSessionDocument();
         if (lastSessionDoc == null)
         {
             callback(new RestoreLastSessionNotFoundResult());
         }
         else
         {
             IGuestControllerClient guestControllerClient = guestControllerClientFactory.Create(lastSessionDoc.Swid);
             guestControllerClient.Refresh(delegate(GuestControllerResult <RefreshResponse> r)
             {
                 if (r.Response == null)
                 {
                     logger.Error("Error refreshing auth token");
                     callback(new RestoreLastSessionResult(success: false, null));
                 }
                 else
                 {
                     HandleRefreshSuccess(callback, r, lastSessionDoc);
                 }
             });
         }
     }
     catch (CorruptionException arg)
     {
         logger.Fatal("Corruption detected during session restoration: " + arg);
         callback(new RestoreLastSessionCorruptionDetectedResult());
     }
     catch (Exception arg2)
     {
         logger.Critical("Unhandled exception: " + arg2);
         callback(new RestoreLastSessionResult(success: false, null));
     }
 }