From c2c201a0b069cfa3aa28b4bf616dbda2c086329d Mon Sep 17 00:00:00 2001
From: SEOJIN <uko802@ajou.ac.kr>
Date: Mon, 17 Jul 2023 17:33:28 +0900
Subject: [PATCH] Curl localhost/musicSearch?term=DefLeopard ss code ith
 service

---
 .../controller/MyWebController.java           | 134 +++++++++-------
 .../myspringweb/service/MusicService.java     | 145 ++++++++++++++++++
 .../controller/MyWebController.class          | Bin 3622 -> 1914 bytes
 .../myspringweb/service/MusicService.class    | Bin 0 -> 2993 bytes
 4 files changed, 226 insertions(+), 53 deletions(-)
 create mode 100644 src/main/java/kr/ajousw/myspringweb/service/MusicService.java
 create mode 100644 target/classes/kr/ajousw/myspringweb/service/MusicService.class

diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java
index 3c395ad..37c35c2 100644
--- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java
+++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java
@@ -19,6 +19,7 @@ import kr.ajousw.myspringweb.dto.MusicList;
 import kr.ajousw.myspringweb.entity.FavoriteMusic;
 import kr.ajousw.myspringweb.repository.FavoriteRepository;
 import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto;
+import kr.ajousw.myspringweb.service.MusicService;
 
 
 @RestController
@@ -26,71 +27,98 @@ import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto;
 public class MyWebController {
 
   @Autowired
-  FavoriteRepository albumsRepo;
+  MusicService service;
+  
 
-    
-    RestTemplate restTemplate = new RestTemplate();
-
-    @GetMapping(value="/musicSearch/{term}")
-    public MusicList musicSearchByPath(@PathVariable String term) {
-      try {
-        String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", String.class);
-        ObjectMapper mapper = new ObjectMapper();
-        MusicList list = mapper.readValue(response, MusicList.class);
-        // 리스트의 타입은 뮤직리스트 
-        System.out.println(list.getResultCount());
-        return list;
-      } catch(IOException e) {
-        System.out.println(e.toString());
-        return null;
-      }
-        
 
-    }
 
+   @GetMapping(value = "/musicSearch/{name}")
+    public MusicList musicSearchByPath(@PathVariable String name){
+        return service.searchMusic(name);
+    }
 
-    @GetMapping(value="/musicSearch")    
-    public MusicList musicSearchByParam(@RequestParam String term) { 
-    try {
-        String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", String.class);
-        ObjectMapper mapper = new ObjectMapper();
-        MusicList list = mapper.readValue(response, MusicList.class);
-        // 리스트의 타입은 뮤직리스트 
-        System.out.println(list.getResultCount());
-        return list;
-      } catch(IOException e) {
-        System.out.println(e.toString());
-        return null;
-      }
-    
+    @GetMapping(value="/musicSearch")
+    public MusicList musicSearchByParam(@RequestParam(value="term") String name) {
+        return service.searchMusic(name);
     }
 
-    // // Get Favorite Music list from Database
-    @GetMapping(value="/likes") 
+    @GetMapping(value="/likes")  //Get Favorite Music list from Database
     public List<FavoriteMusic> getLikes() {
-
-        try {
-            return albumsRepo.findAll();
-
-        } catch (Exception e) {
-            System.out.println(e.toString());
-            return null;
-        }
-    }  
-
+        return service.getLikes();
+    }
 
     @PostMapping(value="/likes")
-    @Transactional
     public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) {
-    FavoriteMusic music = albumsRepo.save(favorite.toEntity());
-    if(music != null) {
-        return 1;
-    }
-    else {
-        return 0;
-    }
+        return service.saveFavorite(favorite);
     }
 
