com.github.dreamhead.moco.extractor.CookiesRequestExtractor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of moco-core Show documentation
Show all versions of moco-core Show documentation
Moco is an easy setup stub framework, mainly focusing on testing and integration.
package com.github.dreamhead.moco.extractor;
import com.github.dreamhead.moco.HttpRequest;
import com.github.dreamhead.moco.HttpRequestExtractor;
import com.github.dreamhead.moco.RequestExtractor;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import io.netty.handler.codec.http.cookie.Cookie;
import io.netty.handler.codec.http.cookie.ServerCookieDecoder;
import java.util.Map;
import java.util.Set;
import static com.google.common.base.Optional.absent;
import static com.google.common.base.Optional.of;
import static com.google.common.collect.ImmutableMap.copyOf;
import static com.google.common.collect.Maps.newHashMap;
import static com.google.common.collect.Sets.newHashSet;
import static com.google.common.net.HttpHeaders.COOKIE;
public class CookiesRequestExtractor extends HttpRequestExtractor> {
private final RequestExtractor extractor = new HeaderRequestExtractor(COOKIE);
@Override
protected Optional> doExtract(final HttpRequest request) {
Optional cookieString = extractor.extract(request);
if (!cookieString.isPresent()) {
return absent();
}
return of(doExtractCookies(cookieString.get()));
}
private static ImmutableMap doExtractCookies(final String[] cookieString) {
Set cookies = toCookies(cookieString);
Map target = newHashMap();
for (Cookie cookie : cookies) {
target.put(cookie.name(), cookie.value());
}
return copyOf(target);
}
private static Set toCookies(final String[] headers) {
Set cookies = newHashSet();
for (String header : headers) {
cookies.addAll(ServerCookieDecoder.STRICT.decode(header));
}
return cookies;
}
}