github: try to make token generation more robust against bad connection

Michael Muré created

Change summary

bridge/github/config.go | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)

Detailed changes

bridge/github/config.go 🔗

@@ -277,7 +277,9 @@ func pollGithubForAuthorization(deviceCode string, intervalSec int64) (string, e
 	for {
 		resp, err := client.PostForm("https://github.com/login/oauth/access_token", params)
 		if err != nil {
-			return "", errors.Wrap(err, "error polling the Github API")
+			fmt.Printf("error polling the Github API: %s\n", err)
+			time.Sleep(interval * time.Millisecond)
+			continue
 		}
 		if resp.StatusCode != http.StatusOK {
 			_ = resp.Body.Close()
@@ -287,13 +289,17 @@ func pollGithubForAuthorization(deviceCode string, intervalSec int64) (string, e
 		data, err := ioutil.ReadAll(resp.Body)
 		if err != nil {
 			_ = resp.Body.Close()
-			return "", errors.Wrap(err, "error polling the Github API")
+			fmt.Printf("error polling the Github API: %s\n", err)
+			time.Sleep(interval * time.Millisecond)
+			continue
 		}
 		_ = resp.Body.Close()
 
 		values, err := url.ParseQuery(string(data))
 		if err != nil {
-			return "", errors.Wrap(err, "error decoding Github API response")
+			fmt.Printf("error decoding Github API response: %s\n", err)
+			time.Sleep(interval * time.Millisecond)
+			continue
 		}
 
 		if token := values.Get("access_token"); token != "" {