...
1 package playwright
2
3 import (
4 "bufio"
5 "encoding/base64"
6 "os"
7 "path/filepath"
8 )
9
10 type streamImpl struct {
11 channelOwner
12 }
13
14 func (s *streamImpl) SaveAs(path string) error {
15 err := os.MkdirAll(filepath.Dir(path), 0777)
16 if err != nil {
17 return err
18 }
19 file, err := os.Create(path)
20 if err != nil {
21 return err
22 }
23 defer file.Close()
24 writer := bufio.NewWriter(file)
25 for {
26 binary, err := s.channel.Send("read")
27 if err != nil {
28 return err
29 }
30 bytes, err := base64.StdEncoding.DecodeString(binary.(string))
31 if err != nil {
32 return err
33 }
34 if len(bytes) == 0 {
35 break
36 }
37 _, err = writer.Write(bytes)
38 if err != nil {
39 return err
40 }
41 }
42 return nil
43 }
44
45 func newStream(parent *channelOwner, objectType string, guid string, initializer map[string]interface{}) *streamImpl {
46 stream := &streamImpl{}
47 stream.createChannelOwner(stream, parent, objectType, guid, initializer)
48 return stream
49 }
50
View as plain text