qheader

package module
v0.6.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: MIT Imports: 6 Imported by: 6

README

qheader Go license codecov PkgGoDev

解析报 quality factor 报头的内容,诸如 Accept、Accept-Charset 等报头。

accepts := qheader.AcceptEncoding("gzip,compress;q=0.9,*;q=0.5,br")
// 返回 br,gzip,compress,* 的顺序

安装

go get github.com/issue9/qheader

版权

本项目源码采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package qheader 用于处理 quality factor 报头

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Item added in v0.6.1

type Item struct {
	Raw string // 原始值

	// 主值,比如 application/json;q=0.9,Value 的值为 application/json
	Value string

	// 其它参数,如果参数数只有名称,没有值,则键值为空。q 参数也在其中。
	// 比如以下值 application/json;q=0.9;level=1;p 将被解析为以下内容:
	//  map[string]string {
	//      "q": "0.9",
	//      "level": "1",
	//      "p": "",
	//  }
	Params map[string]string

	// 为 q 参数的转换后的 float64 类型值
	Q float64

	// 如果 Q 解析失败,则会将错误信息保存在 Err 上。
	// 此值不为空,在排序时将排在最后。
	Err error
}

Item 表示报头内容的单个元素内容

比如 zh-cmt;q=0.8, zh-cmn;q=1, 拆分成两个 Item 对象。

type QHeader added in v0.6.0

type QHeader struct {
	Raw string // 完整的报头内容

	Value  string
	Params map[string]string
	Q      float64

	// 完整的元素列表
	Items []*Item
}

func Accept added in v0.3.0

func Accept(r *http.Request) *QHeader

Accept 返回报头 Accept 处理后的内容列表

*/* 会被排在最后。

func AcceptCharset added in v0.3.0

func AcceptCharset(r *http.Request) *QHeader

AcceptCharset 返回报头 Accept-Charset 处理后的内容列表

并不会将 * 排序在最后,* 表示匹配任意非列表中的字段。

func AcceptEncoding added in v0.3.0

func AcceptEncoding(r *http.Request) *QHeader

AcceptEncoding 返回报头 Accept-Encoding 处理后的内容列表

并不会将 * 排序在最后,* 表示匹配任意非列表中的字段。

func AcceptLanguage added in v0.3.0

func AcceptLanguage(r *http.Request) *QHeader

AcceptLanguage 返回报头 Accept-Language 处理后的内容列表

并不会将 * 排序在最后,* 表示匹配任意非列表中的字段。

func Parse

func Parse(header string, any string) *QHeader

Parse 解析报头内容

排序方式如下:

Q 值大的靠前,如果 Q 值相同,则全名的比带通配符的靠前,*/* 最后,都是全名则按原来顺序返回。

header 表示报头的内容; any 表示通配符的值,只能是 */*、* 和空值,其它情况则 panic;

func (*QHeader) Destroy added in v0.6.0

func (q *QHeader) Destroy()

Destroy 回收内存

这是一个可选操作,如果 QHeader 对象操作频繁,调用此方法在一定程序上可以增加性能。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL