Skip to content
/ dic Public

Справочники.

License

Notifications You must be signed in to change notification settings

webnice/dic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dic

GoDoc Go Report Card Coverage Status

Описание

Библиотека справочников. Реализованы следующие справочники:

  • 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