/// <summary>
        /// Get the key value
        /// </summary>
        /// <param name="key">Key</param>
        /// <returns>value</returns>
        public string Get(string key)
        {
            if (_httpContext == null)
            {
                throw new ArgumentNullException(nameof(_httpContext));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            if (Contains(key))
            {
                var encodedValue  = _chunkingHttpCookie.GetRequestCookie(_httpContext, key);
                var protectedData = string.Empty;
                //allow encryption is optional
                //may change the allow encryption to avoid this first check if cookie value is able to decode than unprotect tha data
                if (Base64TextEncoder.TryDecode(encodedValue, out protectedData))
                {
                    string unprotectedData;
                    if (_dataProtector.TryUnprotect(protectedData, out unprotectedData))
                    {
                        return(unprotectedData);
                    }
                }
                return(encodedValue);
            }

            return(string.Empty);
        }
        private void Set(string key, string value, CookieOptions option, int?expireTime)
        {
            if (option == null)
            {
                option = new CookieOptions();

                if (expireTime.HasValue)
                {
                    option.Expires = DateTime.Now.AddMinutes(expireTime.Value);
                }
                else
                {
                    option.Expires = DateTime.Now.AddDays(_cookieManagerOptions.DefaultExpireTimeInDays);
                }
            }

            //check for encryption
            if (_cookieManagerOptions.AllowEncryption)
            {
                string protecetedData = _dataProtector.Protect(value);
                var    encodedValue   = Base64TextEncoder.Encode(protecetedData);
                _chunkingHttpCookie.AppendResponseCookie(_httpContext, key, encodedValue, option);
            }
            else
            {
                //just append the cookie
                _chunkingHttpCookie.AppendResponseCookie(_httpContext, key, value, option);
            }
        }