github.com/cobalt77/jfrog-client-go@v0.14.5/bintray/services/gpg/gpg.go (about) 1 package gpg 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) *GpgService { 17 us := &GpgService{client: client} 18 return us 19 } 20 21 type GpgService struct { 22 client *httpclient.HttpClient 23 BintrayDetails auth.BintrayDetails 24 } 25 26 type Path struct { 27 Subject string 28 Repo string 29 Package string 30 Version string 31 } 32 33 func (gs *GpgService) SignFile(pathDetails *utils.PathDetails, passphrase string) error { 34 if gs.BintrayDetails.GetUser() == "" { 35 gs.BintrayDetails.SetUser(pathDetails.Subject) 36 } 37 url := gs.BintrayDetails.GetApiUrl() + path.Join("gpg", pathDetails.Subject, pathDetails.Repo, pathDetails.Path) 38 39 var data string 40 if passphrase != "" { 41 data = "{ \"passphrase\": \"" + passphrase + "\" }" 42 } 43 44 log.Info("GPG signing file...") 45 httpClientsDetails := gs.BintrayDetails.CreateHttpClientDetails() 46 client, err := httpclient.ClientBuilder().Build() 47 if err != nil { 48 return err 49 } 50 resp, body, err := client.SendPost(url, []byte(data), httpClientsDetails) 51 if err != nil { 52 return err 53 } 54 if resp.StatusCode != http.StatusOK { 55 return errorutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + clientutils.IndentJson(body))) 56 } 57 58 log.Debug("Bintray response:", resp.Status) 59 log.Output(clientutils.IndentJson(body)) 60 return nil 61 } 62 63 func (gs *GpgService) SignVersion(versionPath *versions.Path, passphrase string) error { 64 if gs.BintrayDetails.GetUser() == "" { 65 gs.BintrayDetails.SetUser(versionPath.Subject) 66 } 67 url := gs.BintrayDetails.GetApiUrl() + path.Join("gpg", versionPath.Subject, versionPath.Repo, versionPath.Package, "versions", versionPath.Version) 68 69 var data string 70 if passphrase != "" { 71 data = "{ \"passphrase\": \"" + passphrase + "\" }" 72 } 73 74 log.Info("GPG signing version...") 75 httpClientsDetails := gs.BintrayDetails.CreateHttpClientDetails() 76 client, err := httpclient.ClientBuilder().Build() 77 if err != nil { 78 return err 79 } 80 resp, body, err := client.SendPost(url, []byte(data), httpClientsDetails) 81 if err != nil { 82 return err 83 } 84 if resp.StatusCode != http.StatusOK { 85 return errorutils.CheckError(errors.New("Bintray response: " + resp.Status + "\n" + clientutils.IndentJson(body))) 86 } 87 88 log.Debug("Bintray response:", resp.Status) 89 log.Output(clientutils.IndentJson(body)) 90 return nil 91 }