diff options
author | Ivanik <ivan170102@gmail.com> | 2021-01-29 04:25:14 +0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 00:25:14 +0100 |
commit | 8764be74616bde87bbbf6c32901cd9f43264d1e0 (patch) | |
tree | 88902ba17d6a6d245cadb7e0b277bee7ef424f99 /vendor/github.com/SevereCloud/vksdk/v2/internal/charset.go | |
parent | 5dd15ef8e716c65accb6cd021095c0e19913d55f (diff) | |
download | matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.gz matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.bz2 matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.zip |
Add vk bridge (#1372)
* Add vk bridge
* Vk bridge attachments
* Vk bridge forwarded messages
* Vk bridge sample config and code cleanup
* Vk bridge add vendor
* Vk bridge message edit
* Vk bridge: fix fetching names of other bots
* Vk bridge: code cleanup
* Vk bridge: fix shadows declaration
* Vk bridge: remove UseFileURL
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/internal/charset.go')
-rw-r--r-- | vendor/github.com/SevereCloud/vksdk/v2/internal/charset.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/internal/charset.go b/vendor/github.com/SevereCloud/vksdk/v2/internal/charset.go new file mode 100644 index 00000000..0174ebf2 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/internal/charset.go @@ -0,0 +1,60 @@ +/* +Package internal unimportable +*/ +package internal // import "github.com/SevereCloud/vksdk/v2/internal" + +import ( + "io" + "strings" + + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/runes" + "golang.org/x/text/transform" +) + +// illegal is a collection of runes. +type illegal struct{} + +// Contains return true. +func (i illegal) Contains(r rune) bool { + return !(r == 0x09 || + r == 0x0A || + r == 0x0D || + r >= 0x20 && r <= 0xDF77 || + r >= 0xE000 && r <= 0xFFFD || + r >= 0x10000 && r <= 0x10FFFF) +} + +// XMLSanitizerReader creates an io.Reader that +// wraps another io.Reader and removes illegal xml +// characters from the io stream. +func XMLSanitizerReader(xml io.Reader) io.Reader { + var i illegal + t := transform.Chain(runes.Remove(i)) + + return transform.NewReader(xml, t) +} + +// CharsetUnknownError unknown charset. +type CharsetUnknownError struct { + Name string +} + +// Error returns the message of a CharsetUnknownError. +func (c *CharsetUnknownError) Error() string { + return "unknown charset: " + c.Name +} + +// CharsetReader if non-nil, defines a function to generate +// charset-conversion readers, converting from the provided +// non-UTF-8 charset into UTF-8. If CharsetReader is nil or +// returns an error, parsing stops with an error. One of the +// the CharsetReader's result values must be non-nil. +func CharsetReader(charset string, input io.Reader) (io.Reader, error) { + switch strings.ToLower(charset) { + case "windows-1251": + return charmap.Windows1251.NewDecoder().Reader(input), nil + default: + return nil, &CharsetUnknownError{Name: charset} + } +} |