Refactor unmarshalTOC to use a switch
This is a microptimization, we call strings.ToLower only once, but more importantly it will make it easier to add more fields. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
parent
16b831be1c
commit
8dd381ecf3
|
|
@ -823,14 +823,11 @@ func unmarshalToc(manifest []byte) (*internal.TOC, error) {
|
||||||
iter := jsoniter.ParseBytes(jsoniter.ConfigFastest, manifest)
|
iter := jsoniter.ParseBytes(jsoniter.ConfigFastest, manifest)
|
||||||
|
|
||||||
for field := iter.ReadObject(); field != ""; field = iter.ReadObject() {
|
for field := iter.ReadObject(); field != ""; field = iter.ReadObject() {
|
||||||
if strings.ToLower(field) == "version" {
|
switch strings.ToLower(field) {
|
||||||
|
case "version":
|
||||||
toc.Version = iter.ReadInt()
|
toc.Version = iter.ReadInt()
|
||||||
continue
|
|
||||||
}
|
case "entries":
|
||||||
if strings.ToLower(field) != "entries" {
|
|
||||||
iter.Skip()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
for iter.ReadArray() {
|
for iter.ReadArray() {
|
||||||
var m internal.FileMetadata
|
var m internal.FileMetadata
|
||||||
for field := iter.ReadObject(); field != ""; field = iter.ReadObject() {
|
for field := iter.ReadObject(); field != ""; field = iter.ReadObject() {
|
||||||
|
|
@ -899,6 +896,10 @@ func unmarshalToc(manifest []byte) (*internal.TOC, error) {
|
||||||
}
|
}
|
||||||
toc.Entries = append(toc.Entries, m)
|
toc.Entries = append(toc.Entries, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
iter.Skip()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate there is no extra data in the provided input. This is a security measure to avoid
|
// validate there is no extra data in the provided input. This is a security measure to avoid
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue