MCPcopy Create free account
hub / github.com/libgit2/git2go / sendRequest

Method sendRequest

http.go:187–243  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

185}
186
187func (self *httpSmartSubtransportStream) sendRequest() error {
188 defer self.recvReply.Done()
189 self.resp = nil
190
191 var resp *http.Response
192 var err error
193 var userName string
194 var password string
195 for {
196 req := &http.Request{
197 Method: self.req.Method,
198 URL: self.req.URL,
199 Header: self.req.Header,
200 }
201 if req.Method == "POST" {
202 req.Body = self.reader
203 req.ContentLength = -1
204 }
205
206 if userName != "" && password != "" {
207 req.SetBasicAuth(userName, password)
208 }
209 resp, err = http.DefaultClient.Do(req)
210 if err != nil {
211 return err
212 }
213
214 if resp.StatusCode == http.StatusOK {
215 break
216 }
217
218 if resp.StatusCode == http.StatusUnauthorized {
219 resp.Body.Close()
220
221 cred, err := self.owner.transport.SmartCredentials("", CredentialTypeUserpassPlaintext)
222 if err != nil {
223 return err
224 }
225 defer cred.Free()
226
227 userName, password, err = cred.GetUserpassPlaintext()
228 if err != nil {
229 return err
230 }
231
232 continue
233 }
234
235 // Any other error we treat as a hard error and punt back to the caller
236 resp.Body.Close()
237 return fmt.Errorf("Unhandled HTTP error %s", resp.Status)
238 }
239
240 self.sentRequest = true
241 self.resp = resp
242 return nil
243}

Callers 2

ReadMethod · 0.95
sendRequestBackgroundMethod · 0.95

Calls 4

SmartCredentialsMethod · 0.80
GetUserpassPlaintextMethod · 0.80
CloseMethod · 0.65
FreeMethod · 0.65

Tested by

no test coverage detected