package main import ( "encoding/json" "bytes" "fmt" "io" "net/http" "os" ) func main() { // Fetch Hastebin URL from environment variable hastebinURL := os.Getenv("HASTEBIN_URL") if hastebinURL == "" { fmt.Println("Error: HASTEBIN_URL environment variable is not set") return } // Determine the input source var input io.Reader if len(os.Args) > 1 { file, err := os.Open(os.Args[1]) if err != nil { fmt.Printf("Error opening file: %v\n", err) return } defer file.Close() input = file } else { input = os.Stdin } // Read the entire input buffer := new(bytes.Buffer) _, err := buffer.ReadFrom(input) if err != nil { fmt.Printf("Error reading input: %v\n", err) return } // Send data to Hastebin resp, err := http.Post(hastebinURL+"/documents", "text/plain", buffer) if err != nil { fmt.Printf("Error posting data to Hastebin: %v\n", err) return } defer resp.Body.Close() // Decode response to get the key type HastebinResponse struct { Key string `json:"key"` } var res HastebinResponse if err := json.NewDecoder(resp.Body).Decode(&res); err != nil { fmt.Printf("Error decoding Hastebin response: %v\n", err) return } // Output the full URL fmt.Println(hastebinURL + "/" + res.Key) }