Compare commits

...
9 Commits
Author SHA1 Message Date
niko 2747330a12 fix tellStop and tellWait 2025-04-18 15:23:45 +08:00
niko 1772fad042 add task file 2025-04-04 20:31:49 +08:00
niko 4e543be55b fix get task status 2025-02-17 20:40:16 +08:00
niko 028147ab18 task add following 2025-02-17 09:58:41 +00:00
niko 73b4e9a2c9 fix deserialize 2025-02-14 09:36:14 +00:00
niko 21b36199a6 remove test 2025-02-14 09:15:09 +00:00
niko 41c911c8e9 add GlobalStat 2025-02-13 07:47:37 +00:00
niko f02f21a6dd fix get name 2025-02-13 05:51:15 +00:00
niko 6e32270dc6 support get task name 2025-02-12 09:56:47 +00:00
6 changed files with 168 additions and 47 deletions
@@ -1,9 +1,10 @@
package cn.montaro.aria2;
import cn.montaro.aria2.annotation.Aria2Method;
import cn.montaro.aria2.bean.GlobalStat;
import cn.montaro.aria2.bean.Task;
import cn.montaro.aria2.bean.TaskFile;
import cn.montaro.aria2.constants.Aria2MethodName;
import cn.montaro.aria2.resp.Aria2Status;
import java.util.List;
import java.util.Map;
@@ -66,13 +67,13 @@ public interface Aria2Client {
// TODO: define return type
@Aria2Method(Aria2MethodName.TELL_STATUS)
Aria2Status tellStatus(String gid, String... keys);
Task tellStatus(String gid, String... keys);
@Aria2Method(Aria2MethodName.GET_URIS)
String getUris(String gid);
@Aria2Method(Aria2MethodName.GET_FILES)
String getFiles(String gid);
List<TaskFile> getFiles(String gid);
@Aria2Method(Aria2MethodName.GET_PEERS)
String getPeers(String gid);
@@ -84,10 +85,10 @@ public interface Aria2Client {
List<Task> tellActive(String... keys);
@Aria2Method(Aria2MethodName.TELL_WAITING)
String tellWaiting(int offset, int num, String... keys);
List<Task> tellWaiting(int offset, int num, String... keys);
@Aria2Method(Aria2MethodName.TELL_STOPPED)
String tellStopped(int offset, int num, String... keys);
List<Task> tellStopped(int offset, int num, String... keys);
@Aria2Method(Aria2MethodName.CHANGE_POSITION)
Integer changePosition(String gid, Integer pos, String how);
@@ -108,7 +109,7 @@ public interface Aria2Client {
String changeGlobalOption(Map<String, String> options);
@Aria2Method(Aria2MethodName.GET_GLOBAL_STAT)
String getGlobalStat();
GlobalStat getGlobalStat();
@Aria2Method(Aria2MethodName.PURGE_DOWNLOAD_RESULT)
String purgeDownloadResult();
@@ -0,0 +1,64 @@
package cn.montaro.aria2.bean;
public class GlobalStat {
private Long downloadSpeed;
private Integer numActive;
private Integer numStopped;
private Integer numStoppedTotal;
private Integer numWaiting;
private Integer uploadSpeed;
public Integer getUploadSpeed() {
return uploadSpeed;
}
public void setUploadSpeed(Integer uploadSpeed) {
this.uploadSpeed = uploadSpeed;
}
public Integer getNumWaiting() {
return numWaiting;
}
public void setNumWaiting(Integer numWaiting) {
this.numWaiting = numWaiting;
}
public Integer getNumStoppedTotal() {
return numStoppedTotal;
}
public void setNumStoppedTotal(Integer numStoppedTotal) {
this.numStoppedTotal = numStoppedTotal;
}
public Integer getNumStopped() {
return numStopped;
}
public void setNumStopped(Integer numStopped) {
this.numStopped = numStopped;
}
public Integer getNumActive() {
return numActive;
}
public void setNumActive(Integer numActive) {
this.numActive = numActive;
}
public Long getDownloadSpeed() {
return downloadSpeed;
}
public void setDownloadSpeed(Long downloadSpeed) {
this.downloadSpeed = downloadSpeed;
}
}
@@ -1,6 +1,7 @@
package cn.montaro.aria2.bean;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
public class Task implements Serializable {
@@ -17,6 +18,39 @@ public class Task implements Serializable {
private String status;
private String following;
private String dir;
private List<TaskFile> files;
public String getDir() {
return dir;
}
public void setDir(String dir) {
this.dir = dir;
}
public List<TaskFile> getFiles() {
return files;
}
public void setFiles(List<TaskFile> files) {
this.files = files;
}
public String getName() {
if (Objects.isNull(dir) || this.files.isEmpty()) {
return "";
}
String name = files.get(0).getPath().replace(dir + "/", "");
if (name.length() <= 20) {
return String.format("%-20s", name);
}
return name.substring(0, 17) + "...";
}
public int getProgress() {
if (Objects.isNull(completedLength)
|| completedLength == 0
@@ -75,4 +109,11 @@ public class Task implements Serializable {
this.completedLength = completedLength;
}
public String getFollowing() {
return following;
}
public void setFollowing(String following) {
this.following = following;
}
}
@@ -0,0 +1,44 @@
package cn.montaro.aria2.bean;
public class TaskFile {
private int index;
private Long length;
private String path;
private Long completedLength;
public Long getLength() {
return length;
}
public void setLength(Long length) {
this.length = length;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public Long getCompletedLength() {
return completedLength;
}
public void setCompletedLength(Long completedLength) {
this.completedLength = completedLength;
}
}
@@ -79,11 +79,20 @@ public class Aria2HttpProxy implements InvocationHandler {
}
private Object deserialize(String json, Type resultType) {
if (resultType.equals(String.class)) {
return json;
}
JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();
JsonElement result = jsonObject.get("result");
if (Objects.isNull(result)) {
return null;
}
if (resultType.equals(String.class)) {
if (result.isJsonPrimitive()) {
return result.getAsJsonPrimitive().getAsString();
}
return json;
}
return gson.fromJson(result, resultType);
}
-38
View File
@@ -1,38 +0,0 @@
import cn.hutool.core.collection.ListUtil;
import cn.montaro.aria2.Aria2Client;
import cn.montaro.aria2.Aria2ClientFactory;
import cn.montaro.aria2.Aria2Config;
import cn.montaro.aria2.resp.Aria2Status;
import org.junit.Test;
import java.util.List;
public class Aria2ClientTest {
Aria2Config config = new Aria2Config()
.setHost("localhost")
.setSecret("123456");
Aria2Client client = Aria2ClientFactory.httpClient(config);
@Test
public void test() {
String gid = client.addUri(ListUtil.of("magnet:?xt=urn:btih:308f0122b1c3af5db9f3660775a6a2d81bd1e120"), null, null);
System.out.println("gid = " + gid);
}
@Test
public void status() {
String gid = "acc1c7d7c2043dba";
Aria2Status status = client.tellStatus(gid);
System.out.println(status);
List<String> followedBy = status.getFollowedBy();
if (followedBy != null && followedBy.size() != 0) {
gid = followedBy.get(0);
status = client.tellStatus(gid);
System.out.println(status);
}
}
}