コード例 #1
0
    def test_basics(self):
        def test(obj, dupe_obj):

            self.assertEqual(len(list(obj.items())),
                             len(list(dupe_obj.items())))

            for (key, value) in list(obj.items()):

                self.assertEqual(value, dupe_obj[key])

        #

        d = HydrusSerialisable.SerialisableDictionary()

        d[1] = 2
        d[3] = 'test1'

        d['test2'] = 4
        d['test3'] = 5

        d[6] = HydrusSerialisable.SerialisableDictionary(
            {i: 'test' + str(i)
             for i in range(20)})
        d[ClientSearch.Predicate(ClientSearch.PREDICATE_TYPE_TAG,
                                 'test pred 1')] = 56

        d[ClientSearch.Predicate(
            ClientSearch.PREDICATE_TYPE_TAG,
            'test pred 2')] = HydrusSerialisable.SerialisableList([
                ClientSearch.Predicate(ClientSearch.PREDICATE_TYPE_TAG,
                                       'test' + str(i)) for i in range(10)
            ])

        self.assertEqual(len(list(d.keys())), 7)

        for (key, value) in list(d.items()):

            self.assertEqual(d[key], value)

        self._dump_and_load_and_test(d, test)

        #

        db = HydrusSerialisable.SerialisableBytesDictionary()

        db[HydrusData.GenerateKey()] = HydrusData.GenerateKey()
        db[HydrusData.GenerateKey()] = [
            HydrusData.GenerateKey() for i in range(10)
        ]
        db[1] = HydrusData.GenerateKey()
        db[2] = [HydrusData.GenerateKey() for i in range(10)]

        self.assertEqual(len(list(db.keys())), 4)

        for (key, value) in list(db.items()):

            self.assertEqual(db[key], value)

        self._dump_and_load_and_test(db, test)
コード例 #2
0
 def __init__( self ):
     
     HydrusSerialisable.SerialisableBase.__init__( self )
     
     self._column_list_types_to_statuses = HydrusSerialisable.SerialisableDictionary()
     
     # populate default values, or load them as needed when missing or whatever mate
     
     self._dirty = False
コード例 #3
0
def DumpHydrusArgsToNetworkBytes(args):

    if not isinstance(args, HydrusSerialisable.SerialisableBase):

        args = HydrusSerialisable.SerialisableDictionary(args)

    for param_name in BYTE_PARAMS:

        if param_name in args:

            args[param_name] = args[param_name].hex()

    for param_name in JSON_BYTE_LIST_PARAMS:

        if param_name in args:

            args[param_name] = [item.hex() for item in args[param_name]]

    if 'account_types' in args:

        args['account_types'] = HydrusSerialisable.SerialisableList(
            args['account_types'])

    if 'account' in args:

        args[
            'account'] = HydrusNetwork.Account.GenerateSerialisableTupleFromAccount(
                args['account'])

    if 'accounts' in args:

        args['accounts'] = list(
            map(HydrusNetwork.Account.GenerateSerialisableTupleFromAccount,
                args['accounts']))

    if 'service_keys_to_access_keys' in args:

        args['service_keys_to_access_keys'] = [
            (service_key.hex(), access_key.hex())
            for (service_key, access_key
                 ) in list(args['service_keys_to_access_keys'].items())
        ]

    if 'services' in args:

        args['services'] = [
            service.ToSerialisableTuple() for service in args['services']
        ]

    network_bytes = args.DumpToNetworkBytes()

    return network_bytes
コード例 #4
0
def ParseNetworkBytesToParsedHydrusArgs(network_bytes):

    if len(network_bytes) == 0:

        return HydrusSerialisable.SerialisableDictionary()

    args = HydrusSerialisable.CreateFromNetworkBytes(network_bytes)

    if not isinstance(args, dict):

        raise HydrusExceptions.BadRequestException(
            'The given parameter did not seem to be a JSON Object!')

    args = ParsedRequestArguments(args)

    for param_name in BYTE_PARAMS:

        if param_name in args:

            args[param_name] = bytes.fromhex(args[param_name])

    for param_name in JSON_BYTE_LIST_PARAMS:

        if param_name in args:

            args[param_name] = [
                bytes.fromhex(encoded_item)
                for encoded_item in args[param_name]
            ]

    # account_types should be a serialisable list, so it just works

    if 'account' in args:

        args[
            'account'] = HydrusNetwork.Account.GenerateAccountFromSerialisableTuple(
                args['account'])

    if 'accounts' in args:

        account_tuples = args['accounts']

        args['accounts'] = [
            HydrusNetwork.Account.GenerateAccountFromSerialisableTuple(
                account_tuple) for account_tuple in account_tuples
        ]

    if 'service_keys_to_access_keys' in args:

        args['service_keys_to_access_keys'] = {
            bytes.fromhex(encoded_service_key):
            bytes.fromhex(encoded_access_key)
            for (encoded_service_key,
                 encoded_access_key) in args['service_keys_to_access_keys']
        }

    if 'services' in args:

        service_tuples = args['services']

        args['services'] = [
            HydrusNetwork.GenerateServiceFromSerialisableTuple(service_tuple)
            for service_tuple in service_tuples
        ]

    return args
コード例 #5
0
 def ResetToDefaults( self ):
     
     self._column_list_types_to_statuses = HydrusSerialisable.SerialisableDictionary()
     
     self._dirty = True