MemoryCookieStore.java 3.24 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.apache.commons.lang.StringUtils
 *  org.apache.http.Header
 *  org.apache.http.client.methods.HttpRequestBase
 *  org.apache.http.cookie.Cookie
 *  org.apache.http.cookie.CookieOrigin
 *  org.apache.http.cookie.MalformedCookieException
 *  org.apache.http.impl.cookie.BrowserCompatSpec
 *  org.apache.http.message.BasicHeader
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.cq.aam.client;

import com.adobe.cq.aam.client.spi.HCCookieStore;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.http.Header;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.impl.cookie.BrowserCompatSpec;
import org.apache.http.message.BasicHeader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MemoryCookieStore
implements HCCookieStore {
    private static final int DEFAULT_HTTP_PORT = 80;
    private static final int DEFAULT_HTTPS_PORT = 443;
    private static final Logger LOGGER = LoggerFactory.getLogger(MemoryCookieStore.class);
    private Map<String, Cookie> cookies = new HashMap<String, Cookie>();

    @Override
    public Header getCookieHeader() {
        ArrayList<String> nv = new ArrayList<String>();
        for (Cookie c : this.cookies.values()) {
            try {
                nv.add(c.getName() + "=" + URLEncoder.encode(c.getValue(), "UTF-8"));
            }
            catch (UnsupportedEncodingException e) {
                LOGGER.error(e.getMessage(), (Throwable)e);
            }
        }
        BasicHeader h = new BasicHeader("Cookie", StringUtils.join(nv, (String)"; "));
        LOGGER.debug("Cookie header is {} ", (Object)h.getValue());
        return h;
    }

    @Override
    public void update(HttpRequestBase eventMethod) {
        URI u = eventMethod.getURI();
        String domain = u.getHost();
        int port = u.getPort();
        if (port == -1) {
            port = "https".equals(u.getScheme()) ? 443 : 80;
        }
        String pathInfo = u.getPath();
        BrowserCompatSpec cookie2Spec = new BrowserCompatSpec();
        for (Header h : eventMethod.getAllHeaders()) {
            if (h != null && h.getName().toLowerCase().startsWith("set-cookie")) {
                CookieOrigin origin = new CookieOrigin(domain, port, pathInfo, false);
                try {
                    for (Cookie c : cookie2Spec.parse(h, origin)) {
                        this.cookies.put(c.getName(), c);
                        LOGGER.debug("Added Cookie {} ", (Object)c.getName());
                    }
                    continue;
                }
                catch (MalformedCookieException e) {
                    LOGGER.debug(e.getMessage(), (Throwable)e);
                    continue;
                }
            }
            LOGGER.debug("Skipping header {} ", (Object)h);
        }
    }

    @Override
    public void save() {
    }
}