添加bt与tracker交互
Change-Id: I1327c2ed89a76bee8e2abeb8cb3014b56357689a
diff --git a/src/main/java/com/pt/controller/TrackerController.java b/src/main/java/com/pt/controller/TrackerController.java
new file mode 100644
index 0000000..1e0302d
--- /dev/null
+++ b/src/main/java/com/pt/controller/TrackerController.java
@@ -0,0 +1,36 @@
+package com.pt.controller;
+
+import com.pt.service.TrackerService;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.Map;
+
+@RestController
+public class TrackerController {
+
+ @Autowired
+ private TrackerService trackerService;
+
+ @GetMapping("/announce")
+ public void announce(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ try {
+ String ip = request.getRemoteAddr();
+ Map<String, String[]> params = request.getParameterMap();
+
+ byte[] bencodedResponse = trackerService.handleAnnounce(params, ip);
+
+ response.setContentType("application/x-bittorrent");
+ response.getOutputStream().write(bencodedResponse);
+ } catch (Exception e) {
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ response.setContentType("text/plain");
+ response.getWriter().write("Tracker internal error: " + e.getMessage());
+ }
+ }
+
+}
+