blob: a683b0e9f9fb29d33fa00c172bef64f1406e5436 [file] [log] [blame]
package api;
import java.io.File;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import database.Database1;
import entity.Seed;
import tracker.Tracker;
@RestController
public class ApiController implements ApiInterface {
private static Database1 db;
private static Tracker tracker;
@Override
public ResponseEntity<Integer> saveTorrent(
@RequestParam("userid") String userid,
@RequestParam("title") String title,
@RequestParam("tag") String tag,
@RequestParam("file") MultipartFile file
) {
try {
Seed seed = new Seed();
seed.seedid = "exampleSeedId"; // 示例种子ID
seed.seeduserid = userid; // 示例用户ID
seed.title = title; // 示例标题
seed.seedsize = "1GB"; // 示例种子大小
seed.seedtag = tag; // 示例标签
seed.url = "http://example.com/torrent"; // 示例URL
db = new Database1();
tracker = new Tracker();
int ret = db.RegisterSeed(seed);
System.out.println("RegisterSeed ret: " + ret);
System.out.println(seed.seedid + " " + seed.seeduserid + " " + seed.title + " " + seed.seedsize + " " + seed.seedtag + " " + seed.url);
// Convert MultipartFile to File
File tempFile = File.createTempFile(seed.seedid, file.getOriginalFilename());
file.transferTo(tempFile);
tracker.SaveTorrent(seed.seedid, tempFile);
// Optionally, delete the temp file after saving if not needed
// tempFile.delete();
return ResponseEntity.ok(0); // 返回 0 表示成功
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(500).body(1); // 返回 1 表示失败
}
}
@Override
public ResponseEntity<Resource> getTorrent(
@RequestParam("seedid") String seedid,
@RequestParam("userid") String userid,
@RequestParam("ip") String ip
) {
// 实现获取种子文件的逻辑
// 示例:从本地目录中查找文件
tracker = new Tracker();
File file = tracker.GetTTorent(seedid, userid, ip);
if (file != null) {
FileSystemResource resource = new FileSystemResource(file);
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"")
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
} else {
return ResponseEntity.notFound().build(); // 返回 404 表示文件未找到
}
}
}