윤준석

FIX: error handling in servie layer

...@@ -24,7 +24,10 @@ func GetItemByKeyword(keyword string) ([]model.Item, error) { ...@@ -24,7 +24,10 @@ func GetItemByKeyword(keyword string) ([]model.Item, error) {
24 var items []model.Item 24 var items []model.Item
25 wg := sync.WaitGroup{} 25 wg := sync.WaitGroup{}
26 26
27 - itemsInfo := getItemsInfoByKeyword(keyword) 27 + itemsInfo, err := getItemsInfoByKeyword(keyword)
28 + if err != nil {
29 + return nil, err
30 + }
28 31
29 for _, itemInfo := range itemsInfo { 32 for _, itemInfo := range itemsInfo {
30 itemUrl := itemInfo.Link 33 itemUrl := itemInfo.Link
...@@ -34,7 +37,7 @@ func GetItemByKeyword(keyword string) ([]model.Item, error) { ...@@ -34,7 +37,7 @@ func GetItemByKeyword(keyword string) ([]model.Item, error) {
34 wg.Add(1) 37 wg.Add(1)
35 go func(itemUrl string) { 38 go func(itemUrl string) {
36 defer wg.Done() 39 defer wg.Done()
37 - err, item := crawlingNaverCafe(itemUrl) 40 + item, err := crawlingNaverCafe(itemUrl)
38 if err != nil { 41 if err != nil {
39 log.Fatal(err) 42 log.Fatal(err)
40 } 43 }
...@@ -46,13 +49,13 @@ func GetItemByKeyword(keyword string) ([]model.Item, error) { ...@@ -46,13 +49,13 @@ func GetItemByKeyword(keyword string) ([]model.Item, error) {
46 return items, nil 49 return items, nil
47 } 50 }
48 51
49 -func getItemsInfoByKeyword(keyword string) []model.ApiResponseItem { 52 +func getItemsInfoByKeyword(keyword string) ([]model.ApiResponseItem, error) {
50 encText := url.QueryEscape("중고나라 " + keyword + " 판매중") 53 encText := url.QueryEscape("중고나라 " + keyword + " 판매중")
51 apiUrl := "https://openapi.naver.com/v1/search/cafearticle.json?query=" + encText + "&sort=sim" 54 apiUrl := "https://openapi.naver.com/v1/search/cafearticle.json?query=" + encText + "&sort=sim"
52 55
53 req, err := http.NewRequest("GET", apiUrl, nil) 56 req, err := http.NewRequest("GET", apiUrl, nil)
54 if err != nil { 57 if err != nil {
55 - log.Fatal(err) 58 + return nil, err
56 } 59 }
57 req.Header.Add("X-Naver-Client-Id", config.Cfg.Secret.CLIENTID) 60 req.Header.Add("X-Naver-Client-Id", config.Cfg.Secret.CLIENTID)
58 req.Header.Add("X-Naver-Client-Secret", config.Cfg.Secret.CLIENTSECRET) 61 req.Header.Add("X-Naver-Client-Secret", config.Cfg.Secret.CLIENTSECRET)
...@@ -60,7 +63,7 @@ func getItemsInfoByKeyword(keyword string) []model.ApiResponseItem { ...@@ -60,7 +63,7 @@ func getItemsInfoByKeyword(keyword string) []model.ApiResponseItem {
60 client := &http.Client{} 63 client := &http.Client{}
61 resp, err := client.Do(req) 64 resp, err := client.Do(req)
62 if err != nil { 65 if err != nil {
63 - log.Fatal(err) 66 + return nil, err
64 } 67 }
65 defer func(Body io.ReadCloser) { 68 defer func(Body io.ReadCloser) {
66 err := Body.Close() 69 err := Body.Close()
...@@ -75,16 +78,16 @@ func getItemsInfoByKeyword(keyword string) []model.ApiResponseItem { ...@@ -75,16 +78,16 @@ func getItemsInfoByKeyword(keyword string) []model.ApiResponseItem {
75 if err != nil { 78 if err != nil {
76 log.Fatal(err) 79 log.Fatal(err)
77 } 80 }
78 - return apiResponse.Items 81 + return apiResponse.Items, nil
79 } 82 }
80 83
81 -func crawlingNaverCafe(cafeUrl string) (error, *model.Item) { 84 +func crawlingNaverCafe(cafeUrl string) (*model.Item, error) {
82 frame := rod.New().MustConnect().MustPage(cafeUrl).MustElement("iframe#cafe_main") 85 frame := rod.New().MustConnect().MustPage(cafeUrl).MustElement("iframe#cafe_main")
83 time.Sleep(time.Second * 2) 86 time.Sleep(time.Second * 2)
84 source := frame.MustFrame().MustHTML() 87 source := frame.MustFrame().MustHTML()
85 html, err := goquery.NewDocumentFromReader(bytes.NewReader([]byte(source))) 88 html, err := goquery.NewDocumentFromReader(bytes.NewReader([]byte(source)))
86 if err != nil { 89 if err != nil {
87 - return err, nil 90 + return nil, err
88 } 91 }
89 92
90 title := html.Find("h3.title_text").Text() 93 title := html.Find("h3.title_text").Text()
...@@ -108,7 +111,7 @@ func crawlingNaverCafe(cafeUrl string) (error, *model.Item) { ...@@ -108,7 +111,7 @@ func crawlingNaverCafe(cafeUrl string) (error, *model.Item) {
108 } 111 }
109 fmt.Println("crawling " + cafeUrl + " title: " + title) 112 fmt.Println("crawling " + cafeUrl + " title: " + title)
110 113
111 - return nil, &item 114 + return &item, nil
112 } 115 }
113 116
114 func priceStringToInt(priceString string) int { 117 func priceStringToInt(priceString string) int {
......