package main import ( "bytes" "context" "encoding/json" "fmt" "io" "log" "net/http" "os" ) const POCKETBASE_URL = `https://pocketbase-scratch.site.quack-lab.dev/api/collections` const POCKETBASE_REALTIME = `https://pocketbase-scratch.site.quack-lab.dev/api/realtime` const COLLECTION_NAME = "youtubedownload" const FULL_URL = POCKETBASE_URL + "/" + COLLECTION_NAME + "/records" type Item struct { Link string `json:"link"` } func main() { log.SetFlags(log.Lmicroseconds) for _, url := range os.Args[1:] { log.Printf("Downloading %s", url) go Download(url) } } func Download(url string) { req, err := http.NewRequestWithContext(context.Background(), "POST", FULL_URL, nil) if err != nil { log.Printf("Error creating PATCH request: %++v", err) return } req.Header.Set("Content-Type", "application/json") item := new(Item) item.Link = url body, err := json.Marshal(item) if err != nil { log.Printf("Error marshalling subscription body: %++v", err) return } req.Body = io.NopCloser(bytes.NewReader(body)) client := http.Client{} res, err := client.Do(req) if err != nil { log.Printf("Error sending PATCH request: %++v", err) return } defer res.Body.Close() if res.StatusCode != http.StatusOK { log.Printf("Non-OK HTTP status: %d", res.StatusCode) body, err = io.ReadAll(res.Body) if err != nil { log.Printf("Error reading response body: %++v", err) return } var data APIError err = json.Unmarshal(body, &data) if err != nil { log.Printf("Error unmarshaling JSON: %++v", err) return } log.Printf("API error: %++v", data) return } }