+
+
+
+
+    
+    // RestTemplate restTemplate = new RestTemplate();
+
+    // @GetMapping(value="/musicSearch/{term}")
+    // public MusicList musicSearchByPath(@PathVariable String term) {
+    //   try {
+    //     String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", String.class);
+    //     ObjectMapper mapper = new ObjectMapper();
+    //     MusicList list = mapper.readValue(response, MusicList.class);
+    //     // 리스트의 타입은 뮤직리스트 
+    //     System.out.println(list.getResultCount());
+    //     return list;
+    //   } catch(IOException e) {
+    //     System.out.println(e.toString());
+    //     return null;
+    //   }
+        
+
+    // }
+
+
+    // @GetMapping(value="/musicSearch")    
+    // public MusicList musicSearchByParam(@RequestParam String term) { 
+    // try {
+    //     String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", String.class);
+    //     ObjectMapper mapper = new ObjectMapper();
+    //     MusicList list = mapper.readValue(response, MusicList.class);
+    //     // 리스트의 타입은 뮤직리스트 
+    //     System.out.println(list.getResultCount());
+    //     return list;
+    //   } catch(IOException e) {
+    //     System.out.println(e.toString());
+    //     return null;
+    //   }
+    
+    // }
+
+    // // // Get Favorite Music list from Database
+    // @GetMapping(value="/likes") 
+    // public List<FavoriteMusic> getLikes() {
+
+    //     try {
+    //         return albumsRepo.findAll();
+
+    //     } catch (Exception e) {
+    //         System.out.println(e.toString());
+    //         return null;
+    //     }
+    // }  
+
+
+    // @PostMapping(value="/likes")
+    // @Transactional
+    // public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) {
+    // FavoriteMusic music = albumsRepo.save(favorite.toEntity());
+    // if(music != null) {
+    //     return 1;
+    // }
+    // else {
+    //     return 0;
+    // }
+    // }
+
 }
 
 
