Ver Fonte

oss-api 的 StoreService 中添加一个根据 objectUrl 获取 signedUrl 的方法

reghao há 6 meses atrás
pai
commit
e0e07d0615

+ 1 - 0
oss-api/src/main/java/cn/reghao/oss/api/iface/StoreService.java

@@ -30,6 +30,7 @@ public interface StoreService {
 
     ObjectInfo getObjectInfo(String objectId) throws Exception;
     String getSignedUrl(String domain, int owner, String objectId, int expire) throws Exception;
+    String getSignedUrl(String objectUrl, int owner, int expire) throws Exception;
 
     VideoInfo getVideoInfo(String objectId) throws Exception;
     ImageInfo getImageInfo(String objectId) throws Exception;

+ 16 - 1
oss-store/src/main/java/cn/reghao/oss/store/rpc/StoreServiceImpl.java

@@ -156,7 +156,7 @@ public class StoreServiceImpl implements StoreService {
     public String getSignedUrl(String domain, int owner, String objectId, int expire) throws Exception {
         ObjectMeta objectMeta = objectRepository.getObjectMetaById(objectId);
         if (objectMeta == null) {
-            String errMsg = String.format("%s not exist in oss-store", objectId);
+            String errMsg = String.format("objectId %s not exist in oss-store", objectId);
             throw new Exception(errMsg);
         }
 
@@ -164,6 +164,21 @@ public class StoreServiceImpl implements StoreService {
         return signService.getSignedUrl(owner, url, expire);
     }
 
+    @Override
+    public String getSignedUrl(String objectUrl, int owner, int expire) throws Exception {
+        // //oss.reghao.cn/file/abc/def
+        String objectUrl1 = objectUrl.replace("//", "");
+        int idx = objectUrl1.indexOf("/");
+        String domain = objectUrl1.substring(0, idx);
+        String objectName = objectUrl1.substring(idx+1);
+        ObjectMeta objectMeta = objectRepository.getObjectMetaByName(objectName, owner);
+        if (objectMeta == null) {
+            String errMsg = String.format("objectName %s not exist in oss-store", objectName);
+            throw new Exception(errMsg);
+        }
+        return signService.getSignedUrl(owner, objectUrl, expire);
+    }
+
     @Override
     public VideoInfo getVideoInfo(String objectId) throws Exception {
         VideoInfo videoInfo = mediaFileProcessor.getVideoInfo(objectId);