bloaterbot/text/nhentai/data.go
2023-03-05 04:20:17 +01:00

81 lines
1.5 KiB
Go

package nhentai
import (
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"watn3y/bloaterbotv3/config"
)
func doAPIRequest(hentaiID string) (exists bool, Details nhentaiResponse) {
client := &http.Client{}
req, err := http.NewRequest("GET", config.BotConfig.Nhentai.APIEndpoint+"/gallery/"+hentaiID, nil)
if err != nil {
log.Fatalln(err)
}
req.Header.Set("User-Agent", "Golang_Spider_Bot/3.0")
resp, err := client.Do(req)
if err != nil {
log.Fatalln(err)
}
if resp.StatusCode == 404 {
return false, nhentaiResponse{}
} else if resp.StatusCode != 200 {
return false, nhentaiResponse{}
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
var hentai nhentaiResponse
if err := json.Unmarshal(body, &hentai); err != nil { // Parse []byte to the go struct pointer
fmt.Println("Can not unmarshal JSON")
}
return true, hentai
}
func parseAPIResponse(rawHentai nhentaiResponse) (formattedHentai hentai) {
var hentai = hentai{
ID: rawHentai.ID,
Title: rawHentai.Title.Pretty,
UploadDate: rawHentai.UploadDate,
}
for _, tag := range rawHentai.Tags {
if tag.Type == "tag" {
hentai.Tags = append(hentai.Tags, struct {
Name string
URL string
}{Name: tag.Name, URL: tag.URL})
} /* else if tag.Type == "parody" {
} else if tag.Type == "character" {
} else if tag.Type == "language" {
} else if tag.Type == "group" {
} else if tag.Type == "artist" {
} else if tag.Type == "category" {
}*/
}
return hentai
}