package com.github.dreamhead.moco.extractor;
import com.github.dreamhead.moco.HttpRequest;
import com.github.dreamhead.moco.HttpRequestExtractor;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import java.util.Map;
import static com.github.dreamhead.moco.util.HttpHeaders.isForHeaderName;
import static com.google.common.base.Optional.absent;
import static com.google.common.base.Optional.of;
import static com.google.common.collect.FluentIterable.from;
public class HeaderRequestExtractor extends HttpRequestExtractor<String[]> {
private final String name;
public HeaderRequestExtractor(final String name) {
this.name = name;
}
@Override
protected Optional<String[]> doExtract(final HttpRequest request) {
final ImmutableMap<String, String> headers = request.getHeaders();
String[] extractedValues = from(headers.entrySet())
.filter(isForHeaderName(name))
.transform(toValue())
.toArray(String.class);
if (extractedValues.length > 0) {
return of(extractedValues);
}
return absent();
}
private Function<Map.Entry<String, String>, String> toValue() {
return new Function<Map.Entry<String, String>, String>() {
@Override
public String apply(final Map.Entry<String, String> input) {
return input.getValue();
}
};
}
}