public static IEnumerable <IValidateNewAccountError> GetValidationErrors(GuestApiErrorCollection collection)
        {
            List <IValidateNewAccountError> list = new List <IValidateNewAccountError>();

            foreach (GuestApiError apiError in collection.errors)
            {
                if (apiError == null || apiError.code == null)
                {
                    continue;
                }
                KeyValuePair <string, Type> keyValuePair = validationErrors.FirstOrDefault((KeyValuePair <string, Type> p) => p.Key == apiError.code);
                if (keyValuePair.Key == null)
                {
                    continue;
                }
                if (keyValuePair.Key == "DISALLOWED_VALUE")
                {
                    string key = registerProfileInputNameErrors.FirstOrDefault((KeyValuePair <string, Type> p) => p.Key == apiError.inputName).Key;
                    if (key != null && key != "profile.username")
                    {
                        continue;
                    }
                }
                IValidateNewAccountError item = (IValidateNewAccountError)Activator.CreateInstance(keyValuePair.Value);
                list.Add(item);
            }
            return((list.Count == 0) ? null : list);
        }
        private static TResult GetWorstResult <TResult>(GuestApiErrorCollection errorCollection, List <KeyValuePair <string, Type> > errors)
        {
            if (errorCollection == null || errorCollection.errors == null)
            {
                return(default(TResult));
            }
            KeyValuePair <string, Type> keyValuePair = errors.LastOrDefault((KeyValuePair <string, Type> p) => errorCollection.errors.Any((GuestApiError e) => e.code == p.Key));

            return((keyValuePair.Key == null) ? default(TResult) : ((TResult)Activator.CreateInstance(keyValuePair.Value)));
        }
        private void FindMatches(IAgeBand ageBand, GuestApiErrorCollection errors, Action <BuildLegalMarketingErrorsResult> successCallback, Action failureCallback)
        {
            IEnumerable <GuestApiError> source  = errors.errors.Where((GuestApiError error) => error.code == "PPU_MARKETING");
            IEnumerable <GuestApiError> source2 = errors.errors.Where((GuestApiError error) => error.code == "PPU_LEGAL");

            IMarketingItem[] array  = source.Select((GuestApiError error) => ageBand.Marketing.FirstOrDefault((IMarketingItem item) => item.Id == error.inputName)).ToArray();
            ILegalDocument[] array2 = source2.Select((GuestApiError error) => ageBand.LegalDocuments.FirstOrDefault((ILegalDocument item) => item.Id == error.inputName)).ToArray();
            if (array.Any((IMarketingItem item) => item == null) || array2.Any((ILegalDocument item) => item == null))
            {
                failureCallback();
            }
            else
            {
                successCallback(new BuildLegalMarketingErrorsResult(array2, array));
            }
        }
 public void BuildErrors(ISession session, GuestApiErrorCollection errors, Action <BuildLegalMarketingErrorsResult> successCallback, Action failureCallback)
 {
     if (session.LocalUser.RegistrationProfile.CountryCode != null)
     {
         registrationConfigurationGetter.Get(session.LocalUser.RegistrationProfile.CountryCode, delegate(IInternalGetRegistrationConfigurationResult r)
         {
             HandleGetRegistrationConfiguration(r, session, errors, successCallback, failureCallback);
         });
     }
     else
     {
         registrationConfigurationGetter.Get(delegate(IInternalGetRegistrationConfigurationResult r)
         {
             HandleGetRegistrationConfiguration(r, session, errors, successCallback, failureCallback);
         });
     }
 }
        public static string GetAccountStatusCode(GuestApiErrorCollection error, string currentStatusCode)
        {
            IRefreshGuestControllerTokenError guestControllerTokenRefreshError = GetGuestControllerTokenRefreshError(error);

            if (guestControllerTokenRefreshError is IRefreshParentalConsentError)
            {
                if (currentStatusCode == "ACTIVE")
                {
                    return("AWAIT_PARENT_CONSENT");
                }
            }
            else if (currentStatusCode == "AWAIT_PARENT_CONSENT")
            {
                return("ACTIVE");
            }
            return(currentStatusCode);
        }
    public static IList <IInvalidProfileItemError> GetRegisterProfileItemErrors(GuestApiErrorCollection collection)
    {
        if (collection == null)
        {
            return(null);
        }
        List <IInvalidProfileItemError> list = new List <IInvalidProfileItemError>();

        foreach (GuestApiError apiError in collection.errors)
        {
            if (apiError != null)
            {
                if (apiError.inputName != null)
                {
                    KeyValuePair <string, Type> keyValuePair = registerProfileInputNameErrors.FirstOrDefault((KeyValuePair <string, Type> p) => p.Key == apiError.inputName);
                    if (keyValuePair.Key != null)
                    {
                        object[] args = new object[1]
                        {
                            apiError.developerMessage
                        };
                        list.Add((IInvalidProfileItemError)Activator.CreateInstance(keyValuePair.Value, args));
                    }
                }
                if (apiError.code != null)
                {
                    KeyValuePair <string, Type> keyValuePair2 = registerProfileCodeErrors.FirstOrDefault((KeyValuePair <string, Type> p) => p.Key == apiError.code);
                    if (keyValuePair2.Key != null)
                    {
                        object[] args = new object[1]
                        {
                            apiError.developerMessage
                        };
                        list.Add((IInvalidProfileItemError)Activator.CreateInstance(keyValuePair2.Value, args));
                    }
                }
            }
        }
        if (list.Count == 0)
        {
            list = null;
        }
        return(list);
    }
    private static bool HasErrorCode(GuestControllerWebCallResponse response, params string[] errorCodes)
    {
        GuestApiErrorCollection error = response.error;

        if (error == null)
        {
            return(false);
        }
        List <GuestApiError> errors = error.errors;

        if (errors == null || errors.Count == 0)
        {
            return(false);
        }
        if (errors.Any((GuestApiError e) => e.code != null && !errorCodes.Any((string c) => c == e.code)))
        {
            return(false);
        }
        return(true);
    }
 public static IRefreshGuestControllerTokenError GetGuestControllerTokenRefreshError(GuestApiErrorCollection error)
 {
     return(GetWorstResult <IRefreshGuestControllerTokenError>(error, refreshErrors));
 }
 public static ISendMultipleAccountsResolutionResult GetResolveMaseResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <ISendMultipleAccountsResolutionResult>(error, resolveMaseErrors));
 }
 public static ISendNonRegisteredTransactorUpgradeResult GetUpgradeNrtResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <ISendNonRegisteredTransactorUpgradeResult>(error, upgradeNrtErrors));
 }
 public static ILoginResult GetLoginResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <ILoginResult>(error, loginErrors));
 }
 public static IRegisterResult GetRegisterResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <IRegisterResult>(error, registerErrors));
 }
