@@ -17,7 +17,6 @@ limitations under the License.
17
17
package pullrequest
18
18
19
19
import (
20
- "context"
21
20
"fmt"
22
21
"net/http"
23
22
"net/url"
@@ -26,12 +25,14 @@ import (
26
25
27
26
"golang.org/x/oauth2"
28
27
28
+ "crypto/tls"
29
+
29
30
"github.com/jenkins-x/go-scm/scm/driver/github"
30
31
"github.com/jenkins-x/go-scm/scm/driver/gitlab"
31
32
"go.uber.org/zap"
32
33
)
33
34
34
- func NewSCMHandler (logger * zap.SugaredLogger , raw , provider , token string ) (* Handler , error ) {
35
+ func NewSCMHandler (logger * zap.SugaredLogger , raw , provider , token string , sslVerify bool ) (* Handler , error ) {
35
36
u , err := url .Parse (raw )
36
37
if err != nil {
37
38
return nil , err
@@ -49,16 +50,16 @@ func NewSCMHandler(logger *zap.SugaredLogger, raw, provider, token string) (*Han
49
50
var handler * Handler
50
51
switch provider {
51
52
case "github" :
52
- handler , err = githubHandlerFromURL (u , token , logger )
53
+ handler , err = githubHandlerFromURL (u , token , sslVerify , logger )
53
54
case "gitlab" :
54
- handler , err = gitlabHandlerFromURL (u , token , logger )
55
+ handler , err = gitlabHandlerFromURL (u , token , sslVerify , logger )
55
56
default :
56
57
return nil , fmt .Errorf ("unsupported pr url: %s" , raw )
57
58
}
58
59
return handler , err
59
60
}
60
61
61
- func githubHandlerFromURL (u * url.URL , token string , logger * zap.SugaredLogger ) (* Handler , error ) {
62
+ func githubHandlerFromURL (u * url.URL , token string , sslVerify bool , logger * zap.SugaredLogger ) (* Handler , error ) {
62
63
split := strings .Split (u .Path , "/" )
63
64
if len (split ) < 5 {
64
65
return nil , fmt .Errorf ("could not determine PR from URL: %v" , u )
@@ -83,17 +84,34 @@ func githubHandlerFromURL(u *url.URL, token string, logger *zap.SugaredLogger) (
83
84
}
84
85
}
85
86
ownerRepo := fmt .Sprintf ("%s/%s" , owner , repo )
86
- h := NewHandler ( logger , client , ownerRepo , prNumber )
87
+
87
88
if token != "" {
88
89
ts := oauth2 .StaticTokenSource (
89
90
& oauth2.Token {AccessToken : token },
90
91
)
91
- h .client .Client = oauth2 .NewClient (context .Background (), ts )
92
+ client .Client = & http.Client {
93
+ Transport : & oauth2.Transport {
94
+ Source : ts ,
95
+ Base : & http.Transport {
96
+ /* #nosec G402 */
97
+ TLSClientConfig : & tls.Config {InsecureSkipVerify : ! sslVerify },
98
+ },
99
+ },
100
+ }
101
+ } else {
102
+ client .Client = & http.Client {
103
+ Transport : & http.Transport {
104
+ /* #nosec G402 */
105
+ TLSClientConfig : & tls.Config {InsecureSkipVerify : ! sslVerify },
106
+ },
107
+ }
92
108
}
109
+
110
+ h := NewHandler (logger , client , ownerRepo , prNumber )
93
111
return h , nil
94
112
}
95
113
96
- func gitlabHandlerFromURL (u * url.URL , token string , logger * zap.SugaredLogger ) (* Handler , error ) {
114
+ func gitlabHandlerFromURL (u * url.URL , token string , sslVerify bool , logger * zap.SugaredLogger ) (* Handler , error ) {
97
115
// The project name can be multiple /'s deep, so split on / and work from right to left.
98
116
split := strings .Split (u .Path , "/" )
99
117
@@ -124,14 +142,26 @@ func gitlabHandlerFromURL(u *url.URL, token string, logger *zap.SugaredLogger) (
124
142
return nil , fmt .Errorf ("error creating client: %w" , err )
125
143
}
126
144
}
145
+
127
146
if token != "" {
128
147
client .Client = & http.Client {
129
148
Transport : & gitlabClient {
130
- token : token ,
131
- transport : http .DefaultTransport ,
149
+ token : token ,
150
+ transport : & http.Transport {
151
+ /* #nosec G402 */
152
+ TLSClientConfig : & tls.Config {InsecureSkipVerify : ! sslVerify },
153
+ },
154
+ },
155
+ }
156
+ } else {
157
+ client .Client = & http.Client {
158
+ Transport : & http.Transport {
159
+ /* #nosec G402 */
160
+ TLSClientConfig : & tls.Config {InsecureSkipVerify : ! sslVerify },
132
161
},
133
162
}
134
163
}
164
+
135
165
return NewHandler (logger , client , project , prInt ), nil
136
166
}
137
167
0 commit comments