@cryptotaxi247 / kubo / commits / d87ece14c

core/commands/pin: refactor listing all pins

License: MIT Signed-off-by: Christian Couder <chriscool@tuxfamily.org>

Christian Couder committed Jan 17, 2016 at 22:01 UTC d87ece14ceee5aee3488a4ee17c1c0e640ece996
1 file changed +48 -44
core/commands/pin.go
+48 -44
@@ -217,60 +217,27 @@ Example:
217 }
218 }
219
220 + var keys map[string]RefKeyObject
221 +
222 if len(req.Arguments()) > 0 {
223 if !typeStrFound {
224 typeStr = "all"
225 }
226
225 - keys, err := pinLsKeys(req.Arguments(), typeStr, req.Context(), n)
226 -
227 - if err != nil {
228 - res.SetError(err, cmds.ErrNormal)
229 - } else {
230 - res.SetOutput(&RefKeyList{Keys: keys})
227 + keys, err = pinLsKeys(req.Arguments(), typeStr, req.Context(), n)
228 + } else {
229 + if !typeStrFound {
230 + typeStr = "recursive"
231 }
232
233 - return
234 - }
235 -
236 - if !typeStrFound {
237 - typeStr = "recursive"
238 - }
239 -
240 - keys := make(map[string]RefKeyObject)
241 -
242 - AddToResultKeys := func(keyList []key.Key, typeStr string) {
243 - for _, k := range keyList {
244 - keys[k.B58String()] = RefKeyObject{
245 - Type: typeStr,
246 - }
247 - }
233 + keys, err = pinLsAll(typeStr, req.Context(), n)
234 }
235
250 - if typeStr == "direct" || typeStr == "all" {
251 - AddToResultKeys(n.Pinning.DirectKeys(), "direct")
252 - }
253 - if typeStr == "indirect" || typeStr == "all" {
254 - ks := key.NewKeySet()
255 - for _, k := range n.Pinning.RecursiveKeys() {
256 - nd, err := n.DAG.Get(n.Context(), k)
257 - if err != nil {
258 - res.SetError(err, cmds.ErrNormal)
259 - return
260 - }
261 - err = dag.EnumerateChildren(n.Context(), n.DAG, nd, ks)
262 - if err != nil {
263 - res.SetError(err, cmds.ErrNormal)
264 - return
265 - }
266 - }
267 - AddToResultKeys(ks.Keys(), "indirect")
268 - }
269 - if typeStr == "recursive" || typeStr == "all" {
270 - AddToResultKeys(n.Pinning.RecursiveKeys(), "recursive")
236 + if err != nil {
237 + res.SetError(err, cmds.ErrNormal)
238 + } else {
239 + res.SetOutput(&RefKeyList{Keys: keys})
240 }
272 -
273 - res.SetOutput(&RefKeyList{Keys: keys})
241 },
242 Type: RefKeyList{},
243 Marshalers: cmds.MarshalerMap{
@@ -306,6 +273,7 @@ type RefKeyList struct {
273 }
274
275 func pinLsKeys(args []string, typeStr string, ctx context.Context, n *core.IpfsNode) (map[string]RefKeyObject, error) {
276 +
277 keys := make(map[string]RefKeyObject)
278
279 for _, p := range args {
@@ -340,3 +308,39 @@ func pinLsKeys(args []string, typeStr string, ctx context.Context, n *core.IpfsN
308
309 return keys, nil
310 }
311 +
312 +func pinLsAll(typeStr string, ctx context.Context, n *core.IpfsNode) (map[string]RefKeyObject, error) {
313 +
314 + keys := make(map[string]RefKeyObject)
315 +
316 + AddToResultKeys := func(keyList []key.Key, typeStr string) {
317 + for _, k := range keyList {
318 + keys[k.B58String()] = RefKeyObject{
319 + Type: typeStr,
320 + }
321 + }
322 + }
323 +
324 + if typeStr == "direct" || typeStr == "all" {
325 + AddToResultKeys(n.Pinning.DirectKeys(), "direct")
326 + }
327 + if typeStr == "indirect" || typeStr == "all" {
328 + ks := key.NewKeySet()
329 + for _, k := range n.Pinning.RecursiveKeys() {
330 + nd, err := n.DAG.Get(ctx, k)
331 + if err != nil {
332 + return nil, err
333 + }
334 + err = dag.EnumerateChildren(n.Context(), n.DAG, nd, ks)
335 + if err != nil {
336 + return nil, err
337 + }
338 + }
339 + AddToResultKeys(ks.Keys(), "indirect")
340 + }
341 + if typeStr == "recursive" || typeStr == "all" {
342 + AddToResultKeys(n.Pinning.RecursiveKeys(), "recursive")
343 + }
344 +
345 + return keys, nil
346 +}