diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index 34772dd2f23e63f5f743948497e0164beacd0174..8bfd7be42d09b165016104123cfb50997b37e5c1 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java @@ -1,67 +1,42 @@ package kr.ajousw.myspringweb.controller; -import java.io.IOException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -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 kr.ajousw.myspringweb.service.MusicService; @RestController public class MyWebController { @Autowired - FavoriteRepository albumsRepo; + MusicService service; @GetMapping(value="/musicSearch/{term}") - public String musicSearch(@PathVariable String term) { - RestTemplate restTemplate = new RestTemplate(); - String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; - - try { - String res = restTemplate.getForObject(url, String.class); - ObjectMapper mapper = new ObjectMapper(); - MusicList list = mapper.readValue(res, MusicList.class); - String ret = mapper.writeValueAsString(list); + public MusicList musicSearchByPath(@PathVariable String term) { + return service.musicSearch(term); + } - return ret; - } catch(IOException e) { - System.out.println(e.toString()); - } - return "{\"resultCount\":0, \"results\":[]}"; + @GetMapping(value="/musicSearch") + public MusicList musicSearchByParam(@RequestParam(value="term") String term) { + return service.musicSearch(term); } - //Get Favorite Music list from Database - @GetMapping(value="/likes") + @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; - } - } -} + return service.saveFavorite(favorite.toEntity()); + } +} \ No newline at end of file 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..20c068621bc3d85ca43a328d4a92a4b04f682dac --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,51 @@ +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.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +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 musicSearch(String term){ + RestTemplate restTemplate = new RestTemplate(); + String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; + try { + String res = restTemplate.getForObject(url, String.class); + ObjectMapper mapper = new ObjectMapper(); + MusicList list = mapper.readValue(res, MusicList.class); + 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(FavoriteMusic favoriteMusic){ + FavoriteMusic music = albumsRepo.save(favoriteMusic); + return music != null ? 1 : 0; + } +}