diff options
| author | andromeda <andromeda@lenovo> | 2026-05-09 19:18:14 +0200 |
|---|---|---|
| committer | andromeda <andromeda@lenovo> | 2026-05-09 19:18:14 +0200 |
| commit | 1caa1bbdb8f474a1e404875e0f02464273dabb46 (patch) | |
| tree | 30e222831eaf70e335215e9125c7411fea3c2f90 /main.c3 | |
| parent | 1032e316846d4739232facd83bc36f0b41f7d67f (diff) | |
add libcurl
Diffstat (limited to 'main.c3')
| -rw-r--r-- | main.c3 | 63 |
1 files changed, 63 insertions, 0 deletions
@@ -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; +} |
