in internal/client/integrations/integrations.go [387:503]
func ListVersions(name string, pageSize int, pageToken string, filter string, orderBy string,
allVersions bool, download bool, basicInfo bool,
) (respBody []byte, err error) {
clientPrintSetting := apiclient.ClientPrintHttpResponse.Get()
u, _ := url.Parse(apiclient.GetBaseIntegrationURL())
q := u.Query()
if pageSize != -1 {
q.Set("pageSize", strconv.Itoa(pageSize))
}
if pageToken != "" {
q.Set("pageToken", pageToken)
}
if filter != "" {
q.Set("filter", filter)
}
if orderBy != "" {
q.Set("orderBy", orderBy)
}
u.RawQuery = q.Encode()
u.Path = path.Join(u.Path, "integrations", name, "versions")
if apiclient.GetExportToFile() != "" {
apiclient.ClientPrintHttpResponse.Set(false)
defer apiclient.ClientPrintHttpResponse.Set(apiclient.GetCmdPrintHttpResponseSetting())
}
if !allVersions {
if basicInfo {
apiclient.ClientPrintHttpResponse.Set(false)
respBody, err = apiclient.HttpClient(u.String())
if err != nil {
return nil, err
}
apiclient.ClientPrintHttpResponse.Set(apiclient.GetCmdPrintHttpResponseSetting())
listIvers := listIntegrationVersions{}
listBIvers := listbasicIntegrationVersions{}
if err = json.Unmarshal(respBody, &listIvers); err != nil {
return nil, err
}
for _, iVer := range listIvers.IntegrationVersions {
basicIVer := basicIntegrationVersion{}
basicIVer.SnapshotNumber = iVer.SnapshotNumber
basicIVer.Version = getVersion(iVer.Name)
basicIVer.State = iVer.State
listBIvers.BasicIntegrationVersions = append(listBIvers.BasicIntegrationVersions, basicIVer)
}
newResp, err := json.Marshal(listBIvers)
if clientPrintSetting {
apiclient.PrettyPrint(newResp)
}
return newResp, err
}
respBody, err = apiclient.HttpClient(u.String())
if err != nil {
return nil, err
}
return respBody, err
} else {
respBody, err = apiclient.HttpClient(u.String())
if err != nil {
return nil, err
}
iversions := listIntegrationVersions{}
if err = json.Unmarshal(respBody, &iversions); err != nil {
return nil, err
}
if apiclient.GetExportToFile() != "" {
// Write each version to a file
for _, iversion := range iversions.IntegrationVersions {
var iversionBytes []byte
if iversionBytes, err = json.Marshal(iversion); err != nil {
return nil, err
}
version := iversion.Name[strings.LastIndex(iversion.Name, "/")+1:]
fileName := strings.Join([]string{name, iversion.SnapshotNumber, version}, "+") + ".json"
if download {
version := iversion.Name[strings.LastIndex(iversion.Name, "/")+1:]
payload, err := Download(name, version)
if err != nil {
return nil, err
}
if err = apiclient.WriteByteArrayToFile(
path.Join(apiclient.GetExportToFile(), fileName),
false,
payload); err != nil {
return nil, err
}
} else {
if err = apiclient.WriteByteArrayToFile(
path.Join(apiclient.GetExportToFile(), fileName),
false,
iversionBytes); err != nil {
return nil, err
}
}
clilog.Info.Printf("Downloaded version %s for Integration flow %s\n", version, name)
}
}
// if more versions exist, repeat the process
if iversions.NextPageToken != "" {
if _, err = ListVersions(name, -1, iversions.NextPageToken, filter, orderBy, true, download, false); err != nil {
return nil, err
}
} else {
return nil, nil
}
}
return nil, err
}