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

org.asynchttpclient.shaded.cookie.CookieStore Maven / Gradle / Ivy

/*
 * Copyright (c) 2017 AsyncHttpClient Project. All rights reserved.
 *
 * This program is licensed to you under the Apache License Version 2.0,
 * and you may not use this file except in compliance with the Apache License Version 2.0.
 * You may obtain a copy of the Apache License Version 2.0 at
 *     http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the Apache License Version 2.0 is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
 */

package org.asynchttpclient.shaded.cookie;

import org.asynchttpclient.shaded.io.netty.handler.codec.http.cookie.Cookie;
import org.asynchttpclient.shaded.uri.Uri;
import org.asynchttpclient.shaded.util.Counted;

import java.net.CookieManager;
import java.util.List;
import java.util.function.Predicate;

/**
 * This interface represents an abstract store for {@link Cookie} objects.
 *
 * 

{@link CookieManager} will call {@code CookieStore.add} to save cookies * for every incoming HTTP response, and call {@code CookieStore.get} to * retrieve cookie for every outgoing HTTP request. A CookieStore * is responsible for removing HttpCookie instances which have expired. * * @since 2.1 */ public interface CookieStore extends Counted { /** * Adds one {@link Cookie} to the store. This is called for every incoming HTTP response. * If the given cookie has already expired it will not be added. * *

A cookie to store may or may not be associated with an URI. If it * is not associated with an URI, the cookie's domain and path attribute * will indicate where it comes from. If it is associated with an URI and * its domain and path attribute are not specified, given URI will indicate * where this cookie comes from. * *

If a cookie corresponding to the given URI already exists, * then it is replaced with the new one. * * @param uri the {@link Uri uri} this cookie associated with. if {@code null}, this cookie will not be associated with an URI * @param cookie the {@link Cookie cookie} to be added */ void add(Uri uri, Cookie cookie); /** * Retrieve cookies associated with given URI, or whose domain matches the given URI. Only cookies that * have not expired are returned. This is called for every outgoing HTTP request. * * @param uri the {@link Uri uri} associated with the cookies to be returned * @return an immutable list of Cookie, return empty list if no cookies match the given URI */ List get(Uri uri); /** * Get all not-expired cookies in cookie store. * * @return an immutable list of http cookies; * return empty list if there's no http cookie in store */ List getAll(); /** * Remove a cookie from store. * * @param predicate that indicates what cookies to remove * @return {@code true} if this store contained the specified cookie * @throws NullPointerException if {@code cookie} is {@code null} */ boolean remove(Predicate predicate); /** * Remove all cookies in this cookie store. * * @return true if any cookies were purged. */ boolean clear(); /** * Evicts all the cookies that expired as of the time this method is run. */ void evictExpired(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy