def process(raw_user: ZerverFieldsT) -> ZerverFieldsT: avatar_payload = raw_user['avatar'] bits = base64.b64decode(avatar_payload) user_id = raw_user['id'] metadata = write_avatar_png( avatar_folder=avatar_folder, realm_id=realm_id, user_id=user_id, bits=bits, ) return metadata
def process(raw_user: ZerverFieldsT) -> ZerverFieldsT: avatar_payload = raw_user['avatar'] bits = base64.b64decode(avatar_payload) user_id = raw_user['id'] metadata = write_avatar_png( avatar_folder=avatar_folder, realm_id=realm_id, user_id=user_id, bits=bits, ) return metadata
def convert_avatar_data(avatar_folder: str, raw_data: List[ZerverFieldsT], user_id_mapper: IdMapper, realm_id: int) -> List[ZerverFieldsT]: ''' This code is pretty specific to how Hipchat sends us data. They give us the avatar payloads in base64 in users.json. We process avatars in our own pass of that data, rather than doing it while we're getting other user data. I chose to keep this separate, as otherwise you have a lot of extraneous data getting passed around. This code has MAJOR SIDE EFFECTS--namely writing a bunch of files to the avatars directory. ''' avatar_records = [] for d in raw_data: raw_user = d['User'] avatar_payload = raw_user.get('avatar') if not avatar_payload: continue bits = base64.b64decode(avatar_payload) raw_user_id = raw_user['id'] if not user_id_mapper.has(raw_user_id): continue user_id = user_id_mapper.get(raw_user_id) metadata = write_avatar_png( avatar_folder=avatar_folder, realm_id=realm_id, user_id=user_id, bits=bits, ) avatar_records.append(metadata) return avatar_records