package com.subgraph.vega.internal.http.conditions; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.http.Header; import org.apache.http.HeaderIterator; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import com.subgraph.vega.api.http.conditions.ConditionType; import com.subgraph.vega.api.http.conditions.MatchType; public class ConditionTypeResponseHeader extends HttpBooleanCondition { Pattern rePattern; public ConditionTypeResponseHeader(Enum<?> comparisonType, String pattern, boolean isEnabled) { super(ConditionType.RESPONSE_HEADER, comparisonType, pattern, isEnabled); } @Override public boolean test(HttpRequest request) { return false; } @Override public boolean test(HttpResponse response) { if (response != null) { MatchType matchType = (MatchType) comparisonType; for (HeaderIterator iterator = response.headerIterator(); iterator.hasNext();) { Header header = (Header) iterator.next(); Matcher matcher = rePattern.matcher(header.toString()); if (matcher.find() == (matchType == MatchType.MATCH)) { return true; } } } return false; } @Override void notifyPatternChange() { rePattern = Pattern.compile(pattern); } }