forked from lug/matterbridge
		
	 8764be7461
			
		
	
	8764be7461
	
	
	
		
			
			* 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
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
| 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}
 | |
| 	}
 | |
| }
 |