-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDefaultAuthUrlBuilder.java
More file actions
101 lines (83 loc) · 3.27 KB
/
DefaultAuthUrlBuilder.java
File metadata and controls
101 lines (83 loc) · 3.27 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package org.scribe.builder.authUrl;
import org.scribe.builder.AuthUrlBuilder;
import org.scribe.model.OAuthConstants;
import org.scribe.utils.OAuthEncoderUtils;
import org.scribe.utils.Preconditions;
/**
*
*/
public class DefaultAuthUrlBuilder implements AuthUrlBuilder {
/** Constant for the start of the query string. */
private static final char INTIAL_PARAMETER_IDENTIFIER = '?';
/** Constant for the equals char. */
private static final char EQUALS = '=';
/** Constant for the next parameter in the query string. */
private static final char PARAMETETER_IDENTIFIER = '&';
private String endpoint;
private String clientId;
private String redirectUrl;
private String scope;
private String state;
private String responseType;
@Override
public AuthUrlBuilder setEndpoint(final String inEndpoint) {
Preconditions.checkValidUrl(inEndpoint, "The endpoint should be a vaild url");
this.endpoint = inEndpoint;
return this;
}
@Override
public AuthUrlBuilder setClientId(final String inClientId) {
Preconditions.checkEmptyString(inClientId, "Client id is required");
this.clientId = inClientId;
return this;
}
@Override
public AuthUrlBuilder setRedirectUrl(final String inRedirectUrl) {
Preconditions.checkValidUrl(inRedirectUrl, "The redirect url should be a valid url");
this.redirectUrl = inRedirectUrl;
return this;
}
@Override
public AuthUrlBuilder setScope(final String inScope) {
this.scope = inScope;
return this;
}
@Override
public AuthUrlBuilder setState(final String inState) {
this.state = inState;
return this;
}
@Override
public AuthUrlBuilder setResponseType(final String inResponseType) {
this.responseType = inResponseType;
return this;
}
@Override
public String build() {
StringBuilder sb = new StringBuilder();
Preconditions.checkValidUrl(endpoint, "A url endpoint is required.");
Preconditions.checkEmptyString(clientId, "Client It is required");
sb.append(endpoint)
.append(INTIAL_PARAMETER_IDENTIFIER)
.append(OAuthConstants.CLIENT_ID.getParamName())
.append(EQUALS)
.append(clientId);
addParameter(sb, OAuthConstants.REDIRECT_URI.getParamName(), OAuthEncoderUtils.encode(redirectUrl));
addOptionalParameter(sb, OAuthConstants.SCOPE.getParamName(), scope);
addOptionalParameter(sb, OAuthConstants.STATE.getParamName(), state);
addOptionalParameter(sb, OAuthConstants.RESPONSE_TYPE.getParamName(), responseType);
return sb.toString();
}
protected void addOptionalParameter(final StringBuilder sb, final String paramName, final String paramValue) {
if (paramValue != null && !paramValue.isEmpty()) {
addParameter(sb, paramName, paramValue);
}
}
protected void addParameter(final StringBuilder sb, final String paramName, final String paramValue) {
Preconditions.checkEmptyString(paramValue, paramName + " is required.");
sb.append(PARAMETETER_IDENTIFIER)
.append(paramName)
.append(EQUALS)
.append(paramValue);
}
}