38
38
defaultTimeout = 10 * time .Second
39
39
)
40
40
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
+ )
43
48
44
49
// NginxClient lets you access NGINX Plus API.
45
50
type NginxClient struct {
@@ -570,15 +575,15 @@ func NewNginxClient(apiEndpoint string, opts ...Option) (*NginxClient, error) {
570
575
}
571
576
572
577
if c .httpClient == nil {
573
- return nil , errors . New ("http client is not set" )
578
+ return nil , fmt . Errorf ("http client: %w" , ErrParameterRequired )
574
579
}
575
580
576
581
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 )
578
583
}
579
584
580
585
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 )
582
587
}
583
588
584
589
if c .checkAPI {
@@ -594,7 +599,7 @@ func NewNginxClient(apiEndpoint string, opts ...Option) (*NginxClient, error) {
594
599
}
595
600
}
596
601
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 )
598
603
}
599
604
}
600
605
@@ -642,7 +647,9 @@ func (client *NginxClient) getAPIVersions(httpClient *http.Client, endpoint stri
642
647
defer resp .Body .Close ()
643
648
644
649
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 ))
646
653
}
647
654
648
655
body , err := io .ReadAll (resp .Body )
@@ -714,7 +721,7 @@ func (client *NginxClient) AddHTTPServer(upstream string, server UpstreamServer)
714
721
return fmt .Errorf ("failed to add %v server to %v upstream: %w" , server .Server , upstream , err )
715
722
}
716
723
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 )
718
725
}
719
726
720
727
path := fmt .Sprintf ("http/upstreams/%v/servers/" , upstream )
@@ -733,7 +740,7 @@ func (client *NginxClient) DeleteHTTPServer(upstream string, server string) erro
733
740
return fmt .Errorf ("failed to remove %v server from %v upstream: %w" , server , upstream , err )
734
741
}
735
742
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 )
737
744
}
738
745
739
746
path := fmt .Sprintf ("http/upstreams/%v/servers/%v" , upstream , id )
@@ -1028,7 +1035,7 @@ func (client *NginxClient) AddStreamServer(upstream string, server StreamUpstrea
1028
1035
return fmt .Errorf ("failed to add %v stream server to %v upstream: %w" , server .Server , upstream , err )
1029
1036
}
1030
1037
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 )
1032
1039
}
1033
1040
1034
1041
path := fmt .Sprintf ("stream/upstreams/%v/servers/" , upstream )
@@ -1046,7 +1053,7 @@ func (client *NginxClient) DeleteStreamServer(upstream string, server string) er
1046
1053
return fmt .Errorf ("failed to remove %v stream server from %v upstream: %w" , server , upstream , err )
1047
1054
}
1048
1055
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 )
1050
1057
}
1051
1058
1052
1059
path := fmt .Sprintf ("stream/upstreams/%v/servers/%v" , upstream , id )
@@ -1541,7 +1548,7 @@ func (client *NginxClient) getKeyValPairs(zone string, stream bool) (KeyValPairs
1541
1548
base = "stream"
1542
1549
}
1543
1550
if zone == "" {
1544
- return nil , errors . New ("zone required" )
1551
+ return nil , fmt . Errorf ("zone: %w" , ErrParameterRequired )
1545
1552
}
1546
1553
1547
1554
path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
@@ -1594,7 +1601,7 @@ func (client *NginxClient) addKeyValPair(zone string, key string, val string, st
1594
1601
base = "stream"
1595
1602
}
1596
1603
if zone == "" {
1597
- return errors . New ("zone required" )
1604
+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
1598
1605
}
1599
1606
1600
1607
path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
@@ -1622,7 +1629,7 @@ func (client *NginxClient) modifyKeyValPair(zone string, key string, val string,
1622
1629
base = "stream"
1623
1630
}
1624
1631
if zone == "" {
1625
- return errors . New ("zone required" )
1632
+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
1626
1633
}
1627
1634
1628
1635
path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
@@ -1652,7 +1659,7 @@ func (client *NginxClient) deleteKeyValuePair(zone string, key string, stream bo
1652
1659
base = "stream"
1653
1660
}
1654
1661
if zone == "" {
1655
- return errors . New ("zone required" )
1662
+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
1656
1663
}
1657
1664
1658
1665
// 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 {
1683
1690
base = "stream"
1684
1691
}
1685
1692
if zone == "" {
1686
- return errors . New ("zone required" )
1693
+ return fmt . Errorf ("zone: %w" , ErrParameterRequired )
1687
1694
}
1688
1695
1689
1696
path := fmt .Sprintf ("%v/keyvals/%v" , base , zone )
0 commit comments