in scripts/find-trace-of-missing-projects/plutocore.go [23:73]
func sendToPlutoCore(cli *http.Client, baseUrl string, filepath string, vsid string, storageId int, bearerTokenContent *string) error {
log.Printf("Sending %s as vsid %s to %s...", filepath, vsid, baseUrl)
modTimeString, err := getModTime(filepath)
if err != nil {
return err
}
fileContent, err := os.Open(filepath)
if err != nil {
return err
}
defer fileContent.Close()
args := []string{
"vsid="+vsid,
"filename="+path.Base(filepath),
"storage="+ fmt.Sprintf("%d", storageId),
"modtime=" + modTimeString,
}
targetUrl := fmt.Sprintf("%s/api/migration/importProblematicProject?%s", baseUrl, strings.Join(args,"&"))
req, err := http.NewRequest("POST", targetUrl, fileContent)
if err != nil {
return err
}
req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", *bearerTokenContent))
response, err := cli.Do(req)
if err != nil {
return err
}
defer response.Body.Close()
responseContent, err := ioutil.ReadAll(response.Body)
if err != nil {
return err
}
switch response.StatusCode {
case 200:
log.Printf("Sent %s ok", filepath)
return nil
case 401:
fallthrough
case 403:
log.Printf("Permission denied, maybe the token expired?")
return errors.New("permission denied")
default:
log.Printf("Server responded %d %s", response.StatusCode, string(responseContent))
return errors.New(fmt.Sprintf("server error %d", response.StatusCode))
}
}