in oss/lib/probe.go [776:848]
func (pc *ProbeCommand) probeDownload() error {
var err error
pingPath := ""
if pc.pbOption.fromUrl != "" {
pingPath, _, err = urlCheck(pc.pbOption.fromUrl)
if err != nil {
return fmt.Errorf("probeDownloadWithHttpUrl error,%s", err.Error())
}
} else {
if pc.pbOption.bucketName == "" {
return fmt.Errorf("probeDownloadWithParameter error,bucketName is not exist")
}
endPoint, _ := pc.command.getEndpoint(pc.pbOption.bucketName)
if endPoint == "" {
return fmt.Errorf("probeDownloadWithParameter error,endpoint is not exist")
}
pSlice := strings.Split(endPoint, "//")
if len(pSlice) == 1 {
endPoint = pSlice[0]
} else {
endPoint = pSlice[1]
}
pingPath = endPoint
}
fmt.Printf("begin parse parameters and prepare object...[√]\n")
fmt.Printf("begin network detection...")
pc.ossNetDetection(pingPath)
fmt.Printf("\rbegin network detection...[√]\n")
startT := time.Now()
if pc.pbOption.fromUrl != "" {
err = pc.downloadWithHttpUrl()
} else {
err = pc.probeDownloadWithParameter()
}
endT := time.Now()
var logBuff bytes.Buffer
if err == nil {
fmt.Printf("\rbegin download file...[√]\n")
logBuff.WriteString("\n************************* download result *************************\n")
logBuff.WriteString("download file:success\n")
logBuff.WriteString(fmt.Sprintf("download file size:%d(byte)\n", pc.pbOption.dlFileSize))
logBuff.WriteString(fmt.Sprintf("download time consuming:%d(ms)\n", endT.UnixNano()/1000/1000-startT.UnixNano()/1000/1000))
logBuff.WriteString("(only the time consumed by probe command)\n\n")
if pc.pbOption.dlFilePath != "" {
logBuff.WriteString(fmt.Sprintf("download file is %s\n", pc.pbOption.dlFilePath))
}
} else {
fmt.Printf("\rbegin download file...[x]\n\n")
logBuff.WriteString("\n************************* download result *************************\n")
logBuff.WriteString("download file:failure\n")
logBuff.WriteString("\n************************* error message *************************\n")
logBuff.WriteString(fmt.Sprintf("%s\n", err.Error()))
}
fmt.Printf("%s", logBuff.String())
pc.pbOption.logFile.WriteString(logBuff.String())
fmt.Printf("\n************************* report log info*************************\n")
fmt.Printf("report log file:%s\n\n", pc.pbOption.logName)
return err
}