package org.baeldung.test.common.web.util;
import java.util.List;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
public final class HTTPLinkHeaderUtil {
private HTTPLinkHeaderUtil() {
throw new AssertionError();
}
//
/**
* ex. <br>
* https://api.github.com/users/steveklabnik/gists?page=2>; rel="next", <https://api.github.com/users/steveklabnik/gists?page=3>; rel="last"
*/
public static List<String> extractAllURIs(final String linkHeader) {
Preconditions.checkNotNull(linkHeader);
final List<String> linkHeaders = Lists.newArrayList();
final String[] links = linkHeader.split(", ");
for (final String link : links) {
final int positionOfSeparator = link.indexOf(';');
linkHeaders.add(link.substring(1, positionOfSeparator - 1));
}
return linkHeaders;
}
public static String extractURIByRel(final String linkHeader, final String rel) {
Preconditions.checkNotNull(linkHeader);
String uriWithSpecifiedRel = null;
final String[] links = linkHeader.split(", ");
String linkRelation = null;
for (final String link : links) {
final int positionOfSeparator = link.indexOf(';');
linkRelation = link.substring(positionOfSeparator + 1, link.length()).trim();
if (extractTypeOfRelation(linkRelation).equals(rel)) {
uriWithSpecifiedRel = link.substring(1, positionOfSeparator - 1);
break;
}
}
return uriWithSpecifiedRel;
}
static Object extractTypeOfRelation(final String linkRelation) {
final int positionOfEquals = linkRelation.indexOf('=');
return linkRelation.substring(positionOfEquals + 2, linkRelation.length() - 1).trim();
}
/**
* ex. <br>
* https://api.github.com/users/steveklabnik/gists?page=2>; rel="next"
*/
public static String extractSingleURI(final String linkHeader) {
Preconditions.checkNotNull(linkHeader);
final int positionOfSeparator = linkHeader.indexOf(';');
return linkHeader.substring(1, positionOfSeparator - 1);
}
}