Библиотека справочников. Реализованы следующие справочники:
-
Mime - Справочник MIME типов.
-
Method - Справочник HTTP методов запросов.
-
Header - Справочник заголовков.
-
Status - Справочник статусов HTTP ответов.
-
File - Справочник MIME типов расширений файлов.
Справочники реализованы таким образом, чтобы их можно было дополнять пользовательскими данными через встраивание. А получившийся пользовательский справочник обладал бы всеми свойствами справочника данной библиотеки и принимался бы теми же функциями, которые используют исходный справочник.
go get github.com/webnice/dic
package main
import "fmt"
// CustomHeader Структура нового справочника с дополнительными пользовательскими заголовками.
type CustomHeader struct {
Headers // Встраивание всех уже существующих заголовков.
// MyCustomHeader1 Заголовок my-custom/header-1.
MyCustomHeader1 IHeader
// HeaderSecondCustom Заголовок header-second/custom.
HeaderSecondCustom IHeader
}
// Реализация дополнительных пользовательских заголовков справочника.
var custom = &CustomHeader{
Headers: Header(), // Подключение всех существующих заголовков.
MyCustomHeader1: NewHeader("My-Custom/Header-1"), // Заголовок my-custom/header-1.
HeaderSecondCustom: NewHeader("Header-Second/Custom"), // Заголовок header-second/custom.
}
// Использование нового справочника.
func main() {
var mch = custom.MyCustomHeader1
var result = custom.AcceptPatch.IsEqual(mch)
fmt.Printf("Является ли заголовок %q эквивалентным заголовку %q? Ответ: %t\n", mch, custom.AcceptPatch, result)
hcc := custom.HeaderSecondCustom
result = hcc.IsEqual(mch)
fmt.Printf("Является ли заголовок %q эквивалентным заголовку %q? Ответ: %t\n", hcc, mch, result)
}
Результат:
Является ли заголовок "My-Custom/Header-1" эквивалентным заголовку "Accept-Patch"? Ответ: false
Является ли заголовок "Header-Second/Custom" эквивалентным заголовку "My-Custom/Header-1"? Ответ: false