/
OAuth2SchemeValidator.java
63 lines (59 loc) · 1.87 KB
/
OAuth2SchemeValidator.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
package springfox.documentation.builders;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
public class OAuth2SchemeValidator<T> implements Validator<OAuth2SchemeBuilder> {
@Override
public List<ValidationResult> validate(OAuth2SchemeBuilder builder) {
List<ValidationResult> results = new ArrayList<>();
if (builder.name == null) {
results.add(
new ValidationResult(
"OAuth2Scheme",
"name",
"Parameter name is required"));
}
if (builder.flowType == null) {
results.add(new ValidationResult(
"OAuth2Scheme",
"flowType",
"Flow type is required"));
}
switch (builder.flowType) {
case "implicit":
requiredAttribute(results, "authorizationUrl", builder.authorizationUrl);
break;
case "password":
case "clientCredentials":
requiredAttribute(results, "tokenUrl", builder.tokenUrl);
break;
case "authorizationCode":
requiredAttribute(results, "authorizationUrl", builder.authorizationUrl);
requiredAttribute(results, "tokenUrl", builder.tokenUrl);
break;
default:
results.add(new ValidationResult(
"OAuth2Scheme",
"flowType",
"Flow type should be one of (implicit, password, clientCredentials, authorizationCode)"));
}
if (builder.scopes.isEmpty()) {
results.add(new ValidationResult(
"OAuth2Scheme",
"scopes",
"Scopes are required"));
}
return results;
}
private void requiredAttribute(
List<ValidationResult> results,
String name,
String value) {
if (StringUtils.isEmpty(value)) {
results.add(new ValidationResult(
"OAuth2Scheme",
"name",
String.format("Parameter %s is required", name)));
}
}
}