func()

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
}