-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathapplicationsoverview.go
More file actions
82 lines (64 loc) · 2.8 KB
/
applicationsoverview.go
File metadata and controls
82 lines (64 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package Cx1ClientGo
import (
"encoding/json"
"fmt"
"net/http"
"github.com/google/go-querystring/query"
)
func (c *Cx1Client) GetAllApplicationOverviews() ([]ApplicationOverview, error) {
c.config.Logger.Debugf("Get All Cx1 Application Overviews")
_, applications, err := c.GetAllApplicationOverviewsFiltered(ApplicationOverviewFilter{
BaseFilter: BaseFilter{Limit: c.config.Pagination.Applications},
})
return applications, err
}
// Returns the total number of matching results plus an array of applications with
// one page of results (from filter.Offset to filter.Offset+filter.Limit)
func (c *Cx1Client) GetApplicationOverviewsFiltered(filter ApplicationOverviewFilter) (uint64, []ApplicationOverview, error) {
params, _ := query.Values(filter)
var ApplicationResponse struct {
BaseFilteredResponse
Applications []ApplicationOverview
}
response, err := c.sendRequest(http.MethodGet, fmt.Sprintf("/applications-overview?%v", params.Encode()), nil, nil)
if err != nil {
return ApplicationResponse.TotalCount, ApplicationResponse.Applications, err
}
err = json.Unmarshal(response, &ApplicationResponse)
return ApplicationResponse.TotalCount, ApplicationResponse.Applications, err
}
// Retrieves all applications matching the filter
func (c *Cx1Client) GetAllApplicationOverviewsFiltered(filter ApplicationOverviewFilter) (uint64, []ApplicationOverview, error) {
var applications []ApplicationOverview
count, err := c.GetApplicationOverviewCountFiltered(filter)
if err != nil {
return count, applications, err
}
_, applications, err = c.GetXApplicationOverviewsFiltered(filter, count)
return count, applications, err
}
// Retrieves the top 'count' applications matching the filter
func (c *Cx1Client) GetXApplicationOverviewsFiltered(filter ApplicationOverviewFilter, count uint64) (uint64, []ApplicationOverview, error) {
var applications []ApplicationOverview
_, projs, err := c.GetApplicationOverviewsFiltered(filter)
applications = projs
for err == nil && count > filter.Offset+filter.Limit && filter.Limit > 0 && uint64(len(applications)) < count {
filter.Bump()
_, projs, err = c.GetApplicationOverviewsFiltered(filter)
applications = append(applications, projs...)
}
if uint64(len(applications)) > count {
return count, applications[:count], err
}
return count, applications, err
}
func (c *Cx1Client) GetApplicationOverviewCountFiltered(filter ApplicationOverviewFilter) (uint64, error) {
filter.Limit = 1
params, _ := query.Values(filter)
c.config.Logger.Debugf("Get Cx1 Application count matching filter: %v", params.Encode())
count, _, err := c.GetApplicationOverviewsFiltered(filter)
return count, err
}
func (o ApplicationOverview) String() string {
return fmt.Sprintf("application [%v] %v (%d projects) - %v", ShortenGUID(o.ApplicationID), o.Name, o.ProjectNumber, o.RiskLevel)
}