@cryptotaxi247 / kubo / commits / 5efd99c1f

core/commands: get: Error if specified compression level is invalid

Matt Bell committed Jan 22, 2015 at 15:52 UTC 5efd99c1fe5c0b9e443df5e0cc33bcce40f17850
1 file changed +23
core/commands/get.go
+23
@@ -4,6 +4,7 @@ import (
4 "archive/tar"
5 "bytes"
6 "compress/gzip"
7 + "errors"
8 "fmt"
9 "io"
10 "os"
@@ -22,6 +23,8 @@ import (
23 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/cheggaaa/pb"
24 )
25
26 +var ErrInvalidCompressionLevel = errors.New("Compression level must be between 1 and 9")
27 +
28 var GetCmd = &cmds.Command{
29 Helptext: cmds.HelpText{
30 Tagline: "Download IPFS objects",
@@ -47,7 +50,14 @@ may also specify the level of compression by specifying '-l=<1-9>'.
50 cmds.BoolOption("compress", "C", "Compress the output with GZIP compression"),
51 cmds.IntOption("compression-level", "l", "The level of compression (an int between 1 and 9)"),
52 },
53 + PreRun: getCheckOptions,
54 Run: func(req cmds.Request, res cmds.Response) {
55 + err := getCheckOptions(req)
56 + if err != nil {
57 + res.SetError(err, cmds.ErrClient)
58 + return
59 + }
60 +
61 node, err := req.Context().GetNode()
62 if err != nil {
63 res.SetError(err, cmds.ErrNormal)
@@ -62,6 +72,11 @@ may also specify the level of compression by specifying '-l=<1-9>'.
72 } else {
73 compressionLevel = gzip.NoCompression
74 }
75 + } else {
76 + if compressionLevel < 1 || compressionLevel > 9 {
77 + res.SetError(ErrInvalidCompressionLevel, cmds.ErrClient)
78 + return
79 + }
80 }
81
82 reader, err := get(node, req.Arguments()[0], compressionLevel)
@@ -217,6 +232,14 @@ may also specify the level of compression by specifying '-l=<1-9>'.
232 },
233 }
234
235 +func getCheckOptions(req cmds.Request) error {
236 + compressionLevel, found, _ := req.Option("compression-level").Int()
237 + if found && (compressionLevel < 1 || compressionLevel > 9) {
238 + return ErrInvalidCompressionLevel
239 + }
240 + return nil
241 +}
242 +
243 func get(node *core.IpfsNode, path string, compression int) (io.Reader, error) {
244 buf := NewBufReadWriter()
245