Mercurial > gemma
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 } |