...

Source file src/github.com/playwright-community/playwright-go/stream.go

Documentation: github.com/playwright-community/playwright-go

     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