Files
banner/helpers.go

81 lines
1.7 KiB
Go

package main
import (
"io"
"log"
"math/rand"
"net/http"
"strconv"
"strings"
"time"
)
func BuildRequestWithBody(method string, path string, params map[string]string, body io.Reader) *http.Request {
// Builds a URL for the given path and parameters
url := baseURL + path
if params != nil {
takenFirst := false
for key, value := range params {
paramChar := "&"
if !takenFirst {
paramChar = "?"
takenFirst = true
}
url += paramChar + key + "=" + value
}
}
request, _ := http.NewRequest(method, url, body)
AddUserAgent(request)
return request
}
func BuildRequest(method string, path string, params map[string]string) *http.Request {
return BuildRequestWithBody(method, path, params, nil)
}
func AddUserAgent(req *http.Request) {
req.Header.Add("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36")
}
func ContainsContentType(header string, search string) bool {
// Split on commas, check if any of the types match
for _, content_type := range strings.Split(header, ";") {
if content_type == search {
return true
}
}
return false
}
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
func RandomString(n int) string {
b := make([]byte, n)
for i := range b {
b[i] = letterBytes[rand.Intn(len(letterBytes))]
}
return string(b)
}
func NoCache() string {
return strconv.Itoa(int(time.Now().UnixMilli()))
}
func onRequest(req *http.Request) {
log.Printf("GET %s", req.URL.String())
}
func onResponse(res *http.Response) {
log.Printf("%s %d %s", res.Status, res.ContentLength, res.Header["Content-Type"])
}
func Plural(n int) string {
if n == 1 {
return ""
}
return "s"
}