diff --git a/src/main/java/kr/ajousw/myspringweb/service/MusicService.java b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java
new file mode 100644
index 0000000..c507419
--- /dev/null
+++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java
@@ -0,0 +1,145 @@
+package kr.ajousw.myspringweb.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import jakarta.transaction.Transactional;
+import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto;
+import kr.ajousw.myspringweb.dto.MusicList;
+import kr.ajousw.myspringweb.entity.FavoriteMusic;
+import kr.ajousw.myspringweb.repository.FavoriteRepository;
+import lombok.RequiredArgsConstructor;
+
+import java.io.IOException;
+import java.util.*;
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+
+public class MusicService {
+    private final FavoriteRepository albumsRepo;
+    RestTemplate restTemplate = new RestTemplate();
+
+
+    public MusicList searchMusic(String name) {
+        try {
+                String response = restTemplate.getForObject("https://itunes.apple.com/search?term="+name+"&entity=album", String.class);
+                ObjectMapper mapper = new ObjectMapper();
+                MusicList list = mapper.readValue(response, MusicList.class);
+                // 리스트의 타입은 뮤직리스트 
+                System.out.println(list.getResultCount());
+                return list;
+              } catch(IOException e) {
+                System.out.println(e.toString());
+                return null;
+              }
+
+    
+  }
+
+  public List<FavoriteMusic> getLikes() {
+    try {
+                return albumsRepo.findAll();
+    
+            } catch (Exception e) {
+                System.out.println(e.toString());
+                return null;
+            }
+  }
+
+  public int saveFavorite(FavoriteMusicRequestDto favorite) {
+    FavoriteMusic music = albumsRepo.save(favorite.toEntity());
+    if(music != null) {
+        return 1;
+    }
+    else {
+        return 0;
+    }
+
+
+
+  }
+
+
+
+
+    // GetMapping(value="/musicSearch/{term}")
+    // public MusicList musicSearchByPath(@PathVariable String term) {
+    //   try {
+    //     String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", String.class);
+    //     ObjectMapper mapper = new ObjectMapper();
+    //     MusicList list = mapper.readValue(response, MusicList.class);
+    //     // 리스트의 타입은 뮤직리스트 
+    //     System.out.println(list.getResultCount());
+    //     return list;
+    //   } catch(IOException e) {
+    //     System.out.println(e.toString());
+    //     return null;
+    //   }
+        
+
+    // }
+
+
+    // @GetMapping(value="/musicSearch")    
+    // public MusicList musicSearchByParam(@RequestParam String term) { 
+    // try {
+    //     String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", String.class);
+    //     ObjectMapper mapper = new ObjectMapper();
+    //     MusicList list = mapper.readValue(response, MusicList.class);
+    //     // 리스트의 타입은 뮤직리스트 
+    //     System.out.println(list.getResultCount());
+    //     return list;
+    //   } catch(IOException e) {
+    //     System.out.println(e.toString());
+    //     return null;
+    //   }
+    
+    // }
+
+    // // // Get Favorite Music list from Database
+    // @GetMapping(value="/likes") 
+    // public List<FavoriteMusic> getLikes() {
+
+    //     try {
+    //         return albumsRepo.findAll();
+
+    //     } catch (Exception e) {
+    //         System.out.println(e.toString());
+    //         return null;
+    //     }
+    // }  
+
+
+    // @PostMapping(value="/likes")
+    // @Transactional
+    // public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) {
+    // FavoriteMusic music = albumsRepo.save(favorite.toEntity());
+    // if(music != null) {
+    //     return 1;
+    // }
+    // else {
+    //     return 0;
+    // }
+    // }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    
+}
diff --git a/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class b/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class
index 8bb3230126b57b13e2c74cd44628d9a5bbb46abb..e43f8ff1355cfd7516204e0e9893c393b095652b 100644
GIT binary patch
delta 818
zcmZ1`^NUa5)W2Q(7#J9A8LZeDm>3xhCQsxLn|zZ|YNCS#4|{QHQCVhkDkFoA4@g`D
z%GdWTEzV31hDc7F6*bwIQG$_oa}Og2BTHUlZtCP2Oz}dT42%p?JPfQ1Y+MX7407xY
zvXdP+C7rPu!NVZWAk4_XU7VU&l$-%JoRI-+5+j3<PgY`CqJB<dUb=p8Nl|8Ay7go;
zwjx%RlGLKy$;;R(xIo71@-V0~XiQ$sUO)L0yVm3?4nA=i24fxu69#=o2A<-?vQ)Rk
zvizdVlGMq$oX(S<bEefZGBAJ~$H2(I&cMLH#=ywH0Ty9o;AG%pU}WHCU|`T^U}ONR
z)7s9!vyp*;fr)_+s+fU6nt`8zfq@62fI)ykkb!}LkwJ(-n1KasBp(AKg9rm7gJ?7Z
zV=;pmgE#{N13Sn(2?hoR?s{;bGchnRFfedxZDEkq-o_xk0nG|kuoYquMNlgk7&sXe
z7!(;88I(ZoWn@qQ+pCPjUKOytJRo~jL5?YAPy>6d-j;!Y<yypBuFjyrz|5ctcD)uB
z&ufFNG=hdE2gtki+Zc4vy{iwl5fY*tQ13D_=rQOcg{T3@6W|cl2Kx*gqK2Rl#S)-K
rYrsxI#F+`$22g;SfWi?HX&{y<gBc=3O~Ja%!K4M)JD}uY$-n>r5~*aE

literal 3622
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
B&h7vJ

diff --git a/target/classes/kr/ajousw/myspringweb/service/MusicService.class b/target/classes/kr/ajousw/myspringweb/service/MusicService.class
new file mode 100644
index 0000000000000000000000000000000000000000..db0757bf4f956aeff1c9b67a0352cc93a517b263
GIT binary patch
literal 2993
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
PzyMBqbqov)^$ZLEgfunP

literal 0
HcmV?d00001

-- 
GitLab