terraform/vendor/github.com/dimchansky/utfbom
Tom Harvey 0ec109bdc0
backend/azurerm: upgrading the SDK / support for proxies (#19414)
* vendor updates

- updating to v21.3.0 of github.com/Azure/azure-sdk-for-go
- updating to v10.15.4 of github.com/Azure/go-autorest
- vendoring github.com/hashicorp/go-azure-helpers @ 0.1.1

* backend/azurerm: refactoring to use the new auth package

- refactoring the backend to use a shared client via the new auth package
- adding tests covering both Service Principal and Access Key auth
- support for authenticating using a proxy
- rewriting the backend documentation to include examples of both authentication types

* switching to use the build-in logging function

* documenting it's also possible to retrieve the access key from an env var
2018-11-21 22:06:03 +01:00
..
.gitignore backend/azurerm: upgrading the SDK / support for proxies (#19414) 2018-11-21 22:06:03 +01:00
.travis.yml backend/azurerm: upgrading the SDK / support for proxies (#19414) 2018-11-21 22:06:03 +01:00
LICENSE backend/azurerm: upgrading the SDK / support for proxies (#19414) 2018-11-21 22:06:03 +01:00
README.md backend/azurerm: upgrading the SDK / support for proxies (#19414) 2018-11-21 22:06:03 +01:00
go.mod backend/azurerm: upgrading the SDK / support for proxies (#19414) 2018-11-21 22:06:03 +01:00
utfbom.go backend/azurerm: upgrading the SDK / support for proxies (#19414) 2018-11-21 22:06:03 +01:00

README.md

utfbom Godoc License Build Status Go Report Card Coverage Status

The package utfbom implements the detection of the BOM (Unicode Byte Order Mark) and removing as necessary. It can also return the encoding detected by the BOM.

Installation

go get -u github.com/dimchansky/utfbom

Example

package main

import (
	"bytes"
	"fmt"
	"io/ioutil"

	"github.com/dimchansky/utfbom"
)

func main() {
	trySkip([]byte("\xEF\xBB\xBFhello"))
	trySkip([]byte("hello"))
}

func trySkip(byteData []byte) {
	fmt.Println("Input:", byteData)

	// just skip BOM
	output, err := ioutil.ReadAll(utfbom.SkipOnly(bytes.NewReader(byteData)))
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("ReadAll with BOM skipping", output)

	// skip BOM and detect encoding
	sr, enc := utfbom.Skip(bytes.NewReader(byteData))
	var encStr string
	switch enc {
	case utfbom.UTF8:
		encStr = "UTF8"
	case utfbom.UTF16BigEndian:
		encStr = "UTF16 big endian"
	case utfbom.UTF16LittleEndian:
		encStr = "UTF16 little endian"
	case utfbom.UTF32BigEndian:
		encStr = "UTF32 big endian"
	case utfbom.UTF32LittleEndian:
		encStr = "UTF32 little endian"
	default:
		encStr = "Unknown, no byte-order mark found"
	}
	fmt.Println("Detected encoding:", encStr)
	output, err = ioutil.ReadAll(sr)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("ReadAll with BOM detection and skipping", output)
	fmt.Println()
}

Output:

$ go run main.go
Input: [239 187 191 104 101 108 108 111]
ReadAll with BOM skipping [104 101 108 108 111]
Detected encoding: UTF8
ReadAll with BOM detection and skipping [104 101 108 108 111]

Input: [104 101 108 108 111]
ReadAll with BOM skipping [104 101 108 108 111]
Detected encoding: Unknown, no byte-order mark found
ReadAll with BOM detection and skipping [104 101 108 108 111]