diff options
author | Carlos Tadeu Panato Junior <ctadeu@gmail.com> | 2017-03-11 23:39:00 +0100 |
---|---|---|
committer | enahum <nahumhbl@gmail.com> | 2017-03-11 19:39:00 -0300 |
commit | 11f1859de12be22726a93bb0fd201f3d692022a0 (patch) | |
tree | ffec8cda431c9682dcad870868fe938861a2dc35 /utils/inbucket.go | |
parent | b756ae17c08cebc4a6a0baefc2edf5c4f1cf42cb (diff) | |
download | chat-11f1859de12be22726a93bb0fd201f3d692022a0.tar.gz chat-11f1859de12be22726a93bb0fd201f3d692022a0.tar.bz2 chat-11f1859de12be22726a93bb0fd201f3d692022a0.zip |
improvements for inbucket email test and re-enable Email mention test (#5647)
Now if we dont get the mailbox to check the email we try 5 times, if
still no message we disable the email verification.
Diffstat (limited to 'utils/inbucket.go')
-rw-r--r-- | utils/inbucket.go | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/utils/inbucket.go b/utils/inbucket.go index 1c747cee8..f80d16efd 100644 --- a/utils/inbucket.go +++ b/utils/inbucket.go @@ -3,8 +3,10 @@ package utils import ( "encoding/json" "fmt" + "io" "net/http" "strings" + "time" ) const ( @@ -58,11 +60,22 @@ func GetMailBox(email string) (results JSONMessageHeaderInbucket, err error) { } defer resp.Body.Close() + if resp.Body == nil { + return nil, fmt.Errorf("No Mailbox") + } + var record JSONMessageHeaderInbucket - if err := json.NewDecoder(resp.Body).Decode(&record); err != nil { - fmt.Println(err) - return nil, err + err = json.NewDecoder(resp.Body).Decode(&record) + switch { + case err == io.EOF: + return nil, fmt.Errorf("Error: %s", err) + case err != nil: + return nil, fmt.Errorf("Error: %s", err) + } + if len(record) == 0 { + return nil, fmt.Errorf("No mailbox") } + return record, nil } @@ -87,7 +100,6 @@ func GetMessageFromMailbox(email, id string) (results JSONMessageInbucket, err e defer resp.Body.Close() if err := json.NewDecoder(resp.Body).Decode(&record); err != nil { - fmt.Println(err) return record, err } return record, nil @@ -113,3 +125,21 @@ func DeleteMailBox(email string) (err error) { return nil } + +func RetryInbucket(attempts int, callback func() error) (err error) { + for i := 0; ; i++ { + err = callback() + if err == nil { + return nil + } + + if i >= (attempts - 1) { + break + } + + time.Sleep(5 * time.Second) + + fmt.Println("retrying...") + } + return fmt.Errorf("After %d attempts, last error: %s", attempts, err) +} |