func ShowVersion(versionDetails *utils.VersionDetails, bintrayDetails *config.BintrayDetails) error { if bintrayDetails.User == "" { bintrayDetails.User = versionDetails.Subject } version := versionDetails.Version if versionDetails.Version == "" { versionDetails.Version = "_latest" version = "latest" } url := bintrayDetails.ApiUrl + "packages/" + versionDetails.Subject + "/" + versionDetails.Repo + "/" + versionDetails.Package + "/versions/" + versionDetails.Version log.Info("Getting version details...") httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) resp, body, _, _ := ioutils.SendGet(url, true, httpClientsDetails) if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Version", version, "details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func DownloadVersion(versionDetails *utils.VersionDetails, targetPath string, flags *utils.DownloadFlags) (totalDownloded, totalFailed int, err error) { ioutils.CreateTempDirPath() defer ioutils.RemoveTempDir() if flags.BintrayDetails.User == "" { flags.BintrayDetails.User = versionDetails.Subject } path := BuildDownloadVersionUrl(versionDetails, flags.BintrayDetails, flags.IncludeUnpublished) httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) resp, body, _, _ := ioutils.SendGet(path, true, httpClientsDetails) if resp.StatusCode != 200 { err = cliutils.CheckError(errors.New(resp.Status + ". " + utils.ReadBintrayMessage(body))) return } var results []VersionFilesResult err = json.Unmarshal(body, &results) if cliutils.CheckError(err) != nil { return } totalDownloded, err = downloadFiles(results, versionDetails, targetPath, flags) log.Info("Downloaded", strconv.Itoa(totalDownloded), "artifacts.") totalFailed = len(results) - totalDownloded return }
func GpgSignFile(pathDetails *utils.PathDetails, passphrase string, bintrayDetails *config.BintrayDetails) error { if bintrayDetails.User == "" { bintrayDetails.User = pathDetails.Subject } url := bintrayDetails.ApiUrl + "gpg/" + pathDetails.Subject + "/" + pathDetails.Repo + "/" + pathDetails.Path var data string if passphrase != "" { data = "{ \"passphrase\": \"" + passphrase + "\" }" } log.Info("GPG signing file...") httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) resp, body, err := ioutils.SendPost(url, []byte(data), httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("GPG signed file", pathDetails.Path, ", details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func DoCreatePackage(packageDetails *utils.VersionDetails, flags *utils.PackageFlags) (*http.Response, []byte, error) { if flags.BintrayDetails.User == "" { flags.BintrayDetails.User = packageDetails.Subject } data := utils.CreatePackageJson(packageDetails.Package, flags) url := flags.BintrayDetails.ApiUrl + "packages/" + packageDetails.Subject + "/" + packageDetails.Repo httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) return ioutils.SendPost(url, []byte(data), httpClientsDetails) }
func ShowAccessKey(flags *AccessKeyFlags, org string) (err error) { url := GetAccessKeyPath(flags.BintrayDetails, flags.Id, org) httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) log.Info("Getting access key...") resp, body, _, _ := ioutils.SendGet(url, true, httpClientsDetails) if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Access keys details:") fmt.Println(cliutils.IndentJson(body)) return }
func ShowAccessKeys(bintrayDetails *config.BintrayDetails, org string) error { path := GetAccessKeysPath(bintrayDetails, org) httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) log.Info("Getting access keys...") resp, body, _, _ := ioutils.SendGet(path, true, httpClientsDetails) if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Access keys details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func DeleteAccessKey(flags *AccessKeyFlags, org string) error { url := GetAccessKeyPath(flags.BintrayDetails, flags.Id, org) httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) log.Info("Deleting access key...") resp, body, err := ioutils.SendDelete(url, nil, httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Deleted access key.") return nil }
func doCreateVersion(versionDetails *utils.VersionDetails, flags *utils.VersionFlags, bintrayDetails *config.BintrayDetails) (*http.Response, []byte, error) { if bintrayDetails.User == "" { bintrayDetails.User = versionDetails.Subject } var data string if flags != nil { data = utils.CreateVersionJson(versionDetails.Version, flags) } else { m := map[string]string{ "name": versionDetails.Version} data = cliutils.MapToJson(m) } url := bintrayDetails.ApiUrl + "packages/" + versionDetails.Subject + "/" + versionDetails.Repo + "/" + versionDetails.Package + "/versions" httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) return ioutils.SendPost(url, []byte(data), httpClientsDetails) }
func UpdateAccessKey(flags *AccessKeyFlags, org string) error { data := BuildAccessKeyJson(flags, false) url := GetAccessKeyPath(flags.BintrayDetails, flags.Id, org) httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) log.Info("Updating access key...") resp, body, err := ioutils.SendPatch(url, []byte(data), httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Updated access key, details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func LogsList(packageDetails *utils.VersionDetails, details *config.BintrayDetails) error { if details.User == "" { details.User = packageDetails.Subject } path := details.ApiUrl + "packages/" + packageDetails.Subject + "/" + packageDetails.Repo + "/" + packageDetails.Package + "/logs/" httpClientsDetails := utils.GetBintrayHttpClientDetails(details) log.Info("Getting logs...") resp, body, _, _ := ioutils.SendGet(path, true, httpClientsDetails) if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Log details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func ShowPackage(packageDetails *utils.VersionDetails, bintrayDetails *config.BintrayDetails) (err error) { if bintrayDetails.User == "" { bintrayDetails.User = packageDetails.Subject } url := bintrayDetails.ApiUrl + "packages/" + packageDetails.Subject + "/" + packageDetails.Repo + "/" + packageDetails.Package log.Info("Getting package details...") httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) resp, body, _, _ := ioutils.SendGet(url, true, httpClientsDetails) if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Package", packageDetails.Package, "details:") fmt.Println(cliutils.IndentJson(body)) return }
func DownloadLog(packageDetails *utils.VersionDetails, logName string, details *config.BintrayDetails) error { if details.User == "" { details.User = packageDetails.Subject } path := details.ApiUrl + "packages/" + packageDetails.Subject + "/" + packageDetails.Repo + "/" + packageDetails.Package + "/logs/" + logName httpClientsDetails := utils.GetBintrayHttpClientDetails(details) log.Info("Downloading logs...") resp, err := ioutils.DownloadFile(path, "", logName, httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status)) } log.Debug("Bintray response:", resp.Status) log.Info("Downloaded log.") return nil }
func ShowEntitlement(flags *EntitlementFlags, details *utils.VersionDetails) error { url := BuildEntitlementUrl(flags.BintrayDetails, details, flags.Id) if flags.BintrayDetails.User == "" { flags.BintrayDetails.User = details.Subject } httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) log.Info("Getting entitlement...") resp, body, _, err := ioutils.SendGet(url, true, httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Entitlement details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func UpdateEntitlement(flags *EntitlementFlags, details *utils.VersionDetails) error { path := BuildEntitlementUrl(flags.BintrayDetails, details, flags.Id) if flags.BintrayDetails.User == "" { flags.BintrayDetails.User = details.Subject } data := buildEntitlementJson(flags, true) httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) log.Info("Updating entitlement...") resp, body, err := ioutils.SendPatch(path, []byte(data), httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Updated entitlement, details:") fmt.Println(cliutils.IndentJson(body)) return err }
func uploadFile(artifact cliutils.Artifact, url, logMsgPrefix string, bintrayDetails *config.BintrayDetails) (bool, error) { log.Info(logMsgPrefix+"Uploading artifact:", artifact.LocalPath) f, err := os.Open(artifact.LocalPath) err = cliutils.CheckError(err) if err != nil { return false, err } defer f.Close() httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) resp, body, err := ioutils.UploadFile(f, url, httpClientsDetails) if err != nil { return false, err } log.Debug(logMsgPrefix+"Bintray response:", resp.Status) if resp.StatusCode != 201 && resp.StatusCode != 200 { log.Error(logMsgPrefix + "Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body)) } return resp.StatusCode == 201 || resp.StatusCode == 200, nil }
func DeleteVersion(versionDetails *utils.VersionDetails, bintrayDetails *config.BintrayDetails) error { if bintrayDetails.User == "" { bintrayDetails.User = versionDetails.Subject } url := bintrayDetails.ApiUrl + "packages/" + versionDetails.Subject + "/" + versionDetails.Repo + "/" + versionDetails.Package + "/versions/" + versionDetails.Version log.Info("Deleting version...") httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) resp, body, err := ioutils.SendDelete(url, nil, httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Deleted version", versionDetails.Version+".") return nil }
func PublishVersion(versionDetails *utils.VersionDetails, bintrayDetails *config.BintrayDetails) error { if bintrayDetails.User == "" { bintrayDetails.User = versionDetails.Subject } url := bintrayDetails.ApiUrl + "content/" + versionDetails.Subject + "/" + versionDetails.Repo + "/" + versionDetails.Package + "/" + versionDetails.Version + "/publish" log.Info("Publishing version...") httpClientsDetails := utils.GetBintrayHttpClientDetails(bintrayDetails) resp, body, err := ioutils.SendPost(url, nil, httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Published version", versionDetails.Version+", details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func UpdatePackage(packageDetails *utils.VersionDetails, flags *utils.PackageFlags) error { if flags.BintrayDetails.User == "" { flags.BintrayDetails.User = packageDetails.Subject } data := utils.CreatePackageJson(packageDetails.Package, flags) url := flags.BintrayDetails.ApiUrl + "packages/" + packageDetails.Subject + "/" + packageDetails.Repo + "/" + packageDetails.Package log.Info("Updating package...") httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) resp, body, err := ioutils.SendPatch(url, []byte(data), httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Updated package", packageDetails.Package+".") return nil }
func SignVersion(urlSigningDetails *utils.PathDetails, flags *UrlSigningFlags) error { if flags.BintrayDetails.User == "" { flags.BintrayDetails.User = urlSigningDetails.Subject } path := urlSigningDetails.Subject + "/" + urlSigningDetails.Repo + "/" + urlSigningDetails.Path url := flags.BintrayDetails.ApiUrl + "signed_url/" + path data := builJson(flags) log.Info("Signing URL...") httpClientsDetails := utils.GetBintrayHttpClientDetails(flags.BintrayDetails) resp, body, err := ioutils.SendPost(url, []byte(data), httpClientsDetails) if err != nil { return err } if resp.StatusCode != 200 { return cliutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + cliutils.IndentJson(body))) } log.Debug("Bintray response:", resp.Status) log.Info("Signed URL", path+", details:") fmt.Println(cliutils.IndentJson(body)) return nil }
func createStreamManager(streamDetails *StreamDetails) *helpers.StreamManager { return &helpers.StreamManager{ Url: fmt.Sprintf(STREAM_URL, streamDetails.BintrayDetails.ApiUrl, streamDetails.Subject), HttpClientDetails: utils.GetBintrayHttpClientDetails(streamDetails.BintrayDetails), IncludeFilter: buildIncludeFilterMap(streamDetails.Include)} }