package api import ( "encoding/json" "fmt" "io" "log" "net/http" "github.com/mmcdole/gofeed" ) func FetchPlain(url string) string { response, err := http.Get(url) if err != nil { log.Fatal(err) } defer response.Body.Close() body, err := io.ReadAll(response.Body) if err != nil { log.Fatal(err) } return string(body) } func FetchJSON[T any](url string) (T, error) { var result T resp, err := http.Get(url) if err != nil { return result, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return result, fmt.Errorf("unexpected status: %s", resp.Status) } body, err := io.ReadAll(resp.Body) if err != nil { return result, err } err = json.Unmarshal(body, &result) if err != nil { return result, err } return result, nil } func FetchRSS(url string) (ret []gofeed.Item, err error) { fp := gofeed.NewParser() feed, err := fp.ParseURL(url) for _, v := range feed.Items { ret = append(ret, *v) } return }