X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=warc%2Fheader.go;fp=warc%2Fheader.go;h=cb1b7a9a13f714c3cf41b903dc05f45bb8a4d4cd;hb=0c0a261a6ef4fddfc34a9150005f7964cc69c420;hp=0000000000000000000000000000000000000000;hpb=30dad51e496a127b1e78c52d70065a4db4da8f55;p=tofuproxy.git diff --git a/warc/header.go b/warc/header.go new file mode 100644 index 0000000..cb1b7a9 --- /dev/null +++ b/warc/header.go @@ -0,0 +1,54 @@ +/* +tofuproxy -- flexible HTTP/WARC proxy with TLS certificates management +Copyright (C) 2021 Sergey Matveev + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 3 of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +package warc + +import "strings" + +type Header map[string]string + +func splitKeyValue(line string) (string, string) { + parts := strings.SplitN(line, ":", 2) + if len(parts) != 2 { + return "", "" + } + return parts[0], strings.TrimSpace(parts[1]) +} + +func NewHeader() Header { + return make(map[string]string) +} + +func (h Header) Set(key, value string) { + h[strings.ToLower(key)] = value +} + +func (h Header) Get(key string) string { + return h[strings.ToLower(key)] +} + +func (h Header) Del(key string) { + delete(h, strings.ToLower(key)) +} + +func (h Header) AddLine(line string) { + parts := strings.SplitN(line, ":", 2) + if len(parts) != 2 { + return + } + h.Set(parts[0], strings.TrimSpace(parts[1])) +}