11package http
22
33import (
4+ "encoding/json"
45 commonCliConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config"
56 "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
7+ "github.com/jfrog/jfrog-client-go/auth"
68 clientConfig "github.com/jfrog/jfrog-client-go/config"
79 "github.com/jfrog/jfrog-client-go/http/jfroghttpclient"
10+ "github.com/jfrog/jfrog-client-go/utils"
11+ "github.com/jfrog/jfrog-client-go/utils/errorutils"
12+ "github.com/jfrog/jfrog-client-go/utils/io/httputils"
13+ "net/http"
814)
915
10- func NewAppHttpClient (serverDetails * commonCliConfig.ServerDetails ) (* jfroghttpclient.JfrogHttpClient , error ) {
16+ type AppHttpClient interface {
17+ GetHttpClient () * jfroghttpclient.JfrogHttpClient
18+ Post (path string , requestBody interface {}) (resp * http.Response , body []byte , err error )
19+ }
20+
21+ type appHttpClient struct {
22+ client * jfroghttpclient.JfrogHttpClient
23+ serverDetails * commonCliConfig.ServerDetails
24+ authDetails auth.ServiceDetails
25+ serviceConfig clientConfig.Config
26+ }
27+
28+ func NewAppHttpClient (serverDetails * commonCliConfig.ServerDetails ) (AppHttpClient , error ) {
1129 certsPath , err := coreutils .GetJfrogCertsDir ()
1230 if err != nil {
1331 return nil , err
@@ -27,7 +45,7 @@ func NewAppHttpClient(serverDetails *commonCliConfig.ServerDetails) (*jfroghttpc
2745 return nil , err
2846 }
2947
30- return jfroghttpclient .JfrogClientBuilder ().
48+ jfHttpClient , err := jfroghttpclient .JfrogClientBuilder ().
3149 SetCertificatesPath (certsPath ).
3250 SetInsecureTls (serviceConfig .IsInsecureTls ()).
3351 SetClientCertPath (serverDetails .GetClientCertPath ()).
@@ -39,4 +57,40 @@ func NewAppHttpClient(serverDetails *commonCliConfig.ServerDetails) (*jfroghttpc
3957 SetRetries (serviceConfig .GetHttpRetries ()).
4058 SetRetryWaitMilliSecs (serviceConfig .GetHttpRetryWaitMilliSecs ()).
4159 Build ()
60+
61+ if err != nil {
62+ return nil , err
63+ }
64+
65+ appClient := & appHttpClient {
66+ client : jfHttpClient ,
67+ serverDetails : serverDetails ,
68+ authDetails : authDetails ,
69+ serviceConfig : serviceConfig ,
70+ }
71+ return appClient , nil
72+ }
73+
74+ func (c * appHttpClient ) GetHttpClient () * jfroghttpclient.JfrogHttpClient {
75+ return c .client
76+ }
77+
78+ func (c * appHttpClient ) Post (path string , requestBody interface {}) (resp * http.Response , body []byte , err error ) {
79+ url , err := utils .BuildUrl (c .serverDetails .Url , path , nil )
80+ if err != nil {
81+ return nil , nil , err
82+ }
83+
84+ var requestContent []byte
85+ if requestBody != nil {
86+ requestContent , err = json .Marshal (requestBody )
87+ if err != nil {
88+ return nil , nil , errorutils .CheckError (err )
89+ }
90+ }
91+
92+ var httpClientDetails httputils.HttpClientDetails
93+ httpClientDetails = c .authDetails .CreateHttpClientDetails ()
94+ httpClientDetails .SetContentTypeApplicationJson ()
95+ return c .client .SendPost (url , requestContent , & httpClientDetails )
4296}
0 commit comments