github.com/cobalt77/jfrog-client-go@v0.14.5/bintray/services/logs/logs.go (about) 1 package logs 2 3 import ( 4 "errors" 5 "github.com/cobalt77/jfrog-client-go/bintray/auth" 6 "github.com/cobalt77/jfrog-client-go/bintray/services/utils" 7 "github.com/cobalt77/jfrog-client-go/bintray/services/versions" 8 "github.com/cobalt77/jfrog-client-go/httpclient" 9 clientutils "github.com/cobalt77/jfrog-client-go/utils" 10 "github.com/cobalt77/jfrog-client-go/utils/errorutils" 11 "github.com/cobalt77/jfrog-client-go/utils/log" 12 "net/http" 13 "path" 14 ) 15 16 func NewService(client *httpclient.HttpClient) *LogsService { 17 us := &LogsService{client: client} 18 return us 19 } 20 21 type LogsService struct { 22 client *httpclient.HttpClient 23 BintrayDetails auth.BintrayDetails 24 } 25 26 func (ls *LogsService) List(versionPath *versions.Path) error { 27 if ls.BintrayDetails.GetUser() == "" { 28 ls.BintrayDetails.SetUser(versionPath.Subject) 29 } 30 listUrl := ls.BintrayDetails.GetApiUrl() + path.Join("packages", versionPath.Subject, versionPath.Repo, versionPath.Package, "logs") 31 httpClientsDetails := ls.BintrayDetails.CreateHttpClientDetails() 32 log.Info("Getting logs...") 33 client, err := httpclient.ClientBuilder().Build() 34 if err != nil { 35 return err 36 } 37 resp, body, _, _ := client.SendGet(listUrl, true, httpClientsDetails) 38 39 if resp.StatusCode != http.StatusOK { 40 return errorutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + clientutils.IndentJson(body))) 41 } 42 43 log.Debug("Bintray response:", resp.Status) 44 log.Output(clientutils.IndentJson(body)) 45 return nil 46 } 47 48 func (ls *LogsService) Download(versionPath *versions.Path, logName string) error { 49 if ls.BintrayDetails.GetUser() == "" { 50 ls.BintrayDetails.SetUser(versionPath.Subject) 51 } 52 downloadUrl := ls.BintrayDetails.GetApiUrl() + path.Join("packages", versionPath.Subject, versionPath.Repo, versionPath.Package, "logs") 53 54 httpClientsDetails := ls.BintrayDetails.CreateHttpClientDetails() 55 log.Info("Downloading logs...") 56 client, err := httpclient.ClientBuilder().Build() 57 if err != nil { 58 return err 59 } 60 details := &httpclient.DownloadFileDetails{ 61 FileName: logName, 62 DownloadPath: downloadUrl, 63 LocalPath: "", 64 LocalFileName: logName} 65 resp, err := client.DownloadFile(details, "", httpClientsDetails, utils.BintrayDownloadRetries, false) 66 if err != nil { 67 return err 68 } 69 if resp.StatusCode != http.StatusOK { 70 return errorutils.CheckError(errors.New("Bintray response: " + resp.Status)) 71 } 72 log.Debug("Bintray response:", resp.Status) 73 log.Info("Downloaded log.") 74 return nil 75 }