...

Source file src/github.com/launchdarkly/go-sdk-events/v2/util.go

Documentation: github.com/launchdarkly/go-sdk-events/v2

     1  package ldevents
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  func httpErrorMessage(statusCode int, context string, recoverableMessage string) string {
     8  	statusDesc := ""
     9  	if statusCode == 401 {
    10  		statusDesc = " (invalid SDK key)"
    11  	}
    12  	resultMessage := recoverableMessage
    13  	if !isHTTPErrorRecoverable(statusCode) {
    14  		resultMessage = "giving up permanently"
    15  	}
    16  	return fmt.Sprintf("Received HTTP error %d%s for %s - %s",
    17  		statusCode, statusDesc, context, resultMessage)
    18  }
    19  
    20  // Tests whether an HTTP error status represents a condition that might resolve on its own if we retry,
    21  // or at least should not make us permanently stop sending requests.
    22  func isHTTPErrorRecoverable(statusCode int) bool {
    23  	if statusCode >= 400 && statusCode < 500 {
    24  		switch statusCode {
    25  		case 400: // bad request
    26  			return true
    27  		case 408: // request timeout
    28  			return true
    29  		case 429: // too many requests
    30  			return true
    31  		default:
    32  			return false // all other 4xx errors are unrecoverable
    33  		}
    34  	}
    35  	return true
    36  }
    37  

View as plain text