local_refs.go 608 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package ipfs_api
  2. import (
  3. "encoding/json"
  4. "github.com/ipfs/go-ipfs-api"
  5. )
  6. func (s *MyShell) LocalRefs() (<-chan string, error) {
  7. req := shell.NewRequest(s.Url, "refs/local")
  8. resp, err := req.Send(s.Client)
  9. if err != nil {
  10. return nil, err
  11. }
  12. if resp.Error != nil {
  13. return nil, resp.Error
  14. }
  15. out := make(chan string)
  16. go func() {
  17. var ref struct {
  18. Ref string
  19. }
  20. defer resp.Close()
  21. defer close(out)
  22. dec := json.NewDecoder(resp.Output)
  23. for {
  24. err := dec.Decode(&ref)
  25. if err != nil {
  26. return
  27. }
  28. if len(ref.Ref) > 0 {
  29. out <- ref.Ref
  30. }
  31. }
  32. }()
  33. return out, nil
  34. }