/* * * 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 . * */ 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; }