reghao 3 rokov pred
rodič
commit
9ba4c7abd4

+ 37 - 0
dfs-api/pom.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>cn.reghao.dfs</groupId>
+    <artifactId>dfs-api</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.6</version>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <version>2.0.1.Final</version>
+        </dependency>
+    </dependencies>
+
+    <distributionManagement>
+        <repository>
+            <id>maven-local-hosted</id>
+            <url>http://nexus.reghao.cn/repository/maven-local-hosted/</url>
+        </repository>
+    </distributionManagement>
+</project>

+ 25 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/BucketInfo.java

@@ -0,0 +1,25 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-05 16:37:57
+ */
+@Getter
+@Setter
+public class BucketInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String region;
+    private String location;
+    private String name;
+    private String storageClass;
+    private Long creationDate;
+    private String extranetEndpoint;
+    private String intranetEndpoint;
+    private Owner owner;
+}

+ 25 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/BucketListResult.java

@@ -0,0 +1,25 @@
+package cn.reghao.dfs.api.dto;
+
+import cn.reghao.dfs.api.dto.BucketInfo;
+import lombok.Getter;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2023-01-05 16:37:43
+ */
+@Getter
+public class BucketListResult implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private List<BucketInfo> buckets;
+    private List<Object> failedRegions;
+
+    public BucketListResult(List<BucketInfo> buckets) {
+        this.buckets = buckets;
+        this.failedRegions = Collections.emptyList();
+    }
+}

+ 20 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/BucketRegion.java

@@ -0,0 +1,20 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-06 10:53:32
+ */
+@Setter
+@Getter
+public class BucketRegion implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String bucket;
+    private String region;
+    private String regionName;
+}

+ 34 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/CreateBucket.java

@@ -0,0 +1,34 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-05 09:09:52
+ */
+@Setter
+@Getter
+public class CreateBucket implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String umid;
+    private String token;
+    private String secToken;
+    private String collina;
+    private String region;
+    @NotBlank
+    private String bucket;
+    private String storage;
+    private String acl;
+    private String dataRedundancyType;
+    private Boolean openSls;
+    private String algorithm;
+    private Boolean openHbr;
+    private String keyId;
+    private String kmsEncryptionAlgorithm;
+    private String resourceGroupId;
+}

+ 27 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/CreateFolder.java

@@ -0,0 +1,27 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-03 10:47:19
+ */
+@Setter
+@Getter
+public class CreateFolder implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String umid;
+    private String token;
+    private String secToken;
+    private String collina;
+    private String region;
+    private String bucket;
+    @NotBlank
+    //@Pattern(regexp = "")
+    private String objectName;
+}

+ 20 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/FileIcon.java

@@ -0,0 +1,20 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-03 14:30:46
+ */
+@Setter
+@Getter
+public class FileIcon implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    private String icon;
+    private String iconLarge;
+}

+ 29 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/GetObjects.java

@@ -0,0 +1,29 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-03 10:06:08
+ */
+@Setter
+@Getter
+public class GetObjects implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @NotBlank
+    private String bucket;
+    private String region;
+    @NotNull
+    private String prefix;
+    private String marker;
+    @NotNull
+    private Integer maxKeys;
+    private String delimiter;
+    private Boolean logInfo;
+}

+ 24 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/GetObjectsResult.java

@@ -0,0 +1,24 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2023-01-02 17:48:44
+ */
+@Setter
+@Getter
+public class GetObjectsResult implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String bucketName;
+    private String delimiter;
+    private Integer maxKeys;
+    private Long objectSize;
+    private Boolean truncated;
+    private List<ObjectJson> objectList;
+}

+ 20 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/HeadObject.java

@@ -0,0 +1,20 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-03 10:42:33
+ */
+@Setter
+@Getter
+public class HeadObject implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String bucket;
+    private String region;
+    private String objectName;
+}

+ 23 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/HeadObjectResult.java

