main.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. char *user;
  17. int argi = 1;
  18. argc--;
  19. if (argc < argi)
  20. return usage();
  21. cmd = argv[argi++];
  22. if (strcmp(cmd, "init") == 0) {
  23. return 0;
  24. }
  25. if (argc < argi)
  26. return usage();
  27. basedir = argv[argi++];
  28. if (!srv_open(basedir)) {
  29. srv_log(xs_fmt("error opening database at %s", basedir));
  30. return 1;
  31. }
  32. if (strcmp(cmd, "httpd") == 0) {
  33. httpd();
  34. return 0;
  35. }
  36. if (argc < argi)
  37. return usage();
  38. user = argv[argi++];
  39. if (strcmp(cmd, "webfinger") == 0) {
  40. xs *actor = NULL;
  41. xs *uid = NULL;
  42. int status;
  43. webfinger_request(user, &status, &actor, &uid);
  44. printf("status: %d\n", status);
  45. if (actor != NULL)
  46. printf("actor: %s\n", actor);
  47. if (uid != NULL)
  48. printf("uid: %s\n", uid);
  49. return 0;
  50. }
  51. return 0;
  52. }
  53. #if 0
  54. {
  55. snac snac;
  56. printf("%s\n", tid(0));
  57. srv_open("/home/angel/lib/snac/comam.es/");
  58. user_open(&snac, "mike");
  59. xs *headers = xs_dict_new();
  60. int status;
  61. d_char *payload;
  62. int p_size;
  63. xs *response;
  64. response = http_signed_request(&snac, "GET", "https://mastodon.social/users/VictorMoral",
  65. headers, NULL, 0, &status, &payload, &p_size);
  66. {
  67. xs *j1 = xs_json_dumps_pp(response, 4);
  68. printf("response:\n%s\n", j1);
  69. printf("payload:\n%s\n", payload);
  70. }
  71. {
  72. xs *list = queue(&snac);
  73. char *p, *fn;
  74. p = list;
  75. while (xs_list_iter(&p, &fn)) {
  76. xs *obj;
  77. obj = dequeue(&snac, fn);
  78. printf("%s\n", xs_dict_get(obj, "actor"));
  79. }
  80. }
  81. #if 0
  82. {
  83. xs *list = follower_list(&snac);
  84. char *p, *obj;
  85. p = list;
  86. while (xs_list_iter(&p, &obj)) {
  87. char *actor = xs_dict_get(obj, "actor");
  88. printf("%s\n", actor);
  89. }
  90. }
  91. {
  92. xs *list = timeline_list(&snac);
  93. char *p, *fn;
  94. p = list;
  95. while (xs_list_iter(&p, &fn)) {
  96. xs *tle = timeline_get(&snac, fn);
  97. printf("%s\n", xs_dict_get(tle, "id"));
  98. }
  99. }
  100. {
  101. xs *list = user_list();
  102. char *p, *uid;
  103. p = list;
  104. while (xs_list_iter(&p, &uid)) {
  105. if (user_open(&snac, uid)) {
  106. printf("%s (%s)\n", uid, xs_dict_get(snac.config, "name"));
  107. user_free(&snac);
  108. }
  109. }
  110. }
  111. #endif
  112. return 0;
  113. }
  114. #endif