blob: edae09f76d6cda1a535dec31e1a1744693ae9ff5 [file] [log] [blame]
Edwardsamaxlf1bf7ad2025-06-03 23:52:16 +08001package com.pt.controller;
2
3import com.pt.service.TrackerService;
4import jakarta.servlet.http.HttpServletRequest;
5import jakarta.servlet.http.HttpServletResponse;
6import org.springframework.beans.factory.annotation.Autowired;
7import org.springframework.web.bind.annotation.*;
8
9import java.io.IOException;
10import java.util.Map;
11
12@RestController
22301102d526daa2025-06-07 10:53:27 +080013@CrossOrigin(origins = "*")
14@RequestMapping("/api/tracker")
Edwardsamaxlf1bf7ad2025-06-03 23:52:16 +080015public class TrackerController {
16
17 @Autowired
18 private TrackerService trackerService;
19
20 @GetMapping("/announce")
21 public void announce(HttpServletRequest request, HttpServletResponse response) throws IOException {
22 try {
23 String ip = request.getRemoteAddr();
24 Map<String, String[]> params = request.getParameterMap();
25
26 byte[] bencodedResponse = trackerService.handleAnnounce(params, ip);
27
28 response.setContentType("application/x-bittorrent");
29 response.getOutputStream().write(bencodedResponse);
30 } catch (Exception e) {
31 response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
32 response.setContentType("text/plain");
33 response.getWriter().write("Tracker internal error: " + e.getMessage());
34 }
35 }
36
37}
38