diff --git a/nextSong.json b/nextSong.json new file mode 100644 index 0000000000000000000000000000000000000000..af0411d0064a58eea9c4ad09165b64d5ec5a75a2 --- /dev/null +++ b/nextSong.json @@ -0,0 +1,22 @@ +{ + "wrapperType":"collection", + "collectionType":"Album", + "artistId":117554, + "collectionId":1498440588, + "amgArtistId":4062, + "artistName":"Def Leppard", + "collectionName":"Hysteria at the O2 (Live)", + "collectionCensoredName":"Hysteria at the O2 (Live)", + "artistViewUrl":"https://music.apple.com/us/artist/def-leppard/117554?uo=4", + "collectionViewUrl":"https://music.apple.com/us/album/hysteria-at-the-o2-live/1498440588?uo=4", + "artworkUrl60":"https://is2-ssl.mzstatic.com/image/thumb/Music113/v4/fb/22/8a/fb228abd-54fe-0a09-ae3d-4a3d9d66db2d/20UMGIM01121.rgb.jpg/60x60bb.jpg", + "artworkUrl100":"https://is2-ssl.mzstatic.com/image/thumb/Music113/v4/fb/22/8a/fb228abd-54fe-0a09-ae3d-4a3d9d66db2d/20UMGIM01121.rgb.jpg/100x100bb.jpg", + "collectionPrice":9.99, + "collectionExplicitness":"notExplicit", + "trackCount":18, + "copyright":"℗ 2020 Bludgeon Riffola Limited, exclusively licensed to Eagle Rock Entertainment Ltd.", + "country":"USA", + "currency":"USD", + "releaseDate":"2020-05-29T07:00:00Z", + "primaryGenreName":"Hard Rock" +} \ No newline at end of file diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebcontroller.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebcontroller.java index 01263889315a1ef508254fa7b4af9cd646d9e376..0bad73368b369205520186f77cdf81b04e00a643 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.FavoriteMusicRequestDto; import kr.ajousw.myspringweb.dto.MusicList; import kr.ajousw.myspringweb.entity.FavoriteMusic; import kr.ajousw.myspringweb.repository.FavoriteRepository; +import kr.ajousw.myspringweb.service.MusicService; @RestController public class MyWebcontroller { @@ -26,55 +27,69 @@ public class MyWebcontroller { @Autowired FavoriteRepository albumsRepo; - @GetMapping(value = "/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - try { - String url = "https://itunes.apple.com/search?term="+ term +"&entity=album"; - String response = restTemplate.getForObject(url, 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 url = "https://itunes.apple.com/search?term="+ term +"&entity=album"; - String response = restTemplate.getForObject(url, 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; - } - } + @Autowired + MusicService service; + - @GetMapping(value = "/likes") - public List<FavoriteMusic> getLikes() { - try { - return albumsRepo.findAll(); - } catch (Exception e) { - System.out.println(e.toString()); - return null; - } + @GetMapping(value = "/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name){ + return service.searchMusic(name); } - @PostMapping(value = "/likes") - @Transactional - public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if(music != null) { - return 1; - } else { - return 0; - } + @GetMapping(value="/musicSearch") + public MusicList musicSearchByParam(@RequestParam(value="term") String name) { + return service.searchMusic(name); } + + // @GetMapping(value = "/musicSearch/{term}") + // public MusicList musicSearchByPath(@PathVariable String term) { + // try { + // String url = "https://itunes.apple.com/search?term="+ term +"&entity=album"; + // String response = restTemplate.getForObject(url, 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 url = "https://itunes.apple.com/search?term="+ term +"&entity=album"; + // String response = restTemplate.getForObject(url, 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 = "/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 0000000000000000000000000000000000000000..dca08dafc35464b28e042f48fb9823af308557fc --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,74 @@ +package kr.ajousw.myspringweb.service; + +import java.io.IOException; +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +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; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + public MusicList searchMusic(String name) { + try { + String url = "https://itunes.apple.com/search?term="+ name +"&entity=album"; + String response = restTemplate.getForObject(url, 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 MusicList musicSearchByParam(@RequestParam(value = "term") String name) { + // try { + // String url = "https://itunes.apple.com/search?term="+ name +"&entity=album"; + // String response = restTemplate.getForObject(url, 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; + } + + } + +}