diff options
author | Alexander Mazuruk <a.mazuruk@samsung.com> | 2018-09-11 18:19:53 +0200 |
---|---|---|
committer | Pawel Wieczorek <p.wieczorek2@samsung.com> | 2018-09-18 15:44:42 +0200 |
commit | 9cf5ff9b17b18efe058720c173d6a65aa5eeb112 (patch) | |
tree | 9d3f58e9d146e41cb336a675ecc31c2931992588 | |
parent | c83fdd482503d316d3fc97e354070a326826c01e (diff) | |
download | weles-9cf5ff9b17b18efe058720c173d6a65aa5eeb112.tar.gz weles-9cf5ff9b17b18efe058720c173d6a65aa5eeb112.tar.bz2 weles-9cf5ff9b17b18efe058720c173d6a65aa5eeb112.zip |
Unify ArtifactFilter returned by server
Due to how json array marshalling works in go:
Having following struct:
type A struct{
Key1 []string
Key2 []string
}
When following empty JSON was sent:
{ Key1: [], Key2: [] }
We would receive a struct:
Key1, Key2 - one element slice with empty string
If we would send:
{ Key2: [] }
We would receive a struct:
Key1 - empty slice
Key2 - one element slice with empty string
This commit unifies empty values returned by server to always be empty
slice.
Change-Id: I24ff156dc98f5a1e160858cc3ce02ecd44387129
Signed-off-by: Alexander Mazuruk <a.mazuruk@samsung.com>
-rw-r--r-- | server/artifact_lister_handler.go | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/server/artifact_lister_handler.go b/server/artifact_lister_handler.go index f1d447e..9d0cd02 100644 --- a/server/artifact_lister_handler.go +++ b/server/artifact_lister_handler.go @@ -31,10 +31,7 @@ func (a *APIDefaults) ArtifactLister(params artifacts.ArtifactListerParams) midd } paginator = setArtifactPaginator(params, a.PageLimit) } - filter := weles.ArtifactFilter{} - if params.ArtifactFilterAndSort.Filter != nil { - filter = *params.ArtifactFilterAndSort.Filter - } + filter := setArtifactFilter(params.ArtifactFilterAndSort.Filter) sorter := setArtifactSorter(params.ArtifactFilterAndSort.Sorter) artifactInfoReceived, listInfo, err := a.Managers.AM.ListArtifact(filter, sorter, paginator) @@ -123,6 +120,32 @@ func responderArtifact200(listInfo weles.ListInfo, paginator weles.ArtifactPagin return } +// setArtifactFilter adjusts filter's 0 values to be consistent and acceptable by the artifacts db +// That is []string with only 1 empty element should be removed. +func setArtifactFilter(fi *weles.ArtifactFilter) (fo weles.ArtifactFilter) { + if fi != nil { + if len(fi.JobID) > 0 { + fo.JobID = fi.JobID + } + if len(fi.Alias) > 0 { + if !(len(fi.Alias) == 1 && fi.Alias[0] == "") { + fo.Alias = fi.Alias + } + } + if len(fi.Status) > 0 { + if !(len(fi.Status) == 1 && fi.Status[0] == "") { + fo.Status = fi.Status + } + } + if len(fi.Type) > 0 { + if !(len(fi.Type) == 1 && fi.Type[0] == "") { + fo.Type = fi.Type + } + } + } + return +} + // setArtifactSorter sets default sorter values. func setArtifactSorter(si *weles.ArtifactSorter) (so weles.ArtifactSorter) { if si == nil { |