-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(x/net/textproto): The relevant code for handling headers in the …
…textproto library
- Loading branch information
Showing
3 changed files
with
573 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
|
||
"github.com/goplus/llgo/x/textproto" | ||
) | ||
|
||
func main() { | ||
m := make(map[string][]string) | ||
textproto.MIMEHeader(m).Add("Host", "www.example.com") | ||
fmt.Println(textproto.MIMEHeader(m).Get("host")) | ||
} | ||
|
||
/* | ||
Expected Output: | ||
www.example.com | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// Copyright 2010 The Go Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style | ||
// license that can be found in the LICENSE file. | ||
|
||
package textproto | ||
|
||
// A MIMEHeader represents a MIME-style header mapping | ||
// keys to sets of values. | ||
type MIMEHeader map[string][]string | ||
|
||
// Add adds the key, value pair to the header. | ||
// It appends to any existing values associated with key. | ||
func (h MIMEHeader) Add(key, value string) { | ||
key = CanonicalMIMEHeaderKey(key) | ||
h[key] = append(h[key], value) | ||
} | ||
|
||
// Set sets the header entries associated with key to | ||
// the single element value. It replaces any existing | ||
// values associated with key. | ||
func (h MIMEHeader) Set(key, value string) { | ||
h[CanonicalMIMEHeaderKey(key)] = []string{value} | ||
} | ||
|
||
// Get gets the first value associated with the given key. | ||
// It is case insensitive; CanonicalMIMEHeaderKey is used | ||
// to canonicalize the provided key. | ||
// If there are no values associated with the key, Get returns "". | ||
// To use non-canonical keys, access the map directly. | ||
func (h MIMEHeader) Get(key string) string { | ||
if h == nil { | ||
return "" | ||
} | ||
v := h[CanonicalMIMEHeaderKey(key)] | ||
if len(v) == 0 { | ||
return "" | ||
} | ||
return v[0] | ||
} | ||
|
||
// Values returns all values associated with the given key. | ||
// It is case insensitive; CanonicalMIMEHeaderKey is | ||
// used to canonicalize the provided key. To use non-canonical | ||
// keys, access the map directly. | ||
// The returned slice is not a copy. | ||
func (h MIMEHeader) Values(key string) []string { | ||
if h == nil { | ||
return nil | ||
} | ||
return h[CanonicalMIMEHeaderKey(key)] | ||
} | ||
|
||
// Del deletes the values associated with key. | ||
func (h MIMEHeader) Del(key string) { | ||
delete(h, CanonicalMIMEHeaderKey(key)) | ||
} |
Oops, something went wrong.