package lib import ( "encoding/json" "fmt" "io" "net/http" ) func GetRemoteURLContent(url string) ([]byte, error) { resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("failed to get remote content -> %s: %s", url, resp.Status) } return io.ReadAll(resp.Body) } func GetRemoteURLReader(url string) (io.ReadCloser, error) { resp, err := http.Get(url) if err != nil { return nil, err } if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("failed to get remote content -> %s: %s", url, resp.Status) } return resp.Body, nil } func GetIgnoreIPType(onlyIPType IPType) IgnoreIPOption { switch onlyIPType { case IPv4: return IgnoreIPv6 case IPv6: return IgnoreIPv4 } return nil } type WantedListExtended struct { TypeSlice []string TypeMap map[string][]string } func (w *WantedListExtended) UnmarshalJSON(data []byte) error { if len(data) == 0 { return nil } slice := make([]string, 0) mapMap := make(map[string][]string, 0) err := json.Unmarshal(data, &slice) if err != nil { err2 := json.Unmarshal(data, &mapMap) if err2 != nil { return err2 } } w.TypeSlice = slice w.TypeMap = mapMap return nil }