import { SearchResults, Tag, ContentsResponse } from "./gitea_api.d.ts"; const ENDPOINT_URL = "https://git.prelude.duckdns.org/api/v1/"; export interface GiteaOption{ token: string; } async function fetchFromGitea(url: string | URL, giteaOption? :GiteaOption): Promise { const headers = new Headers(); if (giteaOption) { headers.append("Authorization", "token " + giteaOption.token); } const response = await fetch(url, { headers: headers } ); const data = await response.json(); return data; } export async function searchRepositoryWithTopic(topic: string, giteaOption? :GiteaOption): Promise { const url = new URL(ENDPOINT_URL+ "repos/search"); url.searchParams.append("q", topic); url.searchParams.append("topic", "true"); const data = await fetchFromGitea(url,giteaOption); return data; } export async function getRepositoryTags(owner:string, repo:string, giteaOption? :GiteaOption): Promise{ const url = new URL(ENDPOINT_URL+ "repos/"+owner+"/"+repo+"/tags"); const data = await fetchFromGitea(url,giteaOption); return data; } export async function getRepositoryContent(owner:string, repo:string, path:string, ref:string, giteaOption? :GiteaOption): Promise{ const url = new URL(ENDPOINT_URL+ "repos/"+owner+"/"+repo+"/contents/"+path); url.searchParams.append("ref", ref); const data = await fetchFromGitea(url,giteaOption); return data; } if (import.meta.main) { const results = await searchRepositoryWithTopic("denolib"); console.log(results.data?.map((repo) => repo.full_name)); const s = await getRepositoryContent("monoid", "script", "", ""); console.log((s as ContentsResponse[]).map((x) => x.name)); }