in cartography/intel/crxcavator/crxcavator.py [0:0]
def transform_user_extensions(user_extension_json):
"""
Transforms the raw extensions JSON from the API into a list of extensions mapped to users
:param user_extension_json: The JSON text blob returned from the CRXcavator API
:return: Tuple containing unique users list and extension info for ingestion
"""
user_extensions = user_extension_json.items()
users_set = set()
extensions_by_user = []
for extension in user_extensions:
for details in extension[1].items():
for user in details[1]['users']:
users_set.add(user)
extensions_by_user.append({
'id': "{0}|{1}".format(extension[0], details[0]),
'user': user})
if len(users_set) == 0:
raise ValueError('No users returned from CRXcavator')
if len(extensions_by_user) == 0:
raise ValueError('No user->extension mapping returned from CRXcavator')
return list(users_set), extensions_by_user