diff --git a/apps.go b/apps.go index f8cec3f..6079e28 100644 --- a/apps.go +++ b/apps.go @@ -73,7 +73,9 @@ type appRoot struct { } type appsRoot struct { - Apps []*App `json:"apps"` + Apps []*App `json:"apps"` + Links *Links `json:"links"` + Meta *Meta `json:"meta"` } type deploymentRoot struct { @@ -82,6 +84,8 @@ type deploymentRoot struct { type deploymentsRoot struct { Deployments []*Deployment `json:"deployments"` + Links *Links `json:"links"` + Meta *Meta `json:"meta"` } type appTierRoot struct { @@ -143,6 +147,11 @@ func (s *AppsServiceOp) Get(ctx context.Context, appID string) (*App, *Response, // List apps. func (s *AppsServiceOp) List(ctx context.Context, opts *ListOptions) ([]*App, *Response, error) { path := appsBasePath + path, err := addOptions(path, opts) + if err != nil { + return nil, nil, err + } + req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil) if err != nil { return nil, nil, err @@ -152,6 +161,15 @@ func (s *AppsServiceOp) List(ctx context.Context, opts *ListOptions) ([]*App, *R if err != nil { return nil, resp, err } + + if l := root.Links; l != nil { + resp.Links = l + } + + if m := root.Meta; m != nil { + resp.Meta = m + } + return root.Apps, resp, nil } @@ -219,6 +237,11 @@ func (s *AppsServiceOp) GetDeployment(ctx context.Context, appID, deploymentID s // ListDeployments lists an app deployments. func (s *AppsServiceOp) ListDeployments(ctx context.Context, appID string, opts *ListOptions) ([]*Deployment, *Response, error) { path := fmt.Sprintf("%s/%s/deployments", appsBasePath, appID) + path, err := addOptions(path, opts) + if err != nil { + return nil, nil, err + } + req, err := s.client.NewRequest(ctx, http.MethodGet, path, nil) if err != nil { return nil, nil, err @@ -228,6 +251,15 @@ func (s *AppsServiceOp) ListDeployments(ctx context.Context, appID string, opts if err != nil { return nil, resp, err } + + if l := root.Links; l != nil { + resp.Links = l + } + + if m := root.Meta; m != nil { + resp.Meta = m + } + return root.Deployments, resp, nil } diff --git a/apps_test.go b/apps_test.go index c1da4a1..31381f0 100644 --- a/apps_test.go +++ b/apps_test.go @@ -217,12 +217,16 @@ func TestApps_ListApp(t *testing.T) { mux.HandleFunc("/v2/apps", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) - json.NewEncoder(w).Encode(&appsRoot{Apps: []*App{&testApp}}) + json.NewEncoder(w).Encode(&appsRoot{Apps: []*App{&testApp}, Meta: &Meta{Total: 1}, Links: &Links{}}) }) - apps, _, err := client.Apps.List(ctx, nil) + apps, resp, err := client.Apps.List(ctx, nil) require.NoError(t, err) assert.Equal(t, []*App{&testApp}, apps) + assert.Equal(t, 1, resp.Meta.Total) + currentPage, err := resp.Links.CurrentPage() + require.NoError(t, err) + assert.Equal(t, 1, currentPage) } func TestApps_UpdateApp(t *testing.T) { @@ -375,12 +379,16 @@ func TestApps_ListDeployments(t *testing.T) { mux.HandleFunc(fmt.Sprintf("/v2/apps/%s/deployments", testApp.ID), func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) - json.NewEncoder(w).Encode(&deploymentsRoot{Deployments: []*Deployment{&testDeployment}}) + json.NewEncoder(w).Encode(&deploymentsRoot{Deployments: []*Deployment{&testDeployment}, Meta: &Meta{Total: 1}, Links: &Links{}}) }) - deployments, _, err := client.Apps.ListDeployments(ctx, testApp.ID, nil) + deployments, resp, err := client.Apps.ListDeployments(ctx, testApp.ID, nil) require.NoError(t, err) assert.Equal(t, []*Deployment{&testDeployment}, deployments) + assert.Equal(t, 1, resp.Meta.Total) + currentPage, err := resp.Links.CurrentPage() + require.NoError(t, err) + assert.Equal(t, 1, currentPage) } func TestApps_GetLogs(t *testing.T) {