-
Notifications
You must be signed in to change notification settings - Fork 174
/
ChecksumAlgorithm.java
70 lines (61 loc) · 1.89 KB
/
ChecksumAlgorithm.java
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
68
69
70
/*
* Copyright 2017-2024 Adobe.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.adobe.testing.s3mock.dto;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import software.amazon.awssdk.core.checksums.Algorithm;
public enum ChecksumAlgorithm {
CRC32("CRC32"),
CRC32C("CRC32C"),
SHA1("SHA1"),
SHA256("SHA256");
private final String value;
@JsonCreator
ChecksumAlgorithm(String value) {
this.value = value;
}
public static ChecksumAlgorithm fromString(String value) {
return switch (value) {
case "sha256", "SHA256" -> SHA256;
case "sha1", "SHA1" -> SHA1;
case "crc32", "CRC32" -> CRC32;
case "crc32c", "CRC32C" -> CRC32C;
default -> null;
};
}
public static ChecksumAlgorithm fromHeader(String value) {
return switch (value) {
case "x-amz-checksum-sha256" -> SHA256;
case "x-amz-checksum-sha1" -> SHA1;
case "x-amz-checksum-crc32" -> CRC32;
case "x-amz-checksum-crc32c" -> CRC32C;
default -> null;
};
}
public Algorithm toAlgorithm() {
return switch (this) {
case CRC32 -> Algorithm.CRC32;
case CRC32C -> Algorithm.CRC32C;
case SHA1 -> Algorithm.SHA1;
case SHA256 -> Algorithm.SHA256;
};
}
@Override
@JsonValue
public String toString() {
return String.valueOf(this.value);
}
}