5
5
"io"
6
6
"net/http"
7
7
"strings"
8
- "sync"
9
8
10
9
"github.com/stacklok/toolhive/pkg/networking"
11
10
)
@@ -14,9 +13,6 @@ import (
14
13
type RemoteRegistryProvider struct {
15
14
registryURL string
16
15
allowPrivateIp bool
17
- registry * Registry
18
- registryOnce sync.Once
19
- registryErr error
20
16
}
21
17
22
18
// NewRemoteRegistryProvider creates a new remote registry provider
@@ -29,46 +25,41 @@ func NewRemoteRegistryProvider(registryURL string, allowPrivateIp bool) *RemoteR
29
25
30
26
// GetRegistry returns the remote registry data
31
27
func (p * RemoteRegistryProvider ) GetRegistry () (* Registry , error ) {
32
- p .registryOnce .Do (func () {
33
- client , err := networking .NewHttpClientBuilder ().
34
- WithPrivateIPs (p .allowPrivateIp ).
35
- Build ()
36
- if err != nil {
37
- p .registryErr = fmt .Errorf ("failed to build http client: %w" , err )
38
- return
39
- }
40
- resp , err := client .Get (p .registryURL )
41
- if err != nil {
42
- p .registryErr = fmt .Errorf ("failed to fetch registry data from URL %s: %w" , p .registryURL , err )
43
- return
44
- }
45
- defer resp .Body .Close ()
28
+ client , err := networking .NewHttpClientBuilder ().
29
+ WithPrivateIPs (p .allowPrivateIp ).
30
+ Build ()
31
+ if err != nil {
32
+ return nil , fmt .Errorf ("failed to build http client: %w" , err )
33
+ }
46
34
47
- // Check if the response status code is OK
48
- if resp . StatusCode != http . StatusOK {
49
- p . registryErr = fmt .Errorf ("response status code from URL %s not OK: status code %d " , p .registryURL , resp . StatusCode )
50
- return
51
- }
35
+ resp , err := client . Get ( p . registryURL )
36
+ if err != nil {
37
+ return nil , fmt .Errorf ("failed to fetch registry data from URL %s: %w " , p .registryURL , err )
38
+ }
39
+ defer resp . Body . Close ()
52
40
53
- // Read the response body
54
- data , err := io .ReadAll (resp .Body )
55
- if err != nil {
56
- p .registryErr = fmt .Errorf ("failed to read registry data from response body: %w" , err )
57
- return
58
- }
41
+ // Check if the response status code is OK
42
+ if resp .StatusCode != http .StatusOK {
43
+ return nil , fmt .Errorf ("response status code from URL %s not OK: status code %d" , p .registryURL , resp .StatusCode )
44
+ }
59
45
60
- p .registry , p .registryErr = parseRegistryData (data )
61
- if p .registryErr != nil {
62
- return
63
- }
46
+ // Read the response body
47
+ data , err := io .ReadAll (resp .Body )
48
+ if err != nil {
49
+ return nil , fmt .Errorf ("failed to read registry data from response body: %w" , err )
50
+ }
64
51
65
- // Set name field on each server based on map key
66
- for name , server := range p .registry .Servers {
67
- server .Name = name
68
- }
69
- })
52
+ registry , err := parseRegistryData (data )
53
+ if err != nil {
54
+ return nil , err
55
+ }
56
+
57
+ // Set name field on each server based on map key
58
+ for name , server := range registry .Servers {
59
+ server .Name = name
60
+ }
70
61
71
- return p . registry , p . registryErr
62
+ return registry , nil
72
63
}
73
64
74
65
// GetServer returns a specific server by name
0 commit comments