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  }