diff options
author | Alexander Scharinger <rng.dynamics@gmail.com> | 2021-04-08 23:57:25 +0200 |
---|---|---|
committer | Alexander Scharinger <rng.dynamics@gmail.com> | 2021-04-08 23:57:25 +0200 |
commit | 0fd570171d171aa574d7f01d6033a9c01d668465 (patch) | |
tree | 56a055130e3c2da01cdec080c960977da5738db6 /bridge/github | |
parent | ede5e218ac4ae492f06be9d3bb8a1e9463eda739 (diff) | |
download | git-bug-0fd570171d171aa574d7f01d6033a9c01d668465.tar.gz |
Improve feedback for user when Github rate limiting
The Github bridge itself should not write anything. This commit removes
code writing to stdout and itroduces an event `ImportEventRateLimiting`
to `core.ImportResult` in order to inform about a rate limiting situation
of the Github GraphQL API. Now the communication with the user is
delegated to the various user interfaces.
Diffstat (limited to 'bridge/github')
-rw-r--r-- | bridge/github/import.go | 10 | ||||
-rw-r--r-- | bridge/github/import_mediator.go | 8 |
2 files changed, 9 insertions, 9 deletions
diff --git a/bridge/github/import.go b/bridge/github/import.go index 66710d0f..e89f34c4 100644 --- a/bridge/github/import.go +++ b/bridge/github/import.go @@ -79,8 +79,8 @@ func (gi *githubImporter) ImportAll(ctx context.Context, repo *cache.RepoCache, nextEvent = gi.getEventHandleMsgs() switch event := currEvent.(type) { - case MessageEvent: - fmt.Println(event.msg) + case RateLimitingEvent: + out <- core.NewImportRateLimiting(event.msg) case IssueEvent: // first: commit what is being held in currBug if err = gi.commit(currBug, out); err != nil { @@ -148,9 +148,9 @@ func (gi *githubImporter) getEventHandleMsgs() ImportEvent { for { // read event from import mediator event := gi.mediator.NextImportEvent() - // consume (and use) all message events - if e, ok := event.(MessageEvent); ok { - fmt.Println(e.msg) + // consume (and use) all rate limiting events + if e, ok := event.(RateLimitingEvent); ok { + gi.out <- core.NewImportRateLimiting(e.msg) continue } return event diff --git a/bridge/github/import_mediator.go b/bridge/github/import_mediator.go index ac094bbb..825a0f98 100644 --- a/bridge/github/import_mediator.go +++ b/bridge/github/import_mediator.go @@ -47,11 +47,11 @@ type ImportEvent interface { isImportEvent() } -type MessageEvent struct { +type RateLimitingEvent struct { msg string } -func (MessageEvent) isImportEvent() {} +func (RateLimitingEvent) isImportEvent() {} type IssueEvent struct { issue @@ -404,11 +404,11 @@ func (mm *importMediator) queryOnce(ctx context.Context, query rateLimiter, vars resetTime := rateLimit.ResetAt.Time // Add a few seconds (8) for good measure resetTime = resetTime.Add(8 * time.Second) - msg := fmt.Sprintf("Github GraphQL API rate limit exhausted. Sleeping until %s", resetTime.String()) + msg := fmt.Sprintf("Github GraphQL API: import will sleep until %s", resetTime.String()) select { case <-ctx.Done(): return ctx.Err() - case mm.importEvents <- MessageEvent{msg}: + case mm.importEvents <- RateLimitingEvent{msg}: } timer := time.NewTimer(time.Until(resetTime)) select { |