Przeglądaj źródła

oss-sdk 中添加和 oss-api 相同的接口, 但调用 oss-web 提供的接口

reghao 2 lat temu
rodzic
commit
667514efb0

+ 86 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectService.java

@@ -0,0 +1,86 @@
+package cn.reghao.oss.sdk;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.oss.api.dto.*;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 09:20:18
+ */
+public class ObjectService {
+    private final String endpoint;
+    private final HttpClient httpClient = HttpClient.newBuilder().build();
+
+    public ObjectService(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public ObjectInfo getObjectInfo(String objectId) throws Exception {
+        String api = String.format("%s/api/oss/object/info?objectId=%s", endpoint, objectId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<ObjectInfo>>(){}.getType();
+        WebResult<ObjectInfo> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public DownloadUrl getDownloadUrl(String objectId, int channelId, long userId) throws Exception {
+        String api = String.format("%s/api/oss/object/url?objectId=%s&channelId=%s&userId=%s", endpoint, objectId, channelId, userId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<DownloadUrl>>(){}.getType();
+        WebResult<DownloadUrl> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public void putObjectPrefix(ObjectPrefix objectPrefix) {
+    }
+
+    public List<String> getObjectPrefix() {
+        return Collections.emptyList();
+    }
+
+    public ObjectMeta getObject(String objectName) {
+        return null;
+    }
+
+    public ObjectUrl getObjectUrl(String objectId) {
+        return null;
+    }
+}

+ 0 - 3
oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectUploadService.java

@@ -1,7 +1,6 @@
 package cn.reghao.oss.sdk;
 
 import cn.reghao.jutil.jdk.http.UploadParam;
-import cn.reghao.jutil.jdk.http.WebRequest;
 import cn.reghao.jutil.jdk.http.WebResponse;
 import cn.reghao.jutil.jdk.result.WebResult;
 import cn.reghao.jutil.jdk.security.DigestUtil;
@@ -13,7 +12,6 @@ import lombok.extern.slf4j.Slf4j;
 
 import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Type;
 import java.net.URI;
@@ -22,7 +20,6 @@ import java.net.http.HttpRequest;
 import java.net.http.HttpResponse;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.security.NoSuchAlgorithmException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Supplier;

+ 47 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/OssServerService.java

@@ -0,0 +1,47 @@
+package cn.reghao.oss.sdk;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.oss.api.dto.ServerInfo;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 09:15:51
+ */
+public class OssServerService {
+    private final String endpoint;
+    private final HttpClient httpClient = HttpClient.newBuilder().build();
+
+    public OssServerService(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public ServerInfo getServerInfo(long userId, int channelId) throws Exception {
+        String api = String.format("%s/api/oss/server/info?userId=%s&channelId=%s", endpoint, userId, channelId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<ServerInfo>>(){}.getType();
+        WebResult<ServerInfo> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+}

+ 71 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/media/AudioFileService.java

@@ -0,0 +1,71 @@
+package cn.reghao.oss.sdk.media;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.oss.api.dto.media.AudioInfo;
+import cn.reghao.oss.api.dto.media.AudioUrl;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 09:00:31
+ */
+public class AudioFileService {
+    private final String endpoint;
+    private final HttpClient httpClient = HttpClient.newBuilder().build();
+
+    public AudioFileService(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public AudioInfo getAudioInfo(String audioFileId) throws Exception {
+        String api = String.format("%s/api/media/audio/info/%s", endpoint, audioFileId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<AudioInfo>>(){}.getType();
+        WebResult<AudioInfo> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public List<AudioUrl> getAudioUrls(String audioFileId, long loginUser) throws Exception {
+        String api = String.format("%s/api/media/audio/url?audioFileId=%s&userId=%s", endpoint, audioFileId, loginUser);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<List<AudioUrl>>>(){}.getType();
+        WebResult<List<AudioUrl>> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+}

+ 56 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/media/ConvertService.java

@@ -0,0 +1,56 @@
+package cn.reghao.oss.sdk.media;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.oss.sdk.MultiPartBodyPublisher;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 09:16:59
+ */
+public class ConvertService {
+    private final String endpoint;
+    private final HttpClient httpClient = HttpClient.newBuilder().build();
+
+    public ConvertService(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public void convertVideo(String videoFileId) throws Exception {
+        String api = String.format("%s/api/media/convert/video/%s", endpoint, videoFileId);
+        convert(api);
+    }
+
+    public void convertAudio(String audioFileId) throws Exception {
+        String api = String.format("%s/api/media/convert/audio/%s", endpoint, audioFileId);
+        convert(api);
+    }
+
+    private void convert(String api) throws Exception {
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+}

+ 165 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/media/ImageFileService.java

@@ -0,0 +1,165 @@
+package cn.reghao.oss.sdk.media;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.oss.api.dto.media.ImageUrlDto;
+import cn.reghao.oss.sdk.MultiPartBodyPublisher;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 08:58:56
+ */
+public class ImageFileService {
+    private final String endpoint;
+    private final HttpClient httpClient = HttpClient.newBuilder().build();
+
+    public ImageFileService(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public void deleteByObjectNames(List<String> objectNames) throws Exception {
+        String api = String.format("%s/api/media/image/delete/name", endpoint);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        publisher.addPart("objectNames", objectNames.toString());
+
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+
+    public void deleteByImageFileIds(List<String> imageFileIds) throws Exception {
+        String api = String.format("%s/api/media/image/delete/id", endpoint);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        publisher.addPart("imageFileIds", imageFileIds.toString());
+
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+
+    public ImageUrlDto getImageUrl(int channelId, String imageFileId) throws Exception {
+        String api = String.format("%s/api/media/image/url?channelId=%s&imageFileId=%s", endpoint, channelId, imageFileId);
+        //String api = String.format("%s/api/media/image/url?channelId=%s&imageFileId=%s&loginUser=%s", endpoint, channelId, imageFileId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<ImageUrlDto>>(){}.getType();
+        WebResult<ImageUrlDto> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public ImageUrlDto getImageUrl(String imageFileId, long loginUser, int channelId) throws Exception {
+        String api = String.format("%s/api/media/image/url?channelId=%s&imageFileId=%s&loginUser=%s", endpoint, channelId, imageFileId, loginUser);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<ImageUrlDto>>(){}.getType();
+        WebResult<ImageUrlDto> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public List<ImageUrlDto> getImageUrls(Set<String> imageFileIds) throws Exception {
+        String api = String.format("%s/api/media/image/urls?imageFileIds=%s", endpoint, imageFileIds.toString());
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<List<ImageUrlDto>>>(){}.getType();
+        WebResult<List<ImageUrlDto>> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public String getSignedUrl(String url, long loginUser, int channelId) throws Exception {
+        String api = String.format("%s/api/media/image/signedurl?channelId=%s&url=%s&loginUser=%s", endpoint, channelId, url, loginUser);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+}

+ 157 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/media/MediaScopeService.java

@@ -0,0 +1,157 @@
+package cn.reghao.oss.sdk.media;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.oss.sdk.MultiPartBodyPublisher;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 09:16:27
+ */
+public class MediaScopeService {
+    private final String endpoint;
+    private final HttpClient httpClient = HttpClient.newBuilder().build();
+
+    public MediaScopeService(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    @Deprecated
+    public void setVideoScope(String videoFileId, int scope) throws Exception {
+        String api = String.format("%s/api/media/scope/video", endpoint);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        publisher.addPart("videoId", videoFileId);
+        publisher.addPart("scope", scope+"");
+
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+
+    @Deprecated
+    public void setAudioScope(String audioFileId, int scope) throws Exception {
+        String api = String.format("%s/api/media/scope/audio", endpoint);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        publisher.addPart("audioFileId", audioFileId);
+        publisher.addPart("scope", scope+"");
+
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+
+    @Deprecated
+    public void setImagesScope(Set<String> imageFileIds, int scope) throws Exception {
+        String api = String.format("%s/api/media/scope/image", endpoint);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        publisher.addPart("imageFileIds", imageFileIds.toString());
+        publisher.addPart("scope", scope+"");
+
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+
+    public void setObjectScope(int scope, String objectId, int contentType) throws Exception {
+        String api = String.format("%s/api/media/scope/object", endpoint);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        publisher.addPart("scope", scope+"");
+        publisher.addPart("objectId", objectId);
+        publisher.addPart("contentType", contentType+"");
+
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+
+    public void setObjectsScope(int scope, List<String> objectIds, int contentType) throws Exception {
+        String api = String.format("%s/api/media/scope/objects", endpoint);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+
+        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
+        publisher.addPart("scope", scope+"");
+        publisher.addPart("objectIds", objectIds.toString());
+        publisher.addPart("contentType", contentType+"");
+
+        HttpRequest httpRequest = builder.POST(publisher.build()).build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+}

+ 114 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/media/VideoFileService.java

@@ -0,0 +1,114 @@
+package cn.reghao.oss.sdk.media;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.oss.api.dto.media.VideoInfo;
+import cn.reghao.oss.api.dto.media.VideoUrlDto;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 08:57:44
+ */
+public class VideoFileService {
+    private final String endpoint;
+    private final HttpClient httpClient = HttpClient.newBuilder().build();
+
+    public VideoFileService(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public void deleteVideoFile(String videoFileId) throws Exception {
+        String api = String.format("%s/api/media/video/delete/%s", endpoint, videoFileId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.DELETE().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<String>>(){}.getType();
+        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+    }
+
+    public VideoInfo getVideoInfo(String videoFileId) throws Exception {
+        String api = String.format("%s/api/media/video/info/%s", endpoint, videoFileId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<VideoInfo>>(){}.getType();
+        WebResult<VideoInfo> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser) throws Exception {
+        String api = String.format("%s/api/media/video/url?videoFileId=%s&userId=%s", endpoint, videoFileId, loginUser);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<List<VideoUrlDto>>>(){}.getType();
+        WebResult<List<VideoUrlDto>> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
+    public LocalDateTime getCreateTime(String videoFileId) throws Exception {
+        String api = String.format("%s/api/media/video/time/%s", endpoint, videoFileId);
+        HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
+        HttpRequest httpRequest = builder.GET().build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<LocalDateTime>>(){}.getType();
+        WebResult<LocalDateTime> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+}

+ 8 - 1
oss-sdk/src/test/java/ObjectTest.java

@@ -1,7 +1,9 @@
 import cn.reghao.oss.api.constant.UploadChannel;
+import cn.reghao.oss.api.dto.ServerInfo;
 import cn.reghao.oss.api.rest.UploadFileRet;
 import cn.reghao.oss.sdk.ObjectMultipartUploadService;
 import cn.reghao.oss.sdk.ObjectUploadService;
+import cn.reghao.oss.sdk.OssServerService;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.*;
@@ -38,6 +40,11 @@ public class ObjectTest {
     public static void main(String[] args) throws Exception {
         String filePath = "";
         File file = new File(filePath);
-        objectUploadService.postObjectWithJdkHttp(file, UploadChannel.image.getCode(), 10000);
+        //objectUploadService.postObjectWithJdkHttp(file, UploadChannel.image.getCode(), 10000);
+        String endpoint = "http://ossweb.reghao.cn";
+
+        OssServerService ossServerService = new OssServerService(endpoint);
+        ServerInfo serverInfo = ossServerService.getServerInfo(10000, UploadChannel.image.getCode());
+        System.out.println();
     }
 }