Skip to content

lubyshev/go-readers

Repository files navigation

Пакет go-readers

Coverage Status

Набор утилит для использования io.Reader вместо []byte в вашем коде.

Base64EncodeReader

Ридер предназначен для кодирования ридера-источника в base64 "на ходу", при чтении.

package main

import (
	"bytes"
	"fmt"
	readers "github.com/lubyshev/go-readers"
	"io"
	"strings"
)

func main() {
	var str = "12123"

	b64 := readers.NewBase64EncodeReader(int64(len(str)), io.NopCloser(strings.NewReader(str)))
	fmt.Println(b64.Size())
	buf := new(bytes.Buffer)
	_, _ = buf.ReadFrom(b64)
	fmt.Printf("'%s'", buf.String())
	// Output:
	// 9
	// 'MTIxMjM= '
}

Внимание!

Размер кодированных данных определяется с погрешностью.

В случае, если кодированные данные короче, они дополняются пробелами.

MultiReadCloser

Ридер предназначен для последовательного чтения из нескольких ридеров как из одного.

package main

import (
	"bytes"
	"fmt"
	readers "github.com/lubyshev/go-readers"
	"io"
	"strings"
)

func main() {
	var rs = []io.ReadCloser{
		io.NopCloser(strings.NewReader("11111_")),
		io.NopCloser(strings.NewReader("22222_")),
		io.NopCloser(strings.NewReader("33333")),
	}

	mrc := readers.NewMultiReadCloser(rs)
	buf := new(bytes.Buffer)
	_, _ = buf.ReadFrom(mrc)
	fmt.Printf("'%s'", buf.String())
	// Output:
	// '11111_22222_33333'
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published