finish handleAnnounce and fix bugs in torrent upload(using ISO_8859_1)
Change-Id: Ic2da7cef878bb7aa66184f04058bb2db2393190e
diff --git a/src/main/java/com/example/g8backend/controller/TrackerController.java b/src/main/java/com/example/g8backend/controller/TrackerController.java
index 1511c76..4e26abb 100644
--- a/src/main/java/com/example/g8backend/controller/TrackerController.java
+++ b/src/main/java/com/example/g8backend/controller/TrackerController.java
@@ -1,7 +1,9 @@
package com.example.g8backend.controller;
+import com.example.g8backend.dto.AnnounceRequestDTO;
+import com.example.g8backend.dto.AnnounceResponseDTO;
+import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import com.example.g8backend.service.ITrackerService;
@@ -13,21 +15,41 @@
@Autowired
private ITrackerService trackerService;
- @Autowired
- private RedisTemplate<String, Object> redisTemplate;
-
@GetMapping("/announce/{passkey}")
- public ResponseEntity<?> getAnnouncements(
- @RequestParam(name = "info_hash") String infoHash,
- @RequestParam(name = "peer_id") String peerId,
- @RequestParam(name = "port") int port,
- @RequestParam(name = "uploaded") long uploaded,
- @RequestParam(name = "downloaded") long downloaded,
- @RequestParam(name = "left") long left,
- @RequestParam(name = "compact", required = false) int compact,
- @RequestParam(name = "event", required = false) String event,
+ public ResponseEntity<AnnounceResponseDTO> getAnnouncements(
+ HttpServletRequest request,
+ @RequestParam("info_hash") String infoHash,
+ @RequestParam("peer_id") String peerId,
+ @RequestParam("port") int port,
+ @RequestParam("uploaded") double uploaded,
+ @RequestParam("downloaded") double downloaded,
+ @RequestParam(value = "event", required = false) String event,
+ @RequestParam(value = "left", required = false) Double left,
+ @RequestParam(value = "compact", required = false) Integer compact,
@PathVariable String passkey) {
- return null;
+ AnnounceRequestDTO requestDTO = new AnnounceRequestDTO();
+ requestDTO.setPasskey(passkey);
+ requestDTO.setInfoHash(infoHash);
+ requestDTO.setPeerId(peerId);
+ requestDTO.setPort(port);
+ requestDTO.setUploaded(uploaded);
+ requestDTO.setDownloaded(downloaded);
+ requestDTO.setEvent(event);
+ requestDTO.setLeft(left);
+ requestDTO.setCompact(compact);
+
+ String ipAddress = request.getHeader("X-Forwarded-For");
+ if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("Proxy-Client-IP");
+ }
+ if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getRemoteAddr();
+ }
+ requestDTO.setIp(ipAddress.split(",")[0]);
+ return ResponseEntity.ok(trackerService.handleAnnounce(requestDTO));
}
}