MCPcopy
hub / github.com/ContainerSSH/ContainerSSH / requestURLWithLogger

Method requestURLWithLogger

http/client_impl.go:118–176  ·  view source on GitHub ↗
(
	method string,
	u string,
	requestBody interface{},
	responseBody interface{},
	logger log.Logger,
)

Source from the content-addressed store, hash-verified

116}
117
118func (c *client) requestURLWithLogger(
119 method string,
120 u string,
121 requestBody interface{},
122 responseBody interface{},
123 logger log.Logger,
124) (int, error) {
125 logger = logger.WithLabel("method", method).WithLabel("url", u)
126
127 httpClient := c.createHTTPClient(logger)
128 req, err := c.createRequestForURL(method, u, requestBody, logger)
129 if err != nil {
130 return 0, err
131 }
132
133 logger.Debug(message.NewMessage(message.MHTTPClientRequest, "HTTP %s request to %s", method, u))
134
135 resp, err := httpClient.Do(req)
136 if err != nil {
137 var typedError message.Message
138 if errors.As(err, &typedError) {
139 return 0, err
140 }
141 err = message.Wrap(err,
142 message.EHTTPFailureConnectionFailed, "HTTP %s request to %s failed", method, u)
143 logger.Debug(err)
144 return 0, err
145 }
146 defer func() { _ = resp.Body.Close() }()
147
148 logger.Debug(
149 message.NewMessage(
150 message.MHTTPClientResponse,
151 "HTTP response with status %d",
152 resp.StatusCode,
153 ).Label("statusCode", resp.StatusCode))
154
155 body, err := io.ReadAll(resp.Body)
156 if err != nil {
157 err = message.Wrap(err,
158 message.EHTTPFailureConnectionFailed, "HTTP %s request to %s failed", method, u)
159 logger.Debug(err)
160 return 0, err
161 }
162
163 if responseBody == nil {
164 return resp.StatusCode, nil
165 }
166 decoder := json.NewDecoder(bytes.NewReader(body))
167 if !c.allowLaxDecoding {
168 decoder.DisallowUnknownFields()
169 }
170 if err := decoder.Decode(responseBody); err != nil {
171 err = message.Wrap(err, message.EHTTPFailureDecodeFailed, "Failed to decode HTTP response")
172 logger.Debug(err)
173 return resp.StatusCode, err
174 }
175 return resp.StatusCode, nil

Callers 2

requestURLMethod · 0.95
requestMethod · 0.95

Calls 9

createHTTPClientMethod · 0.95
createRequestForURLMethod · 0.95
DecodeMethod · 0.95
NewMessageFunction · 0.92
WrapFunction · 0.92
WithLabelMethod · 0.65
DebugMethod · 0.65
CloseMethod · 0.65
LabelMethod · 0.65

Tested by

no test coverage detected