예제 #1
0
      private void _processLogin(string loginName, LoginStatus status, Action<LoginResult> onResult) {
         var result = new LoginResult { Status = status };
         if (status == LoginStatus.Success) {
            var session = _createOscarSession(loginName);
            if (session == null) {
               onResult(new LoginResult { Status = LoginStatus.SessionBlocked });
               Log.Warn("Unable to create user session.");
               return;
            }
            var preferences = new GetSettingsSection { DriverId = session.UserId, Section = _dSessionSection };
            Services.Invoke(preferences, o => {
               if (o != null) {
                  var defaultVehicle = o.Get(_dVehicle);
                  if (defaultVehicle.NotNull()) {
                     session.VehicleId = BplIdentity.Get(defaultVehicle.Value);
                  }
                  var defaultLocale = o.Get(_dLocale);
                  if (defaultLocale.NotNull()) {
                     session.UserLocale = new Locale(defaultLocale.Value);
                  }
               } else {
                  Log.Info("Login: No preferences for driver {0} stored.", session.UserId);
               }

               result.SessionToken = CryptServices.Encode(session);
               onResult(result);
            }, e => {
               Log.Warn("Login: Error processing preference request {0}", e);
               result.SessionToken = CryptServices.Encode(session);
               onResult(result);
            });
         } else {
            onResult(result);
         }
      }
예제 #2
0
      private void _handleUpdateSessionData(UpdateSessionData updateSessionData, OscarSessionData session, Action<LoginResult> onResult) {
         Log.Info("Session Update: Start");
         var result = new LoginResult { SessionToken = CryptServices.Encode(session), Status = LoginStatus.SessionBlocked };

         if (session.IsExpired(SessionTimeout)) {
            Log.Warn("Session Update: Session is expired. Create valid session first");
            onResult(result);
         } else {
            var values = new ParameterSet();
            values.Parameters.Add(new Parameter { Name = _dVehicle, Value = updateSessionData.UserVehicle });
            values.Parameters.Add(new Parameter { Name = _dLocale, Value = updateSessionData.UserLocale.Name });

            var preferences = new UpdateSettingsSection {
               DriverId = session.UserId,
               Values = values,
               Section = _dSessionSection
            };

            Services.Invoke(preferences, o => {
               if (o) {
                  session.VehicleId = updateSessionData.UserVehicle;
                  session.UserLocale = updateSessionData.UserLocale;

                  result.SessionToken = CryptServices.Encode(session);
                  result.Status = LoginStatus.Success;
               } else {
                  Log.Warn("Session Update: Unable to update session data");
               }
               onResult(result);
            }, e => {
               Log.Warn("Session Update: Error processing set preference request {0}", e);
               onResult(result);
            });
         }
      }