From c53e899571fd10b1c9e53d3adf3765c78a8cbb97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EB=AF=BC=EC=9E=AC=20=EC=A1=B0?= <ussr1285@ajou.ac.kr>
Date: Mon, 17 Jul 2023 15:22:24 +0900
Subject: [PATCH] Music search

---
 .gitignore                                    |  2 +-
 .../controller/MyWebController.java           | 48 +++++++++++++++++++
 .../prcoding/mySpringWeb/dto/MusicList.java   | 16 +++++++
 src/main/resources/application.properties     | 10 ++++
 4 files changed, 75 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java
 create mode 100644 src/main/java/kr/ajou/prcoding/mySpringWeb/dto/MusicList.java

diff --git a/.gitignore b/.gitignore
index 4739898..abbb448 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
 HELP.md
-target/
+target/*
 !.mvn/wrapper/maven-wrapper.jar
 !**/src/main/**/target/
 !**/src/test/**/target/
diff --git a/src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java b/src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java
new file mode 100644
index 0000000..77c3f3b
--- /dev/null
+++ b/src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java
@@ -0,0 +1,48 @@
+package kr.ajou.prcoding.mySpringWeb.controller;
+
+import java.io.IOException;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+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.ajou.prcoding.mySpringWeb.dto.MusicList;
+
+@RestController
+public class MyWebController {
+    RestTemplate restTemplate = new RestTemplate();
+    private String url = "http://itunes.apple.com"; // ?term=${searchWord}&entity=album
+
+    @GetMapping(value = "/musicSearch/{term}")
+    public MusicList musicSearchByPath(@PathVariable String term) { // String이 리턴 타입 이었음.
+        try {
+            url = url+String.format("/search?term=%s&entity=album", term);
+            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(value="term") String name){
+        try {
+            url = url+String.format("/search?term=%s&entity=album", name);
+            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;
+        }
+    }
+
+}
diff --git a/src/main/java/kr/ajou/prcoding/mySpringWeb/dto/MusicList.java b/src/main/java/kr/ajou/prcoding/mySpringWeb/dto/MusicList.java
new file mode 100644
index 0000000..bcef0d7
--- /dev/null
+++ b/src/main/java/kr/ajou/prcoding/mySpringWeb/dto/MusicList.java
@@ -0,0 +1,16 @@
+package kr.ajou.prcoding.mySpringWeb.dto;
+
+import java.util.List;
+import java.util.Map;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Getter
+@Setter
+@ToString
+public class MusicList {
+    private Integer resultCount;
+    private List<Map<String, Object>> results;
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 8b13789..994755e 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,11 @@
+server.port = 8098
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.url=jdbc:mysql://210.107.196.163:41898/webdev?serverTimezone=UTC
+spring.datasource.username=root
+spring.datasource.password=ussr1285
 
+spring.jpa.properties.hibernate.show_sql=true
+spring.jpa.properties.hibernate.format_sql=true
+logging.level.org.hibernate.type.descriptor.sql=trace
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
-- 
GitLab