Fix #1358: Set RawLeaves to true when unset and CidVersion=1 (#1359)

Fixes #1358. Mimics go-ipfs defaults.

Co-authored-by: Alan Shaw <alan.shaw@protocol.ai>
This commit is contained in:
Hector Sanjuan 2021-05-19 23:56:30 +02:00 committed by GitHub
parent bfe179e943
commit 55516fe7c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 60 additions and 4 deletions

View File

@ -154,10 +154,6 @@ func AddParamsFromQuery(query url.Values) (*AddParams, error) {
return nil, err return nil, err
} }
err = parseBoolParam(query, "raw-leaves", &params.RawLeaves)
if err != nil {
return nil, err
}
err = parseBoolParam(query, "hidden", &params.Hidden) err = parseBoolParam(query, "hidden", &params.Hidden)
if err != nil { if err != nil {
return nil, err return nil, err
@ -181,6 +177,19 @@ func AddParamsFromQuery(query url.Values) (*AddParams, error) {
return nil, err return nil, err
} }
// This mimics go-ipfs behaviour.
if params.CidVersion > 0 {
params.RawLeaves = true
}
// If the raw-leaves param is empty, the default RawLeaves value will
// take place (which may be true or false depending on
// CidVersion). Otherwise, it will be explicitly set.
err = parseBoolParam(query, "raw-leaves", &params.RawLeaves)
if err != nil {
return nil, err
}
err = parseBoolParam(query, "stream-channels", &params.StreamChannels) err = parseBoolParam(query, "stream-channels", &params.StreamChannels)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -28,6 +28,53 @@ func TestAddParams_FromQuery(t *testing.T) {
} }
} }
func TestAddParams_FromQueryRawLeaves(t *testing.T) {
qStr := "cid-version=1"
q, err := url.ParseQuery(qStr)
if err != nil {
t.Fatal(err)
}
p, err := AddParamsFromQuery(q)
if err != nil {
t.Fatal(err)
}
if !p.RawLeaves {
t.Error("RawLeaves should be true with cid-version=1")
}
qStr = "cid-version=1&raw-leaves=false"
q, err = url.ParseQuery(qStr)
if err != nil {
t.Fatal(err)
}
p, err = AddParamsFromQuery(q)
if err != nil {
t.Fatal(err)
}
if p.RawLeaves {
t.Error("RawLeaves should be false when explicitally set")
}
qStr = "cid-version=0&raw-leaves=true"
q, err = url.ParseQuery(qStr)
if err != nil {
t.Fatal(err)
}
p, err = AddParamsFromQuery(q)
if err != nil {
t.Fatal(err)
}
if !p.RawLeaves {
t.Error("RawLeaves should be true when explicitly set")
}
}
func TestAddParams_ToQueryString(t *testing.T) { func TestAddParams_ToQueryString(t *testing.T) {
p := DefaultAddParams() p := DefaultAddParams()
p.ReplicationFactorMin = 3 p.ReplicationFactorMin = 3