diff options
| author | 2023-04-30 06:49:51 +0200 | |
|---|---|---|
| committer | 2023-04-30 06:49:51 +0200 | |
| commit | e31c4810a83c42c0298d4832fb4f2291dec0e84d (patch) | |
| tree | 7a0157f312846467a394bd7a6be69bf30080d055 /data.c | |
| parent | Some instance timeline work. (diff) | |
| download | snac2-e31c4810a83c42c0298d4832fb4f2291dec0e84d.tar.gz snac2-e31c4810a83c42c0298d4832fb4f2291dec0e84d.tar.xz snac2-e31c4810a83c42c0298d4832fb4f2291dec0e84d.zip | |
actor_get() returns an actor message for local users.
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 26 |
1 files changed, 21 insertions, 5 deletions
| @@ -1287,27 +1287,43 @@ int is_hidden(snac *snac, const char *id) | |||
| 1287 | } | 1287 | } |
| 1288 | 1288 | ||
| 1289 | 1289 | ||
| 1290 | int actor_add(snac *snac, const char *actor, d_char *msg) | 1290 | int actor_add(snac *snac, const char *actor, xs_dict *msg) |
| 1291 | /* adds an actor */ | 1291 | /* adds an actor */ |
| 1292 | { | 1292 | { |
| 1293 | return object_add_ow(actor, msg); | 1293 | return object_add_ow(actor, msg); |
| 1294 | } | 1294 | } |
| 1295 | 1295 | ||
| 1296 | 1296 | ||
| 1297 | int actor_get(snac *snac, const char *actor, d_char **data) | 1297 | int actor_get(snac *snac1, const char *actor, xs_dict **data) |
| 1298 | /* returns an already downloaded actor */ | 1298 | /* returns an already downloaded actor */ |
| 1299 | { | 1299 | { |
| 1300 | int status = 200; | 1300 | int status = 200; |
| 1301 | d_char *d; | 1301 | xs_dict *d; |
| 1302 | 1302 | ||
| 1303 | if (strcmp(actor, snac->actor) == 0) { | 1303 | if (strcmp(actor, snac1->actor) == 0) { |
| 1304 | /* this actor */ | 1304 | /* this actor */ |
| 1305 | if (data) | 1305 | if (data) |
| 1306 | *data = msg_actor(snac); | 1306 | *data = msg_actor(snac1); |
| 1307 | 1307 | ||
| 1308 | return status; | 1308 | return status; |
| 1309 | } | 1309 | } |
| 1310 | 1310 | ||
| 1311 | if (xs_startswith(actor, srv_baseurl)) { | ||
| 1312 | /* it's a (possible) local user */ | ||
| 1313 | xs *l = xs_split(actor, "/"); | ||
| 1314 | const char *uid = xs_list_get(l, -1); | ||
| 1315 | snac user; | ||
| 1316 | |||
| 1317 | if (!xs_is_null(uid) && user_open(&user, uid)) { | ||
| 1318 | if (data) | ||
| 1319 | *data = msg_actor(&user); | ||
| 1320 | |||
| 1321 | user_free(&user); | ||
| 1322 | } | ||
| 1323 | else | ||
| 1324 | return 404; | ||
| 1325 | } | ||
| 1326 | |||
| 1311 | /* read the object */ | 1327 | /* read the object */ |
| 1312 | if (!valid_status(status = object_get(actor, &d))) | 1328 | if (!valid_status(status = object_get(actor, &d))) |
| 1313 | return status; | 1329 | return status; |