blob: 1e0302d42da967dce5e27602c8cc50c88f2fede2 [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
13public class TrackerController {
14
15 @Autowired
16 private TrackerService trackerService;
17
18 @GetMapping("/announce")
19 public void announce(HttpServletRequest request, HttpServletResponse response) throws IOException {
20 try {
21 String ip = request.getRemoteAddr();
22 Map<String, String[]> params = request.getParameterMap();
23
24 byte[] bencodedResponse = trackerService.handleAnnounce(params, ip);
25
26 response.setContentType("application/x-bittorrent");
27 response.getOutputStream().write(bencodedResponse);
28 } catch (Exception e) {
29 response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
30 response.setContentType("text/plain");
31 response.getWriter().write("Tracker internal error: " + e.getMessage());
32 }
33 }
34
35}
36