bring back yahoo pipes!
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 73 lines 1.5 kB view raw
1package engine 2 3import ( 4 "fmt" 5 "sync" 6 7 "github.com/kierank/pipes/nodes" 8 "github.com/kierank/pipes/nodes/outputs" 9 "github.com/kierank/pipes/nodes/sources" 10 "github.com/kierank/pipes/nodes/transforms" 11) 12 13type Registry struct { 14 mu sync.RWMutex 15 nodeImpls map[string]nodes.Node 16} 17 18func NewRegistry() *Registry { 19 r := &Registry{ 20 nodeImpls: make(map[string]nodes.Node), 21 } 22 23 // Register built-in nodes 24 // Sources 25 r.Register(&sources.RSSSourceNode{}) 26 r.Register(&sources.HTTPSourceNode{}) 27 28 // Transforms 29 r.Register(&transforms.FilterNode{}) 30 r.Register(&transforms.SortNode{}) 31 r.Register(&transforms.LimitNode{}) 32 r.Register(&transforms.MergeNode{}) 33 r.Register(&transforms.MapNode{}) 34 r.Register(&transforms.RegexNode{}) 35 r.Register(&transforms.TruncateNode{}) 36 37 // Outputs 38 r.Register(&outputs.JSONOutputNode{}) 39 r.Register(&outputs.RSSOutputNode{}) 40 r.Register(&outputs.WebhookOutputNode{}) 41 42 return r 43} 44 45func (r *Registry) Register(node nodes.Node) { 46 r.mu.Lock() 47 defer r.mu.Unlock() 48 r.nodeImpls[node.Type()] = node 49} 50 51func (r *Registry) Get(nodeType string) (nodes.Node, error) { 52 r.mu.RLock() 53 defer r.mu.RUnlock() 54 55 node, ok := r.nodeImpls[nodeType] 56 if !ok { 57 return nil, fmt.Errorf("unknown node type: %s", nodeType) 58 } 59 60 return node, nil 61} 62 63func (r *Registry) GetAll() []nodes.Node { 64 r.mu.RLock() 65 defer r.mu.RUnlock() 66 67 nodeList := make([]nodes.Node, 0, len(r.nodeImpls)) 68 for _, node := range r.nodeImpls { 69 nodeList = append(nodeList, node) 70 } 71 72 return nodeList 73}