cnblogs/pkg/cnblogs_api.go

65 lines
1.3 KiB
Go
Raw Permalink Normal View History

2024-07-16 23:56:23 -07:00
package cnblogs_api
import (
"io"
"log"
"net/http"
"os"
"strings"
)
var USER_AGENT = "SaveTheWebProject cnblogs-preserve/0.1 (+saveweb@saveweb.org) and not Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"
var Logger = log.New(os.Stdout, "[cnblogs_api] ", log.Ldate|log.Ltime|log.Lmsgprefix)
func EnsureConnection(client http.Client) {
req, err := http.NewRequest("GET", "https://www.cnblogs.com/robots.txt", nil)
if err != nil {
panic(err)
}
req.Header.Add("User-Agent", USER_AGENT)
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
text := string(body)
Logger.Println(text)
if !strings.Contains(text, "User-Agent") {
panic("NotImplementedError: " + text)
}
}
func GetRSSHeadHeaders(client http.Client, blogID string) (http.Header, int, int64) {
req, err := http.NewRequest("HEAD", "https://feed.cnblogs.com/blog/u/"+blogID+"/rss/", nil)
if err != nil {
panic(err)
}
headers := map[string][]string{
"User-Agent": {USER_AGENT},
}
for k, v := range headers {
req.Header[k] = v
}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
_, err = io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
return resp.Header, resp.StatusCode, resp.ContentLength
}