package service import ( "crawler/config" "fmt" "io" "log" "net/http" "os" "time" ) type Rest struct{} // REST API 호출 func (this *Rest) CallRestGetAPI(url string) ([]byte, error) { // API 호출 req, err := http.NewRequest("GET", url, nil) if this.Check(err) { return nil, err } // 웹 수집을 위한 Crawler Header 값 추가 req.Header.Set("Accept", "application/json") req.Header.Add("User-Agent", "Crawler") client := &http.Client{ Timeout: 8 * time.Second, } res, err := client.Do(req) if this.Check(err) { return nil, err } defer func(body io.ReadCloser) { this.Check(body.Close()) }(res.Body) data, err := io.ReadAll(res.Body) if this.Check(err) { return nil, err } return data, nil } func (this *Rest) CallRestGet(url string) ([]byte, error) { // API 호출 req, err := http.NewRequest("GET", url, nil) if this.Check(err) { return nil, err } // 웹 수집을 위한 Crawler Header 값 추가 req.Header.Add("User-Agent", "Crawler") client := &http.Client{ Timeout: 8 * time.Second, } res, err := client.Do(req) if this.Check(err) { return nil, err } defer func(body io.ReadCloser) { this.Check(body.Close()) }(res.Body) data, err := io.ReadAll(res.Body) if this.Check(err) { return nil, err } return data, nil } // REST API 오류 확인 func (this *Rest) Check(err error) bool { if err != nil { this.WriteLog(err.Error()) return true } return false } // Kobis 오류 기록 func (this *Rest) WriteLog(msg string) { data, err := os.OpenFile(config.ERROR_LOG_PATH_KOBIS, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { log.Fatalln(err) } defer func() { if data.Close() != nil { fmt.Println(err) } }() log.SetOutput(data) log.Println(err) }