main.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /* snac - A simple, minimalistic ActivityPub instance */
  2. /* copyright (c) 2022 grunfink - MIT license */
  3. #include "xs.h"
  4. #include "xs_encdec.h"
  5. #include "xs_json.h"
  6. #include "snac.h"
  7. int usage(void)
  8. {
  9. printf("usage:\n");
  10. return 1;
  11. }
  12. int main(int argc, char *argv[])
  13. {
  14. char *cmd;
  15. char *basedir;
  16. int argi = 1;
  17. argc--;
  18. if (argc < argi)
  19. return usage();
  20. cmd = argv[argi++];
  21. if (strcmp(cmd, "init") == 0) {
  22. return 0;
  23. }
  24. if (argc < argi)
  25. return usage();
  26. basedir = argv[argi++];
  27. if (!srv_open(basedir)) {
  28. srv_log(xs_fmt("error opening database at %s", basedir));
  29. return 1;
  30. }
  31. if (strcmp(cmd, "httpd") == 0) {
  32. httpd();
  33. return 0;
  34. }
  35. return 0;
  36. }
  37. #if 0
  38. {
  39. snac snac;
  40. printf("%s\n", tid(0));
  41. srv_open("/home/angel/lib/snac/comam.es/");
  42. user_open(&snac, "mike");
  43. xs *headers = xs_dict_new();
  44. int status;
  45. d_char *payload;
  46. int p_size;
  47. xs *response;
  48. response = http_signed_request(&snac, "GET", "https://mastodon.social/users/VictorMoral",
  49. headers, NULL, 0, &status, &payload, &p_size);
  50. {
  51. xs *j1 = xs_json_dumps_pp(response, 4);
  52. printf("response:\n%s\n", j1);
  53. printf("payload:\n%s\n", payload);
  54. }
  55. {
  56. xs *list = queue(&snac);
  57. char *p, *fn;
  58. p = list;
  59. while (xs_list_iter(&p, &fn)) {
  60. xs *obj;
  61. obj = dequeue(&snac, fn);
  62. printf("%s\n", xs_dict_get(obj, "actor"));
  63. }
  64. }
  65. #if 0
  66. {
  67. xs *list = follower_list(&snac);
  68. char *p, *obj;
  69. p = list;
  70. while (xs_list_iter(&p, &obj)) {
  71. char *actor = xs_dict_get(obj, "actor");
  72. printf("%s\n", actor);
  73. }
  74. }
  75. {
  76. xs *list = timeline_list(&snac);
  77. char *p, *fn;
  78. p = list;
  79. while (xs_list_iter(&p, &fn)) {
  80. xs *tle = timeline_get(&snac, fn);
  81. printf("%s\n", xs_dict_get(tle, "id"));
  82. }
  83. }
  84. {
  85. xs *list = user_list();
  86. char *p, *uid;
  87. p = list;
  88. while (xs_list_iter(&p, &uid)) {
  89. if (user_open(&snac, uid)) {
  90. printf("%s (%s)\n", uid, xs_dict_get(snac.config, "name"));
  91. user_free(&snac);
  92. }
  93. }
  94. }
  95. #endif
  96. return 0;
  97. }
  98. #endif