Skip to content

Commit f328203

Browse files
committed
feat: not inline proxy-provider can also set payload as fallback proxies when file/http parsing fails
1 parent 5c40a63 commit f328203

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

adapter/provider/parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,5 +127,5 @@ func ParseProxyProvider(name string, mapping map[string]any) (types.ProxyProvide
127127

128128
interval := time.Duration(uint(schema.Interval)) * time.Second
129129

130-
return NewProxySetProvider(name, interval, parser, vehicle, hc)
130+
return NewProxySetProvider(name, interval, schema.Payload, parser, vehicle, hc)
131131
}

adapter/provider/provider.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ func (pp *proxySetProvider) Close() error {
161161
return pp.Fetcher.Close()
162162
}
163163

164-
func NewProxySetProvider(name string, interval time.Duration, parser resource.Parser[[]C.Proxy], vehicle types.Vehicle, hc *HealthCheck) (*ProxySetProvider, error) {
164+
func NewProxySetProvider(name string, interval time.Duration, payload []map[string]any, parser resource.Parser[[]C.Proxy], vehicle types.Vehicle, hc *HealthCheck) (*ProxySetProvider, error) {
165165
if hc.auto() {
166166
go hc.process()
167167
}
@@ -174,6 +174,19 @@ func NewProxySetProvider(name string, interval time.Duration, parser resource.Pa
174174
},
175175
}
176176

177+
if len(payload) > 0 { // using as fallback proxies
178+
ps := ProxySchema{Proxies: payload}
179+
buf, err := yaml.Marshal(ps)
180+
if err != nil {
181+
return nil, err
182+
}
183+
proxies, err := parser(buf)
184+
if err != nil {
185+
return nil, err
186+
}
187+
pd.proxies = proxies
188+
}
189+
177190
fetcher := resource.NewFetcher[[]C.Proxy](name, interval, vehicle, parser, pd.setProxies)
178191
pd.Fetcher = fetcher
179192
if httpVehicle, ok := vehicle.(*resource.HTTPVehicle); ok {

rules/provider/parse.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,7 @@ func ParseRuleProvider(name string, mapping map[string]any, parse common.ParseRu
6363
return nil, fmt.Errorf("unsupported vehicle type: %s", schema.Type)
6464
}
6565

66-
return NewRuleSetProvider(name, behavior, format, time.Duration(uint(schema.Interval))*time.Second, vehicle, schema.Payload, parse), nil
66+
interval := time.Duration(uint(schema.Interval)) * time.Second
67+
68+
return NewRuleSetProvider(name, behavior, format, interval, vehicle, schema.Payload, parse), nil
6769
}

0 commit comments

Comments
 (0)