diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..35a780a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "go.testFlags": ["-v"] +} \ No newline at end of file diff --git a/pkg/codefresh/codefresh.go b/pkg/codefresh/codefresh.go index 67b4198..e6b20db 100644 --- a/pkg/codefresh/codefresh.go +++ b/pkg/codefresh/codefresh.go @@ -29,6 +29,7 @@ type ( Users() UsersAPI Argo() ArgoAPI Gitops() GitopsAPI + Projects() IProjectAPI V2() V2API } @@ -91,6 +92,9 @@ func (c *codefresh) Argo() ArgoAPI { func (c *codefresh) Gitops() GitopsAPI { return newGitopsAPI(c) } +func (c *codefresh) Projects() IProjectAPI { + return newProjectAPI(c) +} func (c *codefresh) V2() V2API { return c diff --git a/pkg/codefresh/project.go b/pkg/codefresh/project.go new file mode 100644 index 0000000..701a387 --- /dev/null +++ b/pkg/codefresh/project.go @@ -0,0 +1,39 @@ +package codefresh + +type ( + IProjectAPI interface { + List() ([]*Project, error) + } + project struct { + codefresh *codefresh + } + Project struct { + ProjectName string `json:"projectName"` + PipelineNumber int `json:"pipelineNumber"` + } + getProjectResponse struct { + Total int `json:"limit"` + Projects []*Project `json:"projects"` + } +) + +func newProjectAPI(codefresh *codefresh) IProjectAPI { + return &project{codefresh} +} + +func (p *project) List() ([]*Project, error) { + r := &getProjectResponse{} + + resp, err := p.codefresh.requestAPI(&requestOptions{ + path: "/api/projects", + method: "GET", + }) + if err != nil { + return nil, err + } + err = p.codefresh.decodeResponseInto(resp, r) + if err != nil { + return nil, err + } + return r.Projects, nil +} diff --git a/pkg/codefresh/project_test.go b/pkg/codefresh/project_test.go new file mode 100644 index 0000000..0697cc4 --- /dev/null +++ b/pkg/codefresh/project_test.go @@ -0,0 +1,25 @@ +package codefresh + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +var clientOptions = ClientOptions{ + Auth: AuthOptions{ + Token: "", + }, + Debug: true, + Host: "https://g.codefresh.io", +} + +func TestProject(t *testing.T) { + + cf := New(&clientOptions) + projects, err := cf.Projects().List() + if err != nil { + t.Fatal(err) + } + assert.Equal(t, len(projects), 0) +}