diff --git a/postSong.json b/postSong.json new file mode 100644 index 0000000000000000000000000000000000000000..ddb0c7efb7bca05f5cdcb8b0000059a226fd2add --- /dev/null +++ b/postSong.json @@ -0,0 +1,22 @@ +{ + "wrapperType":"collection", + "collectionType":"Album", + "artistId":994656, + "collectionId":580708175, + "amgArtistId":4739, + "artistName":"Led Zeppelin", + "collectionName":"Led Zeppelin IV (Remastered)", + "collectionCensoredName":"Led Zeppelin IV (Remastered)", + "artistViewUrl":"https://music.apple.com/us/artist/led-zeppelin/994656?uo=4", + "collectionViewUrl":"https://music.apple.com/us/album/led-zeppelin-iv-remastered/580708175?uo=4", + "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/5c/15/9b/5c159b27-95ca-b9a7-84e3-28e795fffd39/dj.kvkrpptq.jpg/60x60bb.jpg", + "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/5c/15/9b/5c159b27-95ca-b9a7-84e3-28e795fffd39/dj.kvkrpptq.jpg/100x100bb.jpg", + "collectionPrice":9.99, + "collectionExplicitness":"notExplicit", + "trackCount":8, + "copyright":"℗ 1971 Atlantic Recording Corporation, a Warner Music Group Company. Marketed by Rhino Entertainment Company, a Warner Music Group Company.", + "country":"USA", + "currency":"USD", + "releaseDate":"1971-11-08T08:00:00Z", + "primaryGenreName":"Rock" +} diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index a05f7c459e62d4f30fbba8e9777cab12731e10fa..29e7784f98c30630713ecb3608c1bc463cce37b5 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java @@ -4,8 +4,11 @@ import java.io.IOException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; 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; @@ -13,53 +16,81 @@ import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletRequest; +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 kr.ajousw.myspringweb.service.MusicService; @RestController public class MyWebController{ private final RestTemplate restTemplate = new RestTemplate(); private final String BASE_URL = "<https://itunes.apple.com/search?entity=song&attribute=songTerm&term=>"; - @GetMapping(value = "/musicSearch/{term}") - public MusicList musicSearchBypath(@PathVariable String term){ - try{ - String response = restTemplate.getForObject(BASE_URL + term, 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 = "/musicSearch/{name}") + public MusicList musicSearchBypath(@PathVariable String name){ + return service.searchMusic(name); + // try{ + // String response = restTemplate.getForObject(BASE_URL + term, 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("term") String term){ - try{ - String response = restTemplate.getForObject(BASE_URL + term, 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("term") String name){ + return service.searchMusic(name); + // try{ + // String response = restTemplate.getForObject(BASE_URL + term, 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 - FavoriteRepository albumsRepo; + // @Autowired + // FavoriteRepository albumsRepo; @GetMapping(value = "/likes") public List<FavoriteMusic> getLikes(){ - try{ - return albumsRepo.findAll(); - } catch(Exception e){ - System.out.println(e.toString()); - return null; - } + return service.getLikes(); + // try{ + // return albumsRepo.findAll(); + // } catch(Exception e){ + // System.out.println(e.toString()); + // return null; + // } + } + // @Autowired + // FavoriteRepository albumsRepo; + @PostMapping(value = "/likes") + // @Transactional + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite){ + return service.saveFavorite(favorite); + // FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + // if(music != null){ + // return 1; + // } + // else{ + // return 0; + // } + } + @DeleteMapping(value = "/likes/{id}") + public void deleteFavorite(@PathVariable String id) { + service.deleteFavorite(id); + } } \ No newline at end of file diff --git a/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java new file mode 100644 index 0000000000000000000000000000000000000000..e251cee01c23cc91708676bf43905daf05129f2a --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java @@ -0,0 +1,30 @@ +package kr.ajousw.myspringweb.dto; + +import jakarta.persistence.Column; +import kr.ajousw.myspringweb.entity.FavoriteMusic; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +public class FavoriteMusicRequestDto { + private String collectionId; + private String artistId; + private String artistName; + private String artistViewUrl; + private String collectionName; + private String collectionViewUrl; + public FavoriteMusic toEntity(){ + FavoriteMusic music = new FavoriteMusic(); + music.setCollectionId(this.collectionId); + music.setArtistId(this.artistId); + music.setArtistName(this.artistName); + music.setArtistViewUrl(this.artistViewUrl); + music.setCollectionName(this.collectionName); + music.setCollectionViewUrl(this.collectionViewUrl); + return music; + } + +} diff --git a/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java b/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java index b25b2ab074cfc517a02b4ac892265566ac07ed54..2ab94f8579be8cfb16376516cc6331b80bf11a2d 100644 --- a/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java +++ b/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java @@ -1,5 +1,6 @@ package kr.ajousw.myspringweb.repository; +import java.util.Iterator; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; @@ -8,5 +9,7 @@ import kr.ajousw.myspringweb.entity.FavoriteMusic; public interface FavoriteRepository extends JpaRepository<FavoriteMusic, String>{ List<FavoriteMusic> findAll(); + + void deleteById(String id); } 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..0d6ac411aca03c0e00568df9fbdb61508b89b810 --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,62 @@ +package kr.ajousw.myspringweb.service; + +import java.io.IOException; +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.servlet.http.HttpServletRequest; +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; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + HttpServletRequest request; + public MusicList searchMusic(String name) { + + MusicList musicList = null; + try { + String jsonString = restTemplate.getForObject(request.getRequestURI(), String.class); + ObjectMapper objectMapper = new ObjectMapper(); + musicList = objectMapper.readValue(jsonString, MusicList.class); + } catch (IOException e) { + e.printStackTrace(); + } + + return musicList; + } + + 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; + } + } + + public void deleteFavorite(String id){ + albumsRepo.deleteById(id); + } +} diff --git a/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class b/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class index f701fc68275b6eafdaedfcc4a848ff9ed28e20bb..53f84323cb344fa26ed349a62edf81fad185a3f4 100644 Binary files a/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class and b/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class differ diff --git a/target/classes/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.class b/target/classes/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.class new file mode 100644 index 0000000000000000000000000000000000000000..1e3a413feb6e9a8f713401ae07b80d63edd9a36b Binary files /dev/null and b/target/classes/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.class differ diff --git a/target/classes/kr/ajousw/myspringweb/repository/FavoriteRepository.class b/target/classes/kr/ajousw/myspringweb/repository/FavoriteRepository.class index 4a1f88d371634494cc49158cf175b63f6d9994e2..1d2b7d568dc3f3bd42637dc87c15108297b5b75d 100644 Binary files a/target/classes/kr/ajousw/myspringweb/repository/FavoriteRepository.class and b/target/classes/kr/ajousw/myspringweb/repository/FavoriteRepository.class differ 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..8d7cca1b85391f6419bec63f0d2ab3ce7e2e280f Binary files /dev/null and b/target/classes/kr/ajousw/myspringweb/service/MusicService.class differ