// NewClient creates a new SFTP client on top of an already created // ssh.Session. func NewClient(s *ssh.Session) (*Client, error) { stdin, err := s.StdinPipe() if err != nil { return nil, err } stdout, err := s.StdoutPipe() if err != nil { return nil, err } stderr, err := s.StderrPipe() if err != nil { return nil, err } if err := s.RequestSubsystem("sftp"); err != nil { return nil, err } sftp := &Client{ stdin: stdin, stdout: stdout, stderr: stderr, chans: &fxpChanList{}, session: s, } if err := sftp.init(); err != nil { return nil, err } return sftp, nil }