@@ -0,0 +1,23 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-03 10:42:33
+ */
+@Setter
+@Getter
+public class HeadObjectResult implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String contentType;
+    private Long contentLength;
+    private String eTag;
+    private Long lastModified;
+    private String storageClass;
+    private String userMeta;
+}

+ 19 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/KeyValue.java

@@ -0,0 +1,19 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-05 14:15:39
+ */
+@Setter
+@Getter
+public class KeyValue implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String key;
+    private String value;
+}

+ 28 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/ObjectJson.java

@@ -0,0 +1,28 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-02 17:50:10
+ */
+@NoArgsConstructor
+@Setter
+@Getter
+public class ObjectJson implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Boolean dir;
+    private String name;
+    private String path;
+    private Long size;
+    private String formattedSize;
+    private String objectType;
+    private Integer type;
+    private String storageClass;
+    private long timeModified;
+}

+ 19 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/Owner.java

@@ -0,0 +1,19 @@
+package cn.reghao.dfs.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-05 16:37:03
+ */
+@Getter
+@Setter
+public class Owner implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+    private String displayName;
+}

+ 47 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/VideoUrlDto.java

@@ -0,0 +1,47 @@
+package cn.reghao.dfs.api.dto;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2022-08-05 15:13:40
+ */
+@Deprecated
+public class VideoUrlDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String type;
+    private String url;
+    private String path;
+    private int width;
+    private int height;
+    private String quality;
+
+    public String getType() {
+        return type;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public int getWidth() {
+        return width;
+    }
+
+    public int getHeight() {
+        return height;
+    }
+
+    public String getQuality() {
+        return quality;
+    }
+}

+ 25 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/object/GenerateSignedUrl.java

@@ -0,0 +1,25 @@
+package cn.reghao.dfs.api.dto.object;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-03 10:47:19
+ */
+@Setter
+@Getter
+public class GenerateSignedUrl implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String umid;
+    private String token;
+    private String secToken;
+    private String collina;
+    private String region;
+    private String bucket;
+    private String objectName;
+    private Integer timeout;
+}

+ 19 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/dto/object/GenerateSignedUrlResult.java

@@ -0,0 +1,19 @@
+package cn.reghao.dfs.api.dto.object;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2023-01-03 10:47:19
+ */
+@AllArgsConstructor
+@Getter
+public class GenerateSignedUrlResult implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String url;
+    private String signature;
+}

+ 18 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/iface/BucketService.java

@@ -0,0 +1,18 @@
+package cn.reghao.dfs.api.iface;
+
+import cn.reghao.dfs.api.dto.BucketListResult;
+import cn.reghao.dfs.api.dto.BucketRegion;
+import cn.reghao.dfs.api.dto.CreateBucket;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2022-08-05 15:23:51
+ */
+public interface BucketService {
+    boolean exist(String region, String bucketName);
+    void create(CreateBucket createBucket);
+    BucketListResult list();
+    List<BucketRegion> getBucketRegions();
+}

+ 19 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/iface/ObjectService.java

@@ -0,0 +1,19 @@
+package cn.reghao.dfs.api.iface;
+
+import cn.reghao.dfs.api.dto.*;
+import cn.reghao.dfs.api.dto.object.GenerateSignedUrl;
+import cn.reghao.dfs.api.dto.object.GenerateSignedUrlResult;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2023-01-09 15:35:15
+ */
+public interface ObjectService {
+    List<FileIcon> getFileIcons();
+    GetObjectsResult list(GetObjects getObjects);
+    void createFolder(CreateFolder createFolder);
+    HeadObjectResult head(HeadObject headObject);
+    GenerateSignedUrlResult signedUrl(GenerateSignedUrl generateSignedUrl);
+}

+ 13 - 0
dfs-api/src/main/java/cn/reghao/dfs/api/iface/RegionService.java

@@ -0,0 +1,13 @@
+package cn.reghao.dfs.api.iface;
+
+import cn.reghao.dfs.api.dto.KeyValue;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2023-01-09 16:06:53
+ */
+public interface RegionService {
+    List<KeyValue> list();
+}