def process_user(username, profile, server=NAMECOIND_SERVER, new_address=None): master_key = 'u/' + username if namecoind.check_registration(master_key): keys, values = slice_profile_update(username, profile) else: keys, values = slice_profile(username, profile) index = 0 key1 = keys[index] value1 = values[index] if namecoind.check_registration(key1): # if name is registered log.debug("name update: %s", key1) log.debug("size: %s", utf8len(json.dumps(value1))) update_name(key1, value1, new_address) else: # if not registered log.debug("name new: %s", key1) log.debug("size: %s", utf8len(json.dumps(value1))) register_name(key1, value1, server, username) process_additional_keys(keys, values, server, username, new_address)
def _splitter(remaining, username): split = {} maxsize = _max_size(username) if utf8len(json.dumps(remaining)) < maxsize: return remaining, None else: for key in remaining.keys(): if utf8len(json.dumps(remaining[key])) > maxsize: # include the size of key in (key, value) maxsize as well temp = {} temp[key] = 'extra-space-here' maxsize_value = maxsize - utf8len(json.dumps(temp)) remaining[key] = remaining[key][:maxsize_value] # some foreign languages have a bug in size reduction # check again, and display error if utf8len(json.dumps(remaining[key])) > maxsize: remaining[key] = 'Error: value too large' split[key] = remaining[key] if utf8len(json.dumps(split)) > maxsize: del split[key] else: del remaining[key] return split, remaining
def transfer(self, key,new_address,value=None): #check if this name exists and if it does, find the value field #note that update command needs an arg of <new value>. #in case we're simply transferring, we need to obtain old value first key_details = self.name_show(key) if 'code' in key_details and key_details.get('code') == -4: return error_reply("Key does not exist") #get new 'value' if given, otherwise use the old 'value' if value is None: value = json.dumps(key_details['value']) #now unlock the wallet if not self.unlock_wallet(self.passphrase): error_reply("Error unlocking wallet", 403) if utf8len(value) > VALUE_MAX_LIMIT: return error_reply("value larger than " + str(VALUE_MAX_LIMIT)) #transfer the name (underlying call is still name_update) info = self.namecoind.name_update(key, value, new_address) return info
def name_update(self, key, value): if utf8len(value) > VALUE_MAX_LIMIT: return error_reply("value larger than " + str(VALUE_MAX_LIMIT)) if not self.unlock_wallet(self.passphrase): error_reply("Error unlocking wallet", 403) try: # update the 'value' reply = self.obj.name_update(key, value) except JSONRPCException as e: return e.error return reply
def name_update(self, key,value): if utf8len(value) > VALUE_MAX_LIMIT: return error_reply("value larger than " + str(VALUE_MAX_LIMIT)) #now unlock the wallet if not self.unlock_wallet(self.passphrase): error_reply("Error unlocking wallet", 403) #update the 'value' try: info = self.namecoind.name_update(key, value) except JSONRPCException as e: return e.error return info
def firstupdate(self, key, rand, value, tx=None): if utf8len(value) > VALUE_MAX_LIMIT: return error_reply("value larger than " + str(VALUE_MAX_LIMIT)) if not self.unlock_wallet(self.passphrase): error_reply("Error unlocking wallet", 403) try: if tx is not None: reply = self.obj.name_firstupdate(key, rand, tx, value) else: reply = self.obj.name_firstupdate(key, rand, value) except JSONRPCException as e: return e.error return reply
def process_additional_keys(keys, values, server, username, new_address): # register/update remaining keys size = len(keys) index = 1 while index < size: next_key = keys[index] next_value = values[index] log.debug(utf8len(json.dumps(next_value))) if namecoind.check_registration(next_key): log.debug("name update: " + next_key) update_name(next_key, next_value, new_address) else: log.debug("name new: " + next_key) register_name(next_key, next_value, server, username) index += 1