刘光辉
3 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package jnpf.dmsEntity.preview.model;
 
import jnpf.dmsEntity.preview.enums.DmsPreviewFormat;
import jnpf.dmsEntity.storage.model.DmsPersistentPdfSource;
import jnpf.util.JsonUtil;
import lombok.Data;
 
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
 
@Data
public class DmsFilePreviewTicket {
    public static final String SCOPE = "dms:onlyoffice:preview";
    public static final String PRINT_SCOPE = "dms:onlyoffice:print";
    public static final String PRINT_BASE_SCOPE = "dms:onlyoffice:print-base";
 
    private String scope;
    private String tenantId;
    private String userId;
    private UUID fileVersionId;
    private String fileName;
    private String mimeType;
    private Long sizeBytes;
    private String storagePlatform;
    private String bucketName;
    private String basePath;
    private String objectPath;
    private String objectName;
    private DmsPersistentPdfSource pdfSource;
    private DmsPreviewFormat previewFormat;
    /** Original physical pages requested for printing, for example 1-3,5. */
    private String printPages;
    private List<DmsWatermarkSnapshot> watermarks = new ArrayList<>();
    /** Set only by a permission-checked historical issuance; absent legacy value means current use. */
    private boolean historicalAccess;
    private long expiresAt;
 
    public static DmsFilePreviewTicket fromRaw(Object raw) {
        if (!(raw instanceof String) || isBlank((String) raw)) {
            throw new IllegalArgumentException("DMS 预览票据无效");
        }
        DmsFilePreviewTicket payload;
        try {
            payload = JsonUtil.getJsonToBean((String) raw, DmsFilePreviewTicket.class);
        } catch (RuntimeException exception) {
            throw new IllegalArgumentException("DMS 预览票据无效", exception);
        }
        if (payload == null || !isSupportedScope(payload.getScope())
                || isBlank(payload.getTenantId()) || isBlank(payload.getUserId())
                || payload.getFileVersionId() == null || isBlank(payload.getFileName())
                || isBlank(payload.getStoragePlatform()) || isBlank(payload.getBucketName())
                || isBlank(payload.getObjectPath()) || isBlank(payload.getObjectName())
                || payload.getExpiresAt() <= System.currentTimeMillis()) {
            throw new IllegalArgumentException("DMS 预览票据无效或已过期");
        }
        return payload;
    }
 
    private static boolean isSupportedScope(String scope) {
        return SCOPE.equals(scope) || PRINT_SCOPE.equals(scope) || PRINT_BASE_SCOPE.equals(scope);
    }
 
    private static boolean isBlank(String value) {
        return value == null || value.trim().isEmpty();
    }
}