diff --git a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java b/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java index 9cb176d729d5b73eae848493ca98819728043c47..1ba223c57843a52215093b18b3f85b316506ee74 100644 --- a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java +++ b/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java @@ -4,13 +4,12 @@ import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; import com.ajou.prcoding.myweb.dto.MusicList; import com.ajou.prcoding.myweb.entity.FavoriteMusic; import com.ajou.prcoding.myweb.repository.FavoriteRepository; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.ajou.prcoding.myweb.service.MusicService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import javax.transaction.Transactional; -import java.io.IOException; import java.util.List; @@ -18,54 +17,17 @@ import java.util.List; public class MyWebController { @Autowired - FavoriteRepository albumsRepo; - //클래스 변수로 정의 - RestTemplate restTemplate = new RestTemplate(); + MusicService service; - MusicList list; - @GetMapping(value="/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term){ - try { - String url =String.format("https://itunes.apple.com/search?term=%s&entity=album",term); - String response = restTemplate.getForObject(url, String.class); - - ObjectMapper mapper = new ObjectMapper(); - - list = mapper.readValue(response, MusicList.class); - - System.out.println(list.getResultCount()); - - return list; - - } catch(IOException e) { - - System.out.println(e.toString()); - - } - return list; + @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 url =String.format("https://itunes.apple.com/search?term=%s&entity=album",term); - String response = restTemplate.getForObject(url, String.class); - - ObjectMapper mapper = new ObjectMapper(); - - list = mapper.readValue(response, MusicList.class); - - System.out.println(list.getResultCount()); - - return list; - - } catch(IOException e) { - - System.out.println(e.toString()); - - } - return list; + public MusicList musicSearchByParam(@RequestParam(value = "term") String name){ + return service.searchMusic(name); } //Get Favorite Music list from Database @@ -73,32 +35,13 @@ public class MyWebController { @GetMapping(value="/likes") 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; - } + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { + return service.saveFavorite(favorite); } - } diff --git a/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java new file mode 100644 index 0000000000000000000000000000000000000000..330fc8d097bc53345ac80afb53248fb05c406f21 --- /dev/null +++ b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java @@ -0,0 +1,76 @@ +package com.ajou.prcoding.myweb.service; + +import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; +import com.ajou.prcoding.myweb.dto.MusicList; +import com.ajou.prcoding.myweb.entity.FavoriteMusic; +import com.ajou.prcoding.myweb.repository.FavoriteRepository; +import lombok.RequiredArgsConstructor; +import org.codehaus.jackson.map.ObjectMapper; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.client.RestTemplate; + +import javax.transaction.Transactional; +import java.io.IOException; +import java.util.List; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + MusicList list; + + public MusicList searchMusic(@PathVariable String term) { + try { + String url = String.format("https://itunes.apple.com/search?term=%s&entity=album", term); + String response = restTemplate.getForObject(url, String.class); + + ObjectMapper mapper = new ObjectMapper(); + + list = mapper.readValue(response, MusicList.class); + + System.out.println(list.getResultCount()); + + return list; + + } catch (IOException e) { + + System.out.println(e.toString()); + + } + return list; + } + + public List<FavoriteMusic> getLikes() { + + try { + return albumsRepo.findAll(); + + } catch (Exception e) { + + System.out.println(e.toString()); + + return null; + + } + + } + public int saveFavorite(@RequestBody FavoriteMusicRequestDto favorite){ + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + + if(music != null) { + return 1; + } + + else { + return 0; + } + } + +} + +