package com.github.hburgmeier.jerseyoauth2.protocol.impl;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
public class ScopeParser {
private static final Pattern SCOPE_PATTERN = Pattern.compile("[!#$%&'\\(\\)*+,\\-\\.\\/0-9:;<=>?@A-Z\\[\\]^_`a-z{|}~]+");
public String render(Set<String> scopes)
{
if (scopes == null) {
return null;
}
StringBuffer buffer = new StringBuffer();
for (String scope : scopes)
{
if (buffer.length()>0) {
buffer.append(" ");
}
buffer.append(scope);
}
return buffer.toString();
}
public Set<String> parseScope(String scope)
{
if (scope == null) {
return null;
}
Scanner scanner = new Scanner(StringUtils.trim(scope));
try {
scanner.useDelimiter(" ");
Set<String> result = new HashSet<>();
while (scanner.hasNext(SCOPE_PATTERN))
{
String scopeToken = scanner.next(SCOPE_PATTERN);
result.add(scopeToken);
}
return result;
} finally {
scanner.close();
}
}
}