commit 01a6266
default
·
2022-11-23 15:13:51 +0000 UTC
parent 2a5f105
actor_get() and actor_add() now use the object database.
M
data.c
+21,
-47
1@@ -243,6 +243,8 @@ int object_get(const char *id, d_char **obj, const char *type)
2 else
3 *obj = NULL;
4
5+ srv_debug(2, xs_fmt("object_get %s %d", id, status));
6+
7 return status;
8 }
9
10@@ -265,6 +267,8 @@ int object_add(const char *id, d_char *obj)
11 else
12 status = 500;
13
14+ srv_debug(2, xs_fmt("object_add %s %d", id, status));
15+
16 return status;
17 }
18
19@@ -938,57 +942,43 @@ d_char *_actor_fn(snac *snac, char *actor)
20 }
21
22
23-int actor_add(snac *snac, char *actor, char *msg)
24+int actor_add(snac *snac, const char *actor, d_char *msg)
25 /* adds an actor */
26 {
27- int ret = 201; /* created */
28- xs *fn = _actor_fn(snac, actor);
29- FILE *f;
30-
31- if ((f = fopen(fn, "w")) != NULL) {
32- xs *j = xs_json_dumps_pp(msg, 4);
33-
34- fwrite(j, 1, strlen(j), f);
35- fclose(f);
36- }
37- else
38- ret = 500;
39-
40- snac_debug(snac, 2, xs_fmt("actor_add %s %s", actor, fn));
41-
42-// object_add(actor, msg);
43-
44- return ret;
45+ return object_add(actor, msg);
46 }
47
48
49-int actor_get(snac *snac, char *actor, d_char **data)
50+int actor_get(snac *snac, const char *actor, d_char **data)
51 /* returns an already downloaded actor */
52 {
53- xs *fn = _actor_fn(snac, actor);
54- double t;
55- double max_time;
56- int status;
57- FILE *f;
58+ int status = 200;
59+ char *d;
60
61 if (strcmp(actor, snac->actor) == 0) {
62+ /* this actor */
63 if (data)
64 *data = msg_actor(snac);
65
66- return 200;
67+ return status;
68 }
69
70- t = mtime(fn);
71+ /* read the object */
72+ if (!valid_status(status = object_get(actor, &d, "Person")))
73+ return status;
74
75- /* no mtime? there is nothing here */
76- if (t == 0.0)
77- return 404;
78+ if (data)
79+ *data = d;
80+
81+ xs *fn = _object_fn_by_id(actor);
82+ double max_time;
83
84 /* maximum time for the actor data to be considered stale */
85 max_time = 3600.0 * 36.0;
86
87- if (t + max_time < (double) time(NULL)) {
88+ if (mtime(fn) + max_time < (double) time(NULL)) {
89 /* actor data exists but also stinks */
90+ FILE *f;
91
92 if ((f = fopen(fn, "a")) != NULL) {
93 /* write a blank at the end to 'touch' the file */
94@@ -998,22 +988,6 @@ int actor_get(snac *snac, char *actor, d_char **data)
95
96 status = 205; /* "205: Reset Content" "110: Response Is Stale" */
97 }
98- else {
99- /* it's still valid */
100- status = 200;
101- }
102-
103- if (data) {
104- if ((f = fopen(fn, "r")) != NULL) {
105- xs *j = xs_readall(f);
106-
107- fclose(f);
108-
109- *data = xs_json_loads(j);
110- }
111- else
112- status = 500;
113- }
114
115 return status;
116 }
M
snac.h
+2,
-2
1@@ -80,8 +80,8 @@ void mute(snac *snac, char *actor);
2 void unmute(snac *snac, char *actor);
3 int is_muted(snac *snac, char *actor);
4
5-int actor_add(snac *snac, char *actor, char *msg);
6-int actor_get(snac *snac, char *actor, d_char **data);
7+int actor_add(snac *snac, const char *actor, d_char *msg);
8+int actor_get(snac *snac, const char *actor, d_char **data);
9
10 int static_get(snac *snac, const char *id, d_char **data, int *size);
11 void static_put(snac *snac, const char *id, const char *data, int size);