summaryrefslogtreecommitdiff
path: root/main.c3
diff options
context:
space:
mode:
authorandromeda <andromeda@lenovo>2026-05-09 19:18:14 +0200
committerandromeda <andromeda@lenovo>2026-05-09 19:18:14 +0200
commit1caa1bbdb8f474a1e404875e0f02464273dabb46 (patch)
tree30e222831eaf70e335215e9125c7411fea3c2f90 /main.c3
parent1032e316846d4739232facd83bc36f0b41f7d67f (diff)
add libcurl
Diffstat (limited to 'main.c3')
-rw-r--r--main.c363
1 files changed, 63 insertions, 0 deletions
diff --git a/main.c3 b/main.c3
new file mode 100644
index 0000000..93ad23b
--- /dev/null
+++ b/main.c3
@@ -0,0 +1,63 @@
+/*
+*
+* Copyright (C) 2026 Andromeda
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <https://www.gnu.org/licenses/>.
+*
+*/
+
+module radgen;
+import std::io;
+import std::encoding::json;
+import std::collections::object;
+import curl;
+
+char[10485760] response;
+usz response_len;
+String url = "https://iris.radicle.network/api/v1";
+
+fn usz write_callback(char* buffer, usz size, usz nitems, void* outstream)
+{
+ response[response_len..response_len+nitems-1] = buffer[..nitems-1];
+ response_len += nitems;
+ return nitems;
+}
+
+fn void get(Curl* c, String endpoint)
+{
+ response_len = 0;
+ curl::easy_setopt(c, CurlOption.URL, url.tconcat(endpoint));
+ curl::easy_setopt(c, CurlOption.WRITEFUNCTION, &write_callback);
+ CurlResult r = curl::easy_perform(c);
+}
+
+fn int main(String[] args)
+{
+ Curl* c = curl::easy_init();
+ get(c, "/repos?show=all&perPage=16384&page=0");
+ curl::easy_cleanup(c);
+
+ Object* j = json::tparse((String)response[..response_len], JsonFlavor.JSONC)!!;
+
+ int i = 0;
+ while (i < j.array.len())
+ {
+ io::print(j.get_at(i).get_string("rid"))!!;
+ io::print(" ");
+ io::printn(j.get_at(i).get("payloads").get("xyz.radicle.project").get("data").get_string("name"))!!;
+ i++;
+ }
+
+ return 0;
+}