@@ -12,8 +12,6 @@ import (
12
12
13
13
"github.com/golang-jwt/jwt/v4"
14
14
"github.com/hashicorp/go-retryablehttp"
15
-
16
- "gitlab.com/gitlab-org/labkit/log"
17
15
)
18
16
19
17
const (
@@ -107,7 +105,11 @@ func newRequest(ctx context.Context, method, host, path string, data interface{}
107
105
return request , nil
108
106
}
109
107
110
- func parseError (resp * http.Response ) error {
108
+ func parseError (resp * http.Response , respErr error ) error {
109
+ if respErr != nil {
110
+ return & ApiError {"Internal API unreachable" }
111
+ }
112
+
111
113
if resp .StatusCode >= 200 && resp .StatusCode <= 399 {
112
114
return nil
113
115
}
@@ -129,6 +131,15 @@ func (c *GitlabNetClient) Post(ctx context.Context, path string, data interface{
129
131
return c .DoRequest (ctx , http .MethodPost , normalizePath (path ), data )
130
132
}
131
133
134
+ func (c * GitlabNetClient ) Do (request * http.Request ) (* http.Response , error ) {
135
+ response , err := c .httpClient .RetryableHTTP .HTTPClient .Do (request )
136
+ if err := parseError (response , err ); err != nil {
137
+ return nil , err
138
+ }
139
+
140
+ return response , nil
141
+ }
142
+
132
143
func (c * GitlabNetClient ) DoRequest (ctx context.Context , method , path string , data interface {}) (* http.Response , error ) {
133
144
request , err := newRequest (ctx , method , c .httpClient .Host , path , data )
134
145
if err != nil {
@@ -152,43 +163,13 @@ func (c *GitlabNetClient) DoRequest(ctx context.Context, method, path string, da
152
163
}
153
164
request .Header .Set (apiSecretHeaderName , tokenString )
154
165
155
- originalRemoteIP , ok := ctx .Value (OriginalRemoteIPContextKey {}).(string )
156
- if ok {
157
- request .Header .Add ("X-Forwarded-For" , originalRemoteIP )
158
- }
159
-
160
166
request .Header .Add ("Content-Type" , "application/json" )
161
167
request .Header .Add ("User-Agent" , c .userAgent )
162
- request .Close = true
163
-
164
- start := time .Now ()
165
168
166
169
response , err := c .httpClient .RetryableHTTP .Do (request )
167
- fields := log.Fields {
168
- "method" : method ,
169
- "url" : request .URL .String (),
170
- "duration_ms" : time .Since (start ) / time .Millisecond ,
171
- }
172
- logger := log .WithContextFields (ctx , fields )
173
-
174
- if err != nil {
175
- logger .WithError (err ).Error ("Internal API unreachable" )
176
- return nil , & ApiError {"Internal API unreachable" }
177
- }
178
-
179
- if response != nil {
180
- logger = logger .WithField ("status" , response .StatusCode )
181
- }
182
- if err := parseError (response ); err != nil {
183
- logger .WithError (err ).Error ("Internal API error" )
170
+ if err := parseError (response , err ); err != nil {
184
171
return nil , err
185
172
}
186
173
187
- if response .ContentLength >= 0 {
188
- logger = logger .WithField ("content_length_bytes" , response .ContentLength )
189
- }
190
-
191
- logger .Info ("Finished HTTP request" )
192
-
193
174
return response , nil
194
175
}
0 commit comments