1 /* 2 * Copyright 2015 The Netty Project 3 * 4 * The Netty Project licenses this file to you under the Apache License, 5 * version 2.0 (the "License"); you may not use this file except in compliance 6 * with the License. You may obtain a copy of the License at: 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 package io.netty5.handler.codec.http.cookie; 17 18 /** 19 * An interface defining an 20 * <a href="https://en.wikipedia.org/wiki/HTTP_cookie">HTTP cookie</a>. 21 */ 22 public interface Cookie extends Comparable<Cookie> { 23 24 /** 25 * Constant for undefined MaxAge attribute value. 26 */ 27 long UNDEFINED_MAX_AGE = Long.MIN_VALUE; 28 29 /** 30 * Returns the name of this {@link Cookie}. 31 * 32 * @return The name of this {@link Cookie} 33 */ 34 String name(); 35 36 /** 37 * Returns the value of this {@link Cookie}. 38 * 39 * @return The value of this {@link Cookie} 40 */ 41 String value(); 42 43 /** 44 * Sets the value of this {@link Cookie}. 45 * 46 * @param value The value to set 47 */ 48 void setValue(String value); 49 50 /** 51 * Returns true if the raw value of this {@link Cookie}, 52 * was wrapped with double quotes in original Set-Cookie header. 53 * 54 * @return If the value of this {@link Cookie} is to be wrapped 55 */ 56 boolean wrap(); 57 58 /** 59 * Sets true if the value of this {@link Cookie} 60 * is to be wrapped with double quotes. 61 * 62 * @param wrap true if wrap 63 */ 64 void setWrap(boolean wrap); 65 66 /** 67 * Returns the domain of this {@link Cookie}. 68 * 69 * @return The domain of this {@link Cookie} 70 */ 71 String domain(); 72 73 /** 74 * Sets the domain of this {@link Cookie}. 75 * 76 * @param domain The domain to use 77 */ 78 void setDomain(String domain); 79 80 /** 81 * Returns the path of this {@link Cookie}. 82 * 83 * @return The {@link Cookie}'s path 84 */ 85 String path(); 86 87 /** 88 * Sets the path of this {@link Cookie}. 89 * 90 * @param path The path to use for this {@link Cookie} 91 */ 92 void setPath(String path); 93 94 /** 95 * Returns the maximum age of this {@link Cookie} in seconds or {@link Cookie#UNDEFINED_MAX_AGE} if unspecified 96 * 97 * @return The maximum age of this {@link Cookie} 98 */ 99 long maxAge(); 100 101 /** 102 * Sets the maximum age of this {@link Cookie} in seconds. 103 * If an age of {@code 0} is specified, this {@link Cookie} will be 104 * automatically removed by browser because it will expire immediately. 105 * If {@link Cookie#UNDEFINED_MAX_AGE} is specified, this {@link Cookie} will be removed when the 106 * browser is closed. 107 * 108 * @param maxAge The maximum age of this {@link Cookie} in seconds 109 */ 110 void setMaxAge(long maxAge); 111 112 /** 113 * Checks to see if this {@link Cookie} is secure 114 * 115 * @return True if this {@link Cookie} is secure, otherwise false 116 */ 117 boolean isSecure(); 118 119 /** 120 * Sets the security getStatus of this {@link Cookie} 121 * 122 * @param secure True if this {@link Cookie} is to be secure, otherwise false 123 */ 124 void setSecure(boolean secure); 125 126 /** 127 * Checks to see if this {@link Cookie} can only be accessed via HTTP. 128 * If this returns true, the {@link Cookie} cannot be accessed through 129 * client side script - But only if the browser supports it. 130 * For more information, please look <a href="https://owasp.org/www-community/HttpOnly">here</a> 131 * 132 * @return True if this {@link Cookie} is HTTP-only or false if it isn't 133 */ 134 boolean isHttpOnly(); 135 136 /** 137 * Determines if this {@link Cookie} is HTTP only. 138 * If set to true, this {@link Cookie} cannot be accessed by a client 139 * side script. However, this works only if the browser supports it. 140 * For for information, please look 141 * <a href="https://owasp.org/www-community/HttpOnly">here</a>. 142 * 143 * @param httpOnly True if the {@link Cookie} is HTTP only, otherwise false. 144 */ 145 void setHttpOnly(boolean httpOnly); 146 }