comparison pkg/misc/encode.go @ 414:c1047fd04a3a

Moved project specific Go packages to new pkg folder.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 15 Aug 2018 17:30:50 +0200
parents misc/encode.go@999f4f83a072
children f827dc4f3e95
comparison
equal deleted inserted replaced
413:a9440a4826aa 414:c1047fd04a3a
1 package misc
2
3 import (
4 "encoding/base64"
5 "encoding/binary"
6 "io"
7 )
8
9 type BinReader struct {
10 io.Reader
11 Err error
12 }
13
14 func (r *BinReader) Read(buf []byte) (int, error) {
15 if r.Err != nil {
16 return 0, r.Err
17 }
18 var n int
19 n, r.Err = r.Read(buf)
20 return n, r.Err
21 }
22
23 func (r *BinReader) ReadBin(x interface{}) {
24 if r.Err == nil {
25 r.Err = binary.Read(r.Reader, binary.BigEndian, x)
26 }
27 }
28
29 func (r *BinReader) ReadString(s *string) {
30 if r.Err != nil {
31 return
32 }
33 var l uint32
34 if r.Err = binary.Read(r.Reader, binary.BigEndian, &l); r.Err != nil {
35 return
36 }
37 b := make([]byte, l)
38 if r.Err = binary.Read(r.Reader, binary.BigEndian, b); r.Err != nil {
39 return
40 }
41 *s = string(b)
42 }
43
44 type BinWriter struct {
45 io.Writer
46 Err error
47 }
48
49 func (w *BinWriter) Write(buf []byte) (int, error) {
50 if w.Err != nil {
51 return 0, w.Err
52 }
53 var n int
54 n, w.Err = w.Writer.Write(buf)
55 return n, w.Err
56 }
57
58 func (w *BinWriter) WriteBin(x interface{}) {
59 if w.Err == nil {
60 w.Err = binary.Write(w.Writer, binary.BigEndian, x)
61 }
62 }
63
64 func (w *BinWriter) WriteString(s string) {
65 if w.Err == nil {
66 w.Err = binary.Write(w.Writer, binary.BigEndian, uint32(len(s)))
67 }
68 if w.Err == nil {
69 w.Err = binary.Write(w.Writer, binary.BigEndian, []byte(s))
70 }
71 }
72
73 func BasicAuth(user, password string) string {
74 auth := user + ":" + password
75 return base64.StdEncoding.EncodeToString([]byte(auth))
76 }