| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 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)
- }
|