import os name = "Synapse Assign DM Room Avatar" kind = "action" showstatus = True resolve = { "get": { "sender": ["messageheaders", "userCard", "id"], "avatar": ["uploadimage"], "room_id": ["room_id"], "username": ["messageheaders", "userCard", "username"], "avatar_hash": ["useravatar_hash"], }, "construct": { "matrixuser": [ "@rmass_", {"resolved": "sender"}, ":loxthelion.com", ], "matrixdm": [ "rmass_dm_", {"resolved": "sender"}, ], }, } keys = [ { "keytitle": "url", "keyvalue": { "resolved": "avatar", }, }, ] method = "PUT" path = [ "https://loxthelion.com//_matrix/client/v3/rooms/", {"resolved": "room_id"}, "/state/m.room.avatar", #{"resolved": "matrixuser"}, #"/avatar_url?user_id=", #{"resolved": "matrixuser"}, ] headers = { "Authorization": { "os": "AS_TOKEN", "prefix": "Bearer ", }, "Content-Type": "application/json", } filters = [ { "filterkey": "avatar_hash", "operator": "==", "filtervalue": {"outputs": "db_avatar_hash"}, "print": f"DM avatar up to date. Skipping {name}...", }, ] saverow = { "table": "user_profiles", "columns": [ {"rmass_user_id": "INTEGER PRIMARY KEY"}, {"rmass_username": "TEXT NOT NULL UNIQUE"}, {"rmass_dm_room": "TEXT NOT NULL UNIQUE"}, {"rmass_avatar_hash": "TEXT"}, ], "rowitems": [ {"resolved": "sender"}, {"resolved": "username"}, {"resolved": "matrixdm"}, {"outputs": "useravatar_hash"}, ], "onconflict": { "target": "rmass_user_id", "update": [ "rmass_username", "rmass_dm_room", "rmass_avatar_hash", ], "preservenull": True, }, }