3838 defaultTimeout = 10 * time .Second
3939)
4040
41- // ErrUnsupportedVer means that client's API version is not supported by NGINX plus API.
42- var ErrUnsupportedVer = errors .New ("API version of the client is not supported by running NGINX Plus" )
41+ var (
42+ ErrParameterRequired = errors .New ("parameter is required" )
43+ ErrServerNotFound = errors .New ("server not found" )
44+ ErrServerExists = errors .New ("server already exists" )
45+ ErrNotSupported = errors .New ("not supported" )
46+ ErrInvalidTimeout = errors .New ("invalid timeout" )
47+ )
4348
4449// NginxClient lets you access NGINX Plus API.
4550type NginxClient struct {
@@ -570,15 +575,15 @@ func NewNginxClient(apiEndpoint string, opts ...Option) (*NginxClient, error) {
570575 }
571576
572577 if c .httpClient == nil {
573- return nil , errors . New ("http client is not set" )
578+ return nil , fmt . Errorf ("http client: %w" , ErrParameterRequired )
574579 }
575580
576581 if ! versionSupported (c .apiVersion ) {
577- return nil , fmt .Errorf ("API version %v is not supported by the client" , c .apiVersion )
582+ return nil , fmt .Errorf ("API version %v: %w by the client" , c .apiVersion , ErrNotSupported )
578583 }
579584
580585 if c .ctxTimeout <= 0 {
581- return nil , fmt .Errorf ("timeout has to be greater than 0 %v " , c .ctxTimeout )
586+ return nil , fmt .Errorf ("timeout %q needs to be greater than 0: %w " , c .ctxTimeout , ErrInvalidTimeout )
582587 }
583588
584589 if c .checkAPI {
@@ -594,7 +599,7 @@ func NewNginxClient(apiEndpoint string, opts ...Option) (*NginxClient, error) {
594599 }
595600 }
596601 if ! found {
597- return nil , fmt .Errorf ("API version %v is not supported by the server" , c .apiVersion )
602+ return nil , fmt .Errorf ("API version %v: %w by the server" , c .apiVersion , ErrNotSupported )
598603 }
599604 }
600605
@@ -642,7 +647,9 @@ func (client *NginxClient) getAPIVersions(httpClient *http.Client, endpoint stri
642647 defer resp .Body .Close ()
643648
644649 if resp .StatusCode != http .StatusOK {
645- return nil , fmt .Errorf ("%v is not accessible: expected %v response, got %v" , endpoint , http .StatusOK , resp .StatusCode )
650+ return nil , createResponseMismatchError (resp .Body ).Wrap (fmt .Sprintf (
651+ "failed to get endpoint %q, expected %v response, got %v" ,
652+ endpoint , http .StatusOK , resp .StatusCode ))
646653 }
647654
648655 body , err := io .ReadAll (resp .Body )
@@ -714,7 +721,7 @@ func (client *NginxClient) AddHTTPServer(upstream string, server UpstreamServer)
714721 return fmt .Errorf ("failed to add %v server to %v upstream: %w" , server .Server , upstream , err )
715722 }
716723 if id != - 1 {
717- return fmt .Errorf ("failed to add %v server to %v upstream: server already exists " , server .Server , upstream )
724+ return fmt .Errorf ("failed to add %v server to %v upstream: %w " , server .Server , upstream , ErrServerExists )
718725 }
719726
720727 path := fmt .Sprintf ("http/upstreams/%v/servers/" , upstream )
@@ -733,7 +740,7 @@ func (client *NginxClient) DeleteHTTPServer(upstream string, server string) erro
733740 return fmt .Errorf ("failed to remove %v server from %v upstream: %w" , server , upstream , err )
734741 }
735742 if id == - 1 {
736- return fmt .Errorf ("failed to remove %v server from %v upstream: server doesn't exist " , server , upstream )
743+ return fmt .Errorf ("failed to remove %v server from %v upstream: %w " , server , upstream , ErrServerNotFound )
737744 }
738745
739746 path := fmt .Sprintf ("http/upstreams/%v/servers/%v" , upstream , id )
@@ -1028,7 +1035,7 @@ func (client *NginxClient) AddStreamServer(upstream string, server StreamUpstrea
10281035 return fmt .Errorf ("failed to add %v stream server to %v upstream: %w" , server .Server , upstream , err )
10291036 }
10301037 if id != - 1 {
1031- return fmt .Errorf ("failed to add %v stream server to %v upstream: server already exists " , server .Server , upstream )
1038+ return fmt .Errorf ("failed to add %v stream server to %v upstream: %w " , server .Server , upstream , ErrServerExists )
10321039 }
10331040
10341041 path := fmt .Sprintf ("stream/upstreams/%v/servers/" , upstream )
@@ -1046,7 +1053,7 @@ func (client *NginxClient) DeleteStreamServer(upstream string, server string) er
10461053 return fmt .Errorf ("failed to remove %v stream server from %v upstream: %w" , server , upstream , err )
10471054 }
10481055 if id == - 1 {
1049- return fmt .Errorf ("failed to remove %v stream server from %v upstream: server doesn't exist " , server , upstream )
1056+ return fmt .Errorf ("failed to remove %v stream server from %v upstream: %w " , server , upstream , ErrServerNotFound )
10501057 }
10511058
10521059 path := fmt .Sprintf ("stream/upstreams/%v/servers/%v" , upstream , id )
@@ -1541,7 +1548,7 @@ func (client *NginxClient) getKeyValPairs(zone string, stream bool) (KeyValPairs
15411548 base = "stream"
15421549 }
15431550 if zone == "" {
1544- return nil , errors . New ("zone required" )
1551+ return nil , fmt . Errorf ("zone: %w" , ErrParameterRequired )
15451552 }
15461553
15471554 path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
@@ -1594,7 +1601,7 @@ func (client *NginxClient) addKeyValPair(zone string, key string, val string, st
15941601 base = "stream"
15951602 }
15961603 if zone == "" {
1597- return errors . New ("zone required" )
1604+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
15981605 }
15991606
16001607 path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
@@ -1622,7 +1629,7 @@ func (client *NginxClient) modifyKeyValPair(zone string, key string, val string,
16221629 base = "stream"
16231630 }
16241631 if zone == "" {
1625- return errors . New ("zone required" )
1632+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
16261633 }
16271634
16281635 path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
@@ -1652,7 +1659,7 @@ func (client *NginxClient) deleteKeyValuePair(zone string, key string, stream bo
16521659 base = "stream"
16531660 }
16541661 if zone == "" {
1655- return errors . New ("zone required" )
1662+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
16561663 }
16571664
16581665 // map[string]string can't have a nil value so we use a different type here.
@@ -1683,7 +1690,7 @@ func (client *NginxClient) deleteKeyValPairs(zone string, stream bool) error {
16831690 base = "stream"
16841691 }
16851692 if zone == "" {
1686- return errors . New ("zone required" )
1693+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
16871694 }
16881695
16891696 path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
0 commit comments