package com.janrain.backplane2.server;
import com.janrain.backplane.common.DateTimeUtils;
import com.janrain.backplane.server2.oauth2.model.Token;
import com.janrain.backplane.server2.oauth2.model.TokenFields;
import com.janrain.util.RandomUtils;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Johnny Bufu
*/
public class TokenBuilder {
public TokenBuilder(GrantType type, String scope) {
this.type = type;
data.put(TokenFields.TYPE().name(), type.toString());
data.put(TokenFields.SCOPE().name(), scope);
}
public TokenBuilder expires(Date expires) {
data.put(TokenFields.EXPIRES().name(), DateTimeUtils.ISO8601.get().format(expires));
return this;
}
public TokenBuilder issuedToClient(String clientId) {
data.put(TokenFields.ISSUED_TO_CLIENT().name(), clientId);
return this;
}
public TokenBuilder clientSourceUrl(String clientSourceUrl) {
data.put(TokenFields.CLIENT_SOURCE_URL().name(), clientSourceUrl);
return this;
}
public TokenBuilder grants(List<String> grants) {
data.put(TokenFields.BACKING_GRANTS().name(),
org.springframework.util.StringUtils.collectionToDelimitedString(grants, Token.GRANTS_SEPARATOR()));
return this;
}
public Token buildToken() {
String id = type.getTokenPrefix() + RandomUtils.randomString(Token.TOKEN_LENGTH());
data.put(TokenFields.ID().name(), id);
return new Token(data);
}
// - PRIVATE
private final Map<String,String> data = new HashMap<String, String>();
private final GrantType type;
}