Beispiel #13
0
 private void HandleOfflineSessionResumed(IResumeSessionResult result, ISession session, ILoginResult loginResult, GuestApiErrorCollection gcErrorCollection, Action <ILoginResult> callback)
 {
     if (!result.Success)
     {
         callback(new LoginResult(success: false, null));
     }
     else if (loginResult is ILoginMissingInfoResult)
     {
         callback(new LoginMissingInfoResult(success: true, session));
     }
     else if (loginResult is ILoginSecurityUpdateResult)
     {
         callback(new LoginSecurityUpdateResult(success: true, session));
     }
     else if (loginResult is ILoginRequiresLegalMarketingUpdateResult)
     {
         legalMarketingErrorsBuilder.BuildErrors(session, gcErrorCollection, delegate(BuildLegalMarketingErrorsResult response)
         {
             callback(new LoginRequiresLegalMarketingUpdateResult(success: true, session, response.LegalDocuments, response.Marketing));
         }, delegate
         {
             callback(new LoginResult(success: false, null));
         });
     }
     else
     {
         callback(new LoginResult(success: true, session));
     }
 }
Beispiel #14
0
 private void HandleRefreshProfileSuccess(Action <ILoginResult> callback, ILoginResult loginResult, GuestApiErrorCollection gcErrorCollection, Profile profile, Disney.Mix.SDK.Internal.GuestControllerDomain.DisplayName displayName, IEnumerable <Disney.Mix.SDK.Internal.GuestControllerDomain.MarketingItem> marketing, string swid, string accessToken)
 {
     mixSessionStarter.Start(swid, accessToken, delegate
     {
         HandleMixSessionStartSuccess(callback, loginResult, swid, gcErrorCollection, profile, displayName, marketing);
     }, delegate
     {
         callback(new LoginResult(success: false, null));
     });
 }
 public static IValidateNewAccountResult GetValidateResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <IValidateNewAccountResult>(error, validateErrors));
 }
 public static IRestoreLastSessionResult GetRestoreLastSessionResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <IRestoreLastSessionResult>(error, restoreErrors));
 }
 public static IInternalGetRegistrationConfigurationResult GetRegConfigResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <IInternalGetRegistrationConfigurationResult>(error, regConfigErrors));
 }
        private QueueItem CreateRefreshQueueItem(Action <GuestControllerResult <RefreshResponse> > callback)
        {
            Action <GuestControllerResult <RefreshResponse> > failureCallback = delegate(GuestControllerResult <RefreshResponse> r)
            {
                callback(new GuestControllerResult <RefreshResponse>(success: false, r.Response, r.ResponseHeaders));
            };
            QueueItem queueItem = CreateQueueItem("/client/{client-id}/guest/refresh-auth/{refresh-token}", HttpMethod.POST, new EmptyRequest(), GuestControllerAuthenticationType.None, delegate(GuestControllerResult <RefreshResponse> r)
            {
                if (!r.Success)
                {
                    AuthenticationUnavailableEventArgs e = new AuthenticationUnavailableEventArgs();
                    this.OnAuthenticationLost(this, e);
                    failureCallback(r);
                }
                else
                {
                    GuestApiErrorCollection guestApiErrorCollection = r.Response.error;
                    RefreshData data = r.Response.data;
                    IRefreshGuestControllerTokenError refreshGuestControllerTokenError = GuestControllerErrorParser.GetGuestControllerTokenRefreshError(guestApiErrorCollection);
                    if (refreshGuestControllerTokenError is IRefreshRequiresLegalMarketingUpdateError)
                    {
                        refreshGuestControllerTokenError = null;
                        guestApiErrorCollection          = null;
                        this.OnLegalMarketingUpdateRequired(this, new LegalMarketingUpdateRequiredEventArgs());
                    }
                    if (refreshGuestControllerTokenError is IRefreshTokenGatedLocationError)
                    {
                        logger.Critical("Location gated during Guest Controller token refresh");
                        AuthenticationLostGatedCountryEventArgs e2 = new AuthenticationLostGatedCountryEventArgs();
                        this.OnAuthenticationLost(this, e2);
                        failureCallback(r);
                    }
                    else if (refreshGuestControllerTokenError is IRefreshProfileDisabledError || refreshGuestControllerTokenError is IRefreshTemporaryBanError)
                    {
                        logger.Critical("Banned during Guest Controller token refresh");
                        AccountBannedEventArgs e3 = new AccountBannedEventArgs(logger, null);
                        this.OnAuthenticationLost(this, e3);
                        failureCallback(r);
                    }
                    else if (refreshGuestControllerTokenError != null)
                    {
                        logger.Critical("Guest Controller token refresh error: " + refreshGuestControllerTokenError);
                        AuthenticationRevokedEventArgs e4 = new AuthenticationRevokedEventArgs();
                        this.OnAuthenticationLost(this, e4);
                        failureCallback(r);
                    }
                    else if (guestApiErrorCollection != null)
                    {
                        logger.Critical("Unhandled error during Guest Controller token refresh: " + JsonParser.ToJson(guestApiErrorCollection));
                        AuthenticationUnavailableEventArgs e = new AuthenticationUnavailableEventArgs();
                        this.OnAuthenticationLost(this, e);
                        failureCallback(r);
                    }
                    else if (data == null || data.token == null || data.token.access_token == null || data.token.refresh_token == null)
                    {
                        logger.Critical("Refreshing Guest Controller token returned invalid refresh data: " + JsonParser.ToJson(data));
                        AuthenticationUnavailableEventArgs e = new AuthenticationUnavailableEventArgs();
                        this.OnAuthenticationLost(this, e);
                        failureCallback(r);
                    }
                    else
                    {
                        Token token = data.token;
                        database.UpdateGuestControllerToken(token, data.etag);
                        this.OnAccessTokenChanged(this, new GuestControllerAccessTokenChangedEventArgs(token.access_token));
                        callback(r);
                    }
                }
            });

            queueItem.RefreshedAccessToken = true;
            return(queueItem);
        }
 public static IVerifyAdultResult GetVerifyAdultResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <IVerifyAdultResult>(error, verifyAdultErrors));
 }
Beispiel #20
0
 private void HandleMixSessionStartSuccess(Action <ILoginResult> callback, ILoginResult loginResult, string swid, GuestApiErrorCollection gcErrorCollection, Profile profile, Disney.Mix.SDK.Internal.GuestControllerDomain.DisplayName displayName, IEnumerable <Disney.Mix.SDK.Internal.GuestControllerDomain.MarketingItem> marketing)
 {
     try
     {
         IInternalSession   session           = sessionFactory.Create(swid);
         IInternalLocalUser internalLocalUser = session.InternalLocalUser;
         internalLocalUser.InternalRegistrationProfile.Update(profile, displayName, marketing);
         session.Resume(delegate(IResumeSessionResult r)
         {
             HandleOfflineSessionResumed(r, session, loginResult, gcErrorCollection, callback);
         });
     }
     catch (Exception arg)
     {
         logger.Critical("Error creating session: " + arg);
         callback(new LoginResult(success: false, null));
     }
 }
 public static ILinkChildResult GetLinkChildResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <ILinkChildResult>(error, linkChildErrors));
 }
Beispiel #22
0
    private void HandleLoginSuccess(GuestControllerResult <LogInResponse> result, Action <ILoginResult> callback)
    {
        try
        {
            LogInResponse           response          = result.Response;
            LogInData               data              = response.data;
            GuestApiErrorCollection gcErrorCollection = response.error;
            ILoginResult            loginResult       = GuestControllerErrorParser.GetLoginResult(gcErrorCollection);
            bool   flag          = false;
            string hallPassToken = string.Empty;
            string swid          = string.Empty;
            if (data != null || loginResult == null)
            {
                goto IL_015d;
            }
            if (loginResult is ILoginFailedParentalConsentResult)
            {
                foreach (GuestApiError error in gcErrorCollection.errors)
                {
                    TemporaryToken data2 = error.data;
                    if (data2 != null)
                    {
                        flag          = true;
                        hallPassToken = data2.accessToken;
                        swid          = data2.swid;
                        break;
                    }
                }
                if (flag)
                {
                    goto IL_015d;
                }
                callback(loginResult);
            }
            else
            {
                callback(loginResult);
            }
            goto end_IL_0018;
IL_015d:
            if (data == null && !flag)
            {
                if (gcErrorCollection != null)
                {
                    logger.Critical("Received unhandled error exception: " + JsonParser.ToJson(gcErrorCollection));
                }
                callback(new LoginResult(success: false, null));
            }
            else if (flag)
            {
                database.StoreSession(swid, hallPassToken, null, null, null, null, null, null, null, null, updateLastProfileRefreshTime: false, null);
                IGuestControllerClient guestControllerClient = guestControllerClientFactory.Create(swid);
                ProfileGetter.GetProfile(logger, guestControllerClient, delegate(ProfileData profileData)
                {
                    if (profileData == null)
                    {
                        database.DeleteSession(swid);
                        callback(new LoginFailedParentalConsentResult());
                    }
                    else
                    {
                        StoreSession(swid, hallPassToken, null, profileData.etag, profileData.displayName, profileData.profile);
                        HandleRefreshProfileSuccess(callback, loginResult, gcErrorCollection, profileData.profile, profileData.displayName, profileData.marketing, swid, hallPassToken);
                    }
                });
            }
            else if (!ValidateLogInData(data))
            {
                logger.Critical("Error parsing the login data:" + JsonParser.ToJson(data));
                callback(new LoginResult(success: false, null));
            }
            else
            {
                Token token = data.token;
                StoreSession(token.swid, token.access_token, token.refresh_token, data.etag, data.displayName, data.profile);
                HandleRefreshProfileSuccess(callback, loginResult, gcErrorCollection, data.profile, data.displayName, data.marketing, token.swid, token.access_token);
            }
            end_IL_0018 :;
        }
        catch (CorruptionException arg)
        {
            logger.Fatal("Corruption detected during login: "******"Unhandled exception: " + arg2);
            callback(new LoginResult(success: false, null));
        }
    }
 public static IPermissionResult GetPermissionResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <IPermissionResult>(error, permissionErrors));
 }
        private void HandleGetRegistrationConfiguration(IInternalGetRegistrationConfigurationResult result, ISession session, GuestApiErrorCollection errors, Action <BuildLegalMarketingErrorsResult> successCallback, Action failureCallback)
        {
            IInternalRegistrationConfiguration internalConfiguration = result.InternalConfiguration;

            if (!result.Success || internalConfiguration == null)
            {
                session.Dispose();
                failureCallback();
                return;
            }
            int age = CalculateAge(session.LocalUser.RegistrationProfile.DateOfBirth);

            internalConfiguration.GetUpdateAgeBand(session.LocalUser.RegistrationProfile.AgeBandKey, age, languagePreference, delegate(IGetAgeBandResult bandResult)
            {
                if (!bandResult.Success)
                {
                    session.Dispose();
                    failureCallback();
                }
                else
                {
                    FindMatches(bandResult.AgeBand, errors, successCallback, failureCallback);
                }
            });
        }
 public static ISendUsernameRecoveryResult GetRecoverUsernameResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <ISendUsernameRecoveryResult>(error, recoverUsernameErrors));
 }
 private void HandleRefreshSuccess(Action <IRestoreLastSessionResult> callback, GuestControllerResult <RefreshResponse> result, SessionDocument lastSessionDoc)
 {
     try
     {
         GuestApiErrorCollection   error2 = result.Response.error;
         RefreshData               data   = result.Response.data;
         IRestoreLastSessionResult error  = GuestControllerErrorParser.GetRestoreLastSessionResult(error2);
         if (data == null && error != null)
         {
             if (error is IRestoreLastSessionFailedInvalidOrExpiredTokenResult && lastSessionDoc.AccountStatus == "AWAIT_PARENT_CONSENT")
             {
                 callback(new RestoreLastSessionFailedParentalConsentResult());
             }
             else
             {
                 callback(error);
             }
             return;
         }
         if (data == null)
         {
             if (error2 != null)
             {
                 logger.Critical("Received unhandled error exception:\n" + JsonParser.ToJson(error2) + "\nResponse headers:\n" + string.Join("\n", result.ResponseHeaders.Select((KeyValuePair <string, string> h) => h.Key + ": " + h.Value).ToArray()));
             }
             callback(new RestoreLastSessionResult(success: false, null));
             return;
         }
         if (!ValidateRefreshData(data))
         {
             logger.Critical("Error parsing the refresh data: " + JsonParser.ToJson(data));
             callback(new RestoreLastSessionResult(success: false, null));
             return;
         }
         Token token = data.token;
         lastSessionDoc.GuestControllerAccessToken = token.access_token;
         lastSessionDoc.GuestControllerEtag        = data.etag;
         database.UpdateGuestControllerToken(token, data.etag);
         try
         {
             IInternalSession session = sessionFactory.Create(lastSessionDoc.Swid);
             session.Resume(delegate(IResumeSessionResult r)
             {
                 HandleOfflineSessionResumed(r, session, error, callback);
             });
         }
         catch (Exception ex)
         {
             logger.Critical("Error creating session: " + ex);
             callback(new RestoreLastSessionResult(success: false, null));
         }
     }
     catch (CorruptionException ex2)
     {
         logger.Fatal("Corruption detected during session restoration: " + ex2);
         callback(new RestoreLastSessionCorruptionDetectedResult());
     }
     catch (Exception ex)
     {
         logger.Critical("Unhandled exception: " + ex);
         callback(new RestoreLastSessionResult(success: false, null));
     }
 }
 public static ISendPasswordRecoveryResult GetRecoverPasswordResult(GuestApiErrorCollection error)
 {
     return(GetWorstResult <ISendPasswordRecoveryResult>(error, recoverPasswordErrors));
 }