provide ability to read and upload cards to drone server.
parent
0a95ecec98
commit
fe9f999fb0
@ -0,0 +1,40 @@
|
||||
package extractor
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"io"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var re = regexp.MustCompile("#((.*?)#)")
|
||||
|
||||
type Writer struct {
|
||||
base io.Writer
|
||||
file []byte
|
||||
}
|
||||
|
||||
func New(w io.Writer) *Writer {
|
||||
return &Writer{w, nil}
|
||||
}
|
||||
|
||||
func (e *Writer) Write(p []byte) (n int, err error) {
|
||||
card := re.FindStringSubmatch(string(p))
|
||||
if card == nil {
|
||||
return e.base.Write(p)
|
||||
}
|
||||
|
||||
data, err := base64.StdEncoding.DecodeString(card[len(card)-1:][0])
|
||||
if err == nil {
|
||||
e.file = data
|
||||
}
|
||||
// remove encoded string for logs
|
||||
return e.base.Write([]byte(""))
|
||||
}
|
||||
|
||||
func (e *Writer) File() ([]byte, bool) {
|
||||
if len(e.file) > 0 {
|
||||
return e.file, true
|
||||
} else {
|
||||
return nil, false
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue