From 8fea8513e3acbd23258c873a02808daf62ced490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Sun, 25 Mar 2018 13:58:29 +0200 Subject: [PATCH] coreapi: use defined functions for pin type option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera This commit was moved from ipfs/interface-go-ipfs-core@2e3f9758c88ce4572922c3fd4e8ef51c703e183d This commit was moved from ipfs/boxo@8a0f4029598ebf3be0d56e91fe07675702349a6d --- core/coreiface/options/pin.go | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/core/coreiface/options/pin.go b/core/coreiface/options/pin.go index 680ed391d..7cb4d09d2 100644 --- a/core/coreiface/options/pin.go +++ b/core/coreiface/options/pin.go @@ -61,10 +61,38 @@ func PinUpdateOptions(opts ...PinUpdateOption) (*PinUpdateSettings, error) { return options, nil } -type pinOpts struct{} +type pinType struct{} + +type pinOpts struct { + Type pinType +} var Pin pinOpts +// All is an option for Pin.Ls which will make it return all pins. It is +// the default +func (_ pinType) All() PinLsOption { + return Pin.pinType("all") +} + +// Recursive is an option for Pin.Ls which will make it only return recursive +// pins +func (_ pinType) Recursive() PinLsOption { + return Pin.pinType("recursive") +} + +// Direct is an option for Pin.Ls which will make it only return direct (non +// recursive) pins +func (_ pinType) Direct() PinLsOption { + return Pin.pinType("direct") +} + +// Indirect is an option for Pin.Ls which will make it only return indirect pins +// (objects referenced by other recursively pinned objects) +func (_ pinType) Indirect() PinLsOption { + return Pin.pinType("indirect") +} + // Recursive is an option for Pin.Add which specifies whether to pin an entire // object tree or just one object. Default: true func (_ pinOpts) Recursive(recucsive bool) PinAddOption { @@ -83,7 +111,7 @@ func (_ pinOpts) Recursive(recucsive bool) PinAddOption { // * "indirect" - indirectly pinned objects (referenced by recursively pinned // objects) // * "all" - all pinned objects (default) -func (_ pinOpts) Type(t string) PinLsOption { +func (_ pinOpts) pinType(t string) PinLsOption { return func(settings *PinLsSettings) error { settings.Type = t return nil