Пример #1
0
 def __init__(self):
     super(ItemsCache, self).__init__()
     goodies = GoodiesRequester()
     self.__items = ItemsRequester.ItemsRequester(InventoryRequester(), StatsRequester(), DossierRequester(), goodies, ShopRequester(goodies), RecycleBinRequester(), VehicleRotationRequester(), RankedRequester(), BattleRoyaleRequester(), BadgesRequester(), EpicMetaGameRequester(), TokensRequester(), dependency.instance(IFestivityFactory).getRequester(), BlueprintsRequester(), SessionStatsRequester(), AnonymizerRequester(), GiftSystemRequester())
     self.__compatVehiclesCache = CompatVehiclesCache()
     self.__waitForSync = False
     self.__syncFailed = False
     self.onSyncStarted = Event()
     self.onSyncCompleted = Event()
     self.onSyncFailed = Event()
Пример #2
0
 def __init__(self):
     super(ItemsCache, self).__init__()
     goodies = GoodiesRequester()
     self.__items = ItemsRequester.ItemsRequester(
         InventoryRequester(), StatsRequester(), DossierRequester(),
         goodies, ShopRequester(goodies), RecycleBinRequester(),
         VehicleRotationRequester(), RankedRequester())
     self.__waitForSync = False
     self.onSyncStarted = Event()
     self.onSyncCompleted = Event()
Пример #3
0
class AccountValidator:
    """
    Do validation of account's server data
    """

    class CODES:
        """
        Validation error codes
        """
        OK = 0
        INVENTORY_VEHICLE_MISMATCH = 1001
        INVENTORY_CHASSIS_MISMATCH = 1002
        INVENTORY_TURRET_MISMATCH = 1003
        INVENTORY_GUN_MISMATCH = 1004
        INVENTORY_ENGINE_MISMATCH = 1005
        INVENTORY_FUEL_TANK_MISMATCH = 1006
        INVENTORY_RADIO_MISMATCH = 1007
        INVENTORY_OPT_DEV_MISMATCH = 1009
        INVENTORY_SHELL_MISMATCH = 1010
        INVENTORY_EQ_MISMATCH = 1011

    def __init__(self):
        self.__inventory = InventoryRequester()

    def __validateInventoryVehicles(self):
        """
        Method validates inventory vehicles' data.
        @return: <CODES> error code
        """
        for invId, vehData in self.__inventory.getItems(vehicles._VEHICLE).iteritems():
            try:
                vehicles.VehicleDescr(compactDescr=vehData['compDescr'])
            except Exception:
                nationIdx, innation_id = vehicles.parseVehicleCompactDescr(vehData['compDescr'])
                LOG_ERROR('There is exception while validating vehicle', vehData['compDescr'], (nationIdx, innation_id))
                LOG_CURRENT_EXCEPTION()
                return self.CODES.INVENTORY_VEHICLE_MISMATCH

        return self.CODES.OK

    def __validateInventoryItem(self, type, errorCode):
        """
        Method validates inventory items' data.
        
        @param type: <int> type index of item
        @param errorCode: <CODES> code to return in error case
        
        @return: <CODES> eror code
        """
        for intCompactDescr in self.__inventory.getItems(type).iterkeys():
            try:
                vehicles.getDictDescr(intCompactDescr)
            except Exception:
                item_type_id, nationIdx, innation_id = vehicles.parseIntCompactDescr(intCompactDescr)
                LOG_ERROR('There is exception while validation item (%s)' % ITEM_TYPE_NAMES[type], intCompactDescr, (item_type_id, nationIdx, innation_id))
                LOG_CURRENT_EXCEPTION()
                return errorCode

        return self.CODES.OK

    @async
    @process
    def start(self, callback):
        """
        Starting validation. Iterates through all validation
        handlers. Breaks after first error caseand return code.
        
        @return: <CODES> error code
        """
        handlers = [lambda : self.__validateInventoryItem(vehicles._CHASSIS, self.CODES.INVENTORY_CHASSIS_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._TURRET, self.CODES.INVENTORY_TURRET_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._GUN, self.CODES.INVENTORY_GUN_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._ENGINE, self.CODES.INVENTORY_ENGINE_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._FUEL_TANK, self.CODES.INVENTORY_FUEL_TANK_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._RADIO, self.CODES.INVENTORY_RADIO_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._OPTIONALDEVICE, self.CODES.INVENTORY_OPT_DEV_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._SHELL, self.CODES.INVENTORY_SHELL_MISMATCH),
         lambda : self.__validateInventoryItem(vehicles._EQUIPMENT, self.CODES.INVENTORY_EQ_MISMATCH),
         self.__validateInventoryVehicles]
        yield self.__inventory.request()
        for handler in handlers:
            code = handler()
            if code > 0:
                callback(code)
                return

        callback(self.CODES.OK)
Пример #4
0
 def __init__(self):
     self.__inventory = InventoryRequester()
Пример #5
0
class AccountValidator:
    """
    Do validation of account's server data
    """
    class CODES:
        """
        Validation error codes
        """
        OK = 0
        INVENTORY_VEHICLE_MISMATCH = 1001
        INVENTORY_CHASSIS_MISMATCH = 1002
        INVENTORY_TURRET_MISMATCH = 1003
        INVENTORY_GUN_MISMATCH = 1004
        INVENTORY_ENGINE_MISMATCH = 1005
        INVENTORY_FUEL_TANK_MISMATCH = 1006
        INVENTORY_RADIO_MISMATCH = 1007
        INVENTORY_OPT_DEV_MISMATCH = 1009
        INVENTORY_SHELL_MISMATCH = 1010
        INVENTORY_EQ_MISMATCH = 1011

    def __init__(self):
        self.__inventory = InventoryRequester()

    def __validateInventoryVehicles(self):
        """
        Method validates inventory vehicles' data.
        @return: <CODES> error code
        """
        for invId, vehData in self.__inventory.getItems(
                vehicles._VEHICLE).iteritems():
            try:
                vehicles.VehicleDescr(compactDescr=vehData['compDescr'])
            except Exception:
                nationIdx, innation_id = vehicles.parseVehicleCompactDescr(
                    vehData['compDescr'])
                LOG_ERROR('There is exception while validating vehicle',
                          vehData['compDescr'], (nationIdx, innation_id))
                LOG_CURRENT_EXCEPTION()
                return self.CODES.INVENTORY_VEHICLE_MISMATCH

        return self.CODES.OK

    def __validateInventoryItem(self, type, errorCode):
        """
        Method validates inventory items' data.
        
        @param type: <int> type index of item
        @param errorCode: <CODES> code to return in error case
        
        @return: <CODES> eror code
        """
        for intCompactDescr in self.__inventory.getItems(type).iterkeys():
            try:
                vehicles.getDictDescr(intCompactDescr)
            except Exception:
                item_type_id, nationIdx, innation_id = vehicles.parseIntCompactDescr(
                    intCompactDescr)
                LOG_ERROR(
                    'There is exception while validation item (%s)' %
                    ITEM_TYPE_NAMES[type], intCompactDescr,
                    (item_type_id, nationIdx, innation_id))
                LOG_CURRENT_EXCEPTION()
                return errorCode

        return self.CODES.OK

    @async
    @process
    def start(self, callback):
        """
        Starting validation. Iterates through all validation
        handlers. Breaks after first error caseand return code.
        
        @return: <CODES> error code
        """
        handlers = [
            lambda: self.__validateInventoryItem(
                vehicles._CHASSIS, self.CODES.INVENTORY_CHASSIS_MISMATCH),
            lambda: self.__validateInventoryItem(
                vehicles._TURRET, self.CODES.INVENTORY_TURRET_MISMATCH),
            lambda: self.__validateInventoryItem(
                vehicles._GUN, self.CODES.INVENTORY_GUN_MISMATCH),
            lambda: self.__validateInventoryItem(
                vehicles._ENGINE, self.CODES.INVENTORY_ENGINE_MISMATCH),
            lambda: self.__validateInventoryItem(
                vehicles._FUEL_TANK, self.CODES.INVENTORY_FUEL_TANK_MISMATCH),
            lambda: self.__validateInventoryItem(
                vehicles._RADIO, self.CODES.INVENTORY_RADIO_MISMATCH),
            lambda: self.__validateInventoryItem(
                vehicles._OPTIONALDEVICE, self.CODES.INVENTORY_OPT_DEV_MISMATCH
            ), lambda: self.__validateInventoryItem(
                vehicles._SHELL, self.CODES.INVENTORY_SHELL_MISMATCH),
            lambda: self.__validateInventoryItem(
                vehicles._EQUIPMENT, self.CODES.INVENTORY_EQ_MISMATCH),
            self.__validateInventoryVehicles
        ]
        yield self.__inventory.request()
        for handler in handlers:
            code = handler()
            if code > 0:
                callback(code)
                return

        callback(self.CODES.OK)
Пример #6
0
 def __init__(self):
     self.__inventory = InventoryRequester()