in pkg/download/downloader.go [47:108]
func Download(ctx *log.Context, d Downloader) (int, io.ReadCloser, error) {
req, err := d.GetRequest()
if err != nil {
return -1, nil, errors.Wrapf(err, "failed to create http request")
}
requestID := req.Header.Get(xMsClientRequestIdHeaderName)
if len(requestID) > 0 {
ctx.Log("info", fmt.Sprintf("starting download with client request ID %s", requestID))
}
resp, err := httpClient.Do(req)
if err != nil {
err = urlutil.RemoveUrlFromErr(err)
return -1, nil, errors.Wrapf(err, "http request failed")
}
if resp.StatusCode == http.StatusOK {
return resp.StatusCode, resp.Body, nil
}
errString := ""
requestId := resp.Header.Get(xMsServiceRequestIdHeaderName)
switch d.(type) {
case *blobWithMsiToken:
switch resp.StatusCode {
case http.StatusNotFound:
errString = MsiDownload404ErrorString
case http.StatusForbidden:
errString = MsiDownload403ErrorString
}
break
default:
hostname := req.URL.Host //"string"
switch resp.StatusCode {
case http.StatusUnauthorized:
errString = fmt.Sprintf("CustomScript failed to download the file from %s because access was denied. Please fix the blob permissions and try again, the response code and message returned were: %q",
hostname,
resp.Status)
case http.StatusNotFound:
errString = fmt.Sprintf("CustomScript failed to download the file from %s because it does not exist. Please create the blob and try again, the response code and message returned were: %q",
hostname,
resp.Status)
case http.StatusBadRequest:
errString = fmt.Sprintf("CustomScript failed to download the file from %s because parts of the request were incorrectly formatted, missing, and/or invalid. The response code and message returned were: %q",
hostname,
resp.Status)
case http.StatusInternalServerError:
errString = fmt.Sprintf("CustomScript failed to download the file from %s due to an issue with storage. The response code and message returned were: %q",
hostname,
resp.Status)
default:
errString = fmt.Sprintf("CustomScript failed to download the file from %s because the server returned a response code and message of %q Please verify the machine has network connectivity.",
hostname,
resp.Status)
}
}
if len(requestId) > 0 {
errString += fmt.Sprintf(" (Service request ID: %s)", requestId)
}
return resp.StatusCode, nil, fmt.Errorf(errString)
}