跳转至

Class qqmusic::utils::CookieJar

ClassList > qqmusic > utils > CookieJar

简易Cookie管理器, 负责cookie的序列化和反序列化, 依赖 nlohmann::json 实现 目前不支持路径嵌套和Expires HttpOnly 这样的特性More...

  • #include <cookie.h>

Public Functions

Type Name
CookieJar ()
空初始化
CookieJar (std::string_view cache)
缓存反序列化, 从 dump 函数产生的缓存构造
CookieJar (std::string_view cookie_str, std::string_view domain, std::string_view path="/")
从原始cookie字符串解析
qqmusic::Result< void > clear (std::optional< std::string > domain=std::nullopt, std::optional< std::string > path=std::nullopt, std::optional< std::string > key=std::nullopt)
删除对应区域的cookie
qqmusic::Result< void > del (std::string_view key, std::optional< std::string > domain=std::nullopt, std::optional< std::string > path=std::nullopt)
删除对应键的Cookie字段和他的值
qqmusic::Result< std::string > dump ()
序列化Cookie
qqmusic::Result< std::string > get (std::string_view key, std::optional< std::string > domain=std::nullopt, std::optional< std::string > path=std::nullopt)
查询对应键的Cookie字段的值
qqmusic::Result< void > merge (const CookieJar & cookies)
合并CookieJar内容
qqmusic::Result< std::string > serialize (std::string_view domain, std::string_view path="/")
将对应域名和路径的Cookie序列化成请求报文
qqmusic::Result< void > set (const Cookie & cookie)
插入一条Cookie
qqmusic::Result< void > update (const CookieJar & cookies)
替换CookieJar的内容

Detailed Description

使用Json数据结构来储存Cookie

{
    "domain1" : {
        "path1": {
            "key1": "value1",
            "key2": "value2"
        },
        "path2": {
            "key1": "value1",
            "key2": "value2"
        }
    },
    "domain2" : {
        "path1": {
            "key1": "value1",
            "key2": "value2"
        },
        "path2": {
            "key1": "value1",
            "key2": "value2"
        }
    }
}

Warning:

不支持path的嵌套, example.com/menuexample.com/menu/usr 被认为是域名example.com下两个完全不同的路径.

不支持解析HttpOnly, Expires这样的字段, 不是键值对形式的 Cookie条目会被丢弃.

待办事项

需要支持嵌套的路径, 支持非键值对形式的Cookie

Public Functions Documentation

function CookieJar [1/3]

空初始化

inline qqmusic::utils::CookieJar::CookieJar () 


function CookieJar [2/3]

缓存反序列化, 从 dump 函数产生的缓存构造

inline qqmusic::utils::CookieJar::CookieJar (
    std::string_view cache
) 

Parameters:

  • cache 缓存

function CookieJar [3/3]

从原始cookie字符串解析

qqmusic::utils::CookieJar::CookieJar (
    std::string_view cookie_str,
    std::string_view domain,
    std::string_view path="/"
) 

Parameters:

  • cookie_str 请求报文中cookie字符串, 一般存在于Set-Cookie字段
  • domain 域名
  • path 路径, 默认是/

function clear

删除对应区域的cookie

qqmusic::Result< void > qqmusic::utils::CookieJar::clear (
    std::optional< std::string > domain=std::nullopt,
    std::optional< std::string > path=std::nullopt,
    std::optional< std::string > key=std::nullopt
) 


function del

删除对应键的Cookie字段和他的值

qqmusic::Result< void > qqmusic::utils::CookieJar::del (
    std::string_view key,
    std::optional< std::string > domain=std::nullopt,
    std::optional< std::string > path=std::nullopt
) 

Parameters:

  • key
  • domain 域名, 默认std::nullopt, 若不给出则全局寻找
  • path 路径, 默认std::nullopt, 若不给出则在域名下寻找

Returns:

Result <void>, 如果没有对应的键, 会返回JsonError

Note:

缺省参数时总是删除第一个找到符合的键值对


function dump

序列化Cookie

qqmusic::Result< std::string > qqmusic::utils::CookieJar::dump () 

Returns:

已经序列化的json字符串, 如果出错会返回JsonError


function get

查询对应键的Cookie字段的值

qqmusic::Result< std::string > qqmusic::utils::CookieJar::get (
    std::string_view key,
    std::optional< std::string > domain=std::nullopt,
    std::optional< std::string > path=std::nullopt
) 

Parameters:

  • key
  • domain 域名, 默认std::nullopt, 若不给出则全局寻找
  • path 路径, 默认std::nullopt, 若不给出则在域名下寻找

Returns:

Result <std::string>, 键值对的值是字符串形式的 找不到会返回JsonError

Note:

参数缺省时总是返回第一个找到的键值对的值


function merge

合并CookieJar内容

qqmusic::Result< void > qqmusic::utils::CookieJar::merge (
    const CookieJar & cookies
) 

Parameters:

  • cookies 待合并cookie

Note:

原本Cookie不存在的字段被创建, 重合的字段被新值覆盖


function serialize

将对应域名和路径的Cookie序列化成请求报文

qqmusic::Result< std::string > qqmusic::utils::CookieJar::serialize (
    std::string_view domain,
    std::string_view path="/"
) 

Parameters:

  • domain 域名
  • path 路径, 默认/

function set

插入一条Cookie

qqmusic::Result< void > qqmusic::utils::CookieJar::set (
    const Cookie & cookie
) 

Parameters:

  • cookie 一个Cookie条目

Note:

如果对应域名和路径的这个Cookie的键已经存在, 那么会覆盖老的值


function update

替换CookieJar的内容

qqmusic::Result< void > qqmusic::utils::CookieJar::update (
    const CookieJar & cookies
) 

Parameters:

  • cookies 新的Cookies


The documentation for this class was generated from the following file include/qqmusic/utils/cookie.h