Add filtersRemove() and the swarmFiltersRmCmd.Run() parts that call it.
Also added types and marshalers to the swarmFiltersAddCmd and swarmFiltersRmCmd structs. License: MIT Signed-off-by: Yuval Langer <yuval.langer@gmail.com>
Yuval Langer committed
Jun 21, 2016 at 00:16 UTC
42468d0ebef2b13e6755e7c9f85040c58ab413cf
1 file changed
+73
core/commands/swarm.go
+73
@@ -497,6 +497,10 @@ add your filters to the ipfs config file.
497
498
res.SetOutput(&stringList{added})
499
},
500
+ Marshalers: cmds.MarshalerMap{
501
+ cmds.Text: stringListMarshaler,
502
+ },
503
+ Type: stringList{},
504
}
505
506
var swarmFiltersRmCmd = &cmds.Command{
@@ -529,11 +533,32 @@ remove your filters from the ipfs config file.
533
return
534
}
535
536
+ r, err := fsrepo.Open(req.InvocContext().ConfigRoot)
537
+ if err != nil {
538
+ res.SetError(err, cmds.ErrNormal)
539
+ return
540
+ }
541
+ defer r.Close()
542
+ cfg, err := r.Config()
543
+ if err != nil {
544
+ res.SetError(err, cmds.ErrNormal)
545
+ return
546
+ }
547
+
548
if req.Arguments()[0] == "all" || req.Arguments()[0] == "*" {
549
fs := snet.Filters.Filters()
550
for _, f := range fs {
551
snet.Filters.Remove(f)
552
}
553
+
554
+ removed, err := filtersRemoveAll(r, cfg)
555
+ if err != nil {
556
+ res.SetError(err, cmds.ErrNormal)
557
+ return
558
+ }
559
+
560
+ res.SetOutput(&stringList{removed})
561
+
562
return
563
}
564
@@ -546,7 +571,15 @@ remove your filters from the ipfs config file.
571
572
snet.Filters.Remove(mask)
573
}
574
+
575
+ removed, err := filtersRemove(r, cfg, req.Arguments())
576
+
577
+ res.SetOutput(&stringList{removed})
578
+ },
579
+ Marshalers: cmds.MarshalerMap{
580
+ cmds.Text: stringListMarshaler,
581
},
582
+ Type: stringList{},
583
}
584
585
func filtersAdd(r repo.Repo, cfg *config.Config, filters []string) ([]string, error) {
@@ -584,3 +617,43 @@ func filtersAdd(r repo.Repo, cfg *config.Config, filters []string) ([]string, er
617
618
return addedList, nil
619
}
620
+
621
+func filtersRemoveAll(r repo.Repo, cfg *config.Config) ([]string, error) {
622
+ removed := cfg.Swarm.AddrFilters
623
+ cfg.Swarm.AddrFilters = nil
624
+
625
+ if err := r.SetConfig(cfg); err != nil {
626
+ return nil, err
627
+ }
628
+
629
+ return removed, nil
630
+}
631
+
632
+func filtersRemove(r repo.Repo, cfg *config.Config, toRemoveFilters []string) ([]string, error) {
633
+ removed := make([]string, 0, len(toRemoveFilters))
634
+ keep := make([]string, 0, len(cfg.Swarm.AddrFilters))
635
+
636
+ oldFilters := cfg.Swarm.AddrFilters
637
+
638
+ for _, oldFilter := range oldFilters {
639
+ found := false
640
+ for _, toRemoveFilter := range toRemoveFilters {
641
+ if oldFilter == toRemoveFilter {
642
+ found = true
643
+ removed = append(removed, toRemoveFilter)
644
+ break
645
+ }
646
+ }
647
+
648
+ if !found {
649
+ keep = append(keep, oldFilter)
650
+ }
651
+ }
652
+ cfg.Swarm.AddrFilters = keep
653
+
654
+ if err := r.SetConfig(cfg); err != nil {
655
+ return nil, err
656
+ }
657
+
658
+ return removed, nil
659
+}