commit ca851ce3a0840f8c6c81147f8ee6538f777f7439 Author: Octopus Octopus Date: Wed Mar 20 20:10:28 2024 -0500 first commit diff --git a/api/api.go b/api/api.go new file mode 100644 index 0000000..969221c --- /dev/null +++ b/api/api.go @@ -0,0 +1,68 @@ +package api + +import ( + "bytes" + "io" + "mime/multipart" + "net/http" + "os" + "path/filepath" + "time" +) + +const API = "https://catbox.moe/user/api.php" + +func Upload(s string) ([]byte, error) { + client := &http.Client{Timeout: 10 * time.Second} + out := make([]byte, 0) + bout := bytes.NewBuffer(out) + writer := multipart.NewWriter(bout) + + s, err := filepath.Abs(s) + if err != nil { + return nil, err + } + + file, err := os.Open(s) + if err != nil { + return nil, err + } + defer file.Close() + data, err := io.ReadAll(file) + if err != nil { + return nil, err + } + + err = writer.WriteField("reqtype", "fileupload") + if err != nil { + return nil, err + } + + ff, err := writer.CreateFormFile("fileToUpload", filepath.Base(s)) + if err != nil { + return nil, err + } + _, err = io.Copy(ff, bytes.NewBuffer(data)) + if err != nil { + return nil, err + } + err = writer.Close() + if err != nil { + return nil, err + } + + p, err := http.NewRequest("POST", API, bout) + if err != nil { + return nil, err + } + println(writer.FormDataContentType()) + p.Header.Add("Content-Type", writer.FormDataContentType()) + + resp, err := client.Do(p) + if err != nil { + return nil, err + } + defer resp.Body.Close() + println(bout) + return io.ReadAll(resp.Body) +} diff --git a/catboxmoe b/catboxmoe new file mode 100755 index 0000000..4fcb1db Binary files /dev/null and b/catboxmoe differ diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4b0e095 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module catboxmoe + +go 1.22.1 diff --git a/main.go b/main.go new file mode 100644 index 0000000..b9893f4 --- /dev/null +++ b/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "catboxmoe/api" + "os" +) + +func main() { + if len(os.Args) == 1 { + help() + } else { + /*file, err := os.Open(os.Args[1]) + if err != nil { + panic(err) + } + defer file.Close()*/ + lol, err := api.Upload(os.Args[1]) + if err != nil { + panic(err) + } + println(string(lol)) + } +} + +func help() { + println("lol") +}