All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.dreamhead.moco.extractor.CookiesRequestExtractor Maven / Gradle / Ivy

Go to download

Moco is an easy setup stub framework, mainly focusing on testing and integration.

There is a newer version: 1.5.0
Show newest version
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;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy