@cryptotaxi247 / kubo / commits / 42468d0eb

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 +}