package com.demo.lib.common.okhttp.cookie.store; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import okhttp3.Cookie; import okhttp3.HttpUrl; /** * Created by zhy on 16/3/10. */ public class MemoryCookieStore implements CookieStore { private final HashMap> allCookies = new HashMap<>(); @Override public void add(HttpUrl url, List cookies) { List oldCookies = allCookies.get(url.host()); if (oldCookies != null) { Iterator itNew = cookies.iterator(); Iterator itOld = oldCookies.iterator(); while (itNew.hasNext()) { String va = itNew.next().name(); while (va != null && itOld.hasNext()) { String v = itOld.next().name(); if (v != null && va.equals(v)) { itOld.remove(); } } } oldCookies.addAll(cookies); } else { allCookies.put(url.host(), cookies); } } @Override public List get(HttpUrl uri) { List cookies = allCookies.get(uri.host()); if (cookies == null) { cookies = new ArrayList<>(); allCookies.put(uri.host(), cookies); } return cookies; } @Override public boolean removeAll() { allCookies.clear(); return true; } @Override public List getCookies() { List cookies = new ArrayList<>(); Set httpUrls = allCookies.keySet(); for (String url : httpUrls) { cookies.addAll(allCookies.get(url)); } return cookies; } @Override public boolean remove(HttpUrl uri, Cookie cookie) { List cookies = allCookies.get(uri.host()); if (cookie != null) { return cookies.remove(cookie); } return false; } }