Documentation ¶
Overview ¶
Package selectorxl provides a simple xlist.Checker implementation that can be used to select the component defined to the requested resource.
This package is a work in progress and makes no API stability promises.
Index ¶
Examples ¶
Constants ¶
View Source
const ComponentClass = "selector"
ComponentClass registered.
Variables ¶
This section is empty.
Functions ¶
func Builder ¶
func Builder(defaultCfg Config) xlistd.BuildListFn
Builder returns a builder function.
Types ¶
type List ¶
type List struct {
// contains filtered or unexported fields
}
List is a composite list that redirects requests to RBLs based on the resource type.
Example ¶
package main import ( "context" "fmt" "log" "github.com/luids-io/api/xlist" "github.com/luids-io/xlist/pkg/xlistd" "github.com/luids-io/xlist/pkg/xlistd/components/mockxl" "github.com/luids-io/xlist/pkg/xlistd/components/selectorxl" ) func main() { services := map[xlist.Resource]xlistd.List{ xlist.IPv4: &mockxl.List{ Identifier: "ipservice", Results: []bool{true}, ResourceList: []xlist.Resource{xlist.IPv4}, Reason: "ip4", }, xlist.Domain: &mockxl.List{ Identifier: "domainservice", Results: []bool{true}, ResourceList: []xlist.Resource{xlist.Domain}, Reason: "domain", }} rbl := selectorxl.New("test", services, selectorxl.Config{}) resp, err := rbl.Check(context.Background(), "10.10.10.10", xlist.IPv4) if err != nil || !resp.Result { log.Fatalln("this should not happen") } fmt.Println("check 1:", resp.Reason) resp, err = rbl.Check(context.Background(), "www.google.com", xlist.Domain) if err != nil || !resp.Result { log.Fatalln("this should not happen") } fmt.Println("check 2:", resp.Reason) }
Output: check 1: ip4 check 2: domain
Click to show internal directories.
Click to hide internal directories.