package com.monkeyk.sos.domain.dto;
import com.monkeyk.sos.domain.oauth.OauthClientDetails;
import com.monkeyk.sos.infrastructure.DateUtils;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @author Shengzhao Li
*/
public class OauthClientDetailsDto implements Serializable {
private String createTime;
private boolean archived;
private String clientId;
private String resourceIds;
private String clientSecret;
private String scope;
private String authorizedGrantTypes;
private String webServerRedirectUri;
private String authorities;
private Integer accessTokenValidity;
private Integer refreshTokenValidity;
// optional
private String additionalInformation;
private boolean trusted;
public OauthClientDetailsDto() {
}
public OauthClientDetailsDto(OauthClientDetails clientDetails) {
this.clientId = clientDetails.clientId();
this.clientSecret = clientDetails.clientSecret();
this.scope = clientDetails.scope();
this.createTime = DateUtils.toDateTime(clientDetails.createTime());
this.archived = clientDetails.archived();
this.resourceIds = clientDetails.resourceIds();
this.webServerRedirectUri = clientDetails.webServerRedirectUri();
this.authorities = clientDetails.authorities();
this.accessTokenValidity = clientDetails.accessTokenValidity();
this.refreshTokenValidity = clientDetails.refreshTokenValidity();
this.additionalInformation = clientDetails.additionalInformation();
this.trusted = clientDetails.trusted();
this.authorizedGrantTypes = clientDetails.authorizedGrantTypes();
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public boolean isArchived() {
return archived;
}
public void setArchived(boolean archived) {
this.archived = archived;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getResourceIds() {
return resourceIds;
}
public void setResourceIds(String resourceIds) {
this.resourceIds = resourceIds;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
public String getScope() {
return scope;
}
public String getScopeWithBlank() {
if (scope != null && scope.contains(",")) {
return scope.replaceAll(",", " ");
}
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getAuthorizedGrantTypes() {
return authorizedGrantTypes;
}
public void setAuthorizedGrantTypes(String authorizedGrantTypes) {
this.authorizedGrantTypes = authorizedGrantTypes;
}
public String getWebServerRedirectUri() {
return webServerRedirectUri;
}
public void setWebServerRedirectUri(String webServerRedirectUri) {
this.webServerRedirectUri = webServerRedirectUri;
}
public String getAuthorities() {
return authorities;
}
public void setAuthorities(String authorities) {
this.authorities = authorities;
}
public Integer getAccessTokenValidity() {
return accessTokenValidity;
}
public void setAccessTokenValidity(Integer accessTokenValidity) {
this.accessTokenValidity = accessTokenValidity;
}
public Integer getRefreshTokenValidity() {
return refreshTokenValidity;
}
public void setRefreshTokenValidity(Integer refreshTokenValidity) {
this.refreshTokenValidity = refreshTokenValidity;
}
public String getAdditionalInformation() {
return additionalInformation;
}
public void setAdditionalInformation(String additionalInformation) {
this.additionalInformation = additionalInformation;
}
public boolean isTrusted() {
return trusted;
}
public void setTrusted(boolean trusted) {
this.trusted = trusted;
}
public static List<OauthClientDetailsDto> toDtos(List<OauthClientDetails> clientDetailses) {
List<OauthClientDetailsDto> dtos = new ArrayList<>(clientDetailses.size());
for (OauthClientDetails clientDetailse : clientDetailses) {
dtos.add(new OauthClientDetailsDto(clientDetailse));
}
return dtos;
}
public boolean isContainsAuthorizationCode() {
return this.authorizedGrantTypes.contains("authorization_code");
}
public boolean isContainsPassword() {
return this.authorizedGrantTypes.contains("password");
}
public boolean isContainsImplicit() {
return this.authorizedGrantTypes.contains("implicit");
}
public boolean isContainsClientCredentials() {
return this.authorizedGrantTypes.contains("client_credentials");
}
public boolean isContainsRefreshToken() {
return this.authorizedGrantTypes.contains("refresh_token");
}
public OauthClientDetails createDomain() {
OauthClientDetails clientDetails = new OauthClientDetails()
.clientId(clientId)
.clientSecret(clientSecret)
.resourceIds(resourceIds)
.authorizedGrantTypes(authorizedGrantTypes)
.scope(scope);
if (StringUtils.isNotEmpty(webServerRedirectUri)) {
clientDetails.webServerRedirectUri(webServerRedirectUri);
}
if (StringUtils.isNotEmpty(authorities)) {
clientDetails.authorities(authorities);
}
clientDetails.accessTokenValidity(accessTokenValidity)
.refreshTokenValidity(refreshTokenValidity)
.trusted(trusted);
if (StringUtils.isNotEmpty(additionalInformation)) {
clientDetails.additionalInformation(additionalInformation);
}
return clientDetails;
}
}