diff --git a/internal/app/enaptercli/cmd_rule_engine_rule_list.go b/internal/app/enaptercli/cmd_rule_engine_rule_list.go index 4049959..40bd2a1 100644 --- a/internal/app/enaptercli/cmd_rule_engine_rule_list.go +++ b/internal/app/enaptercli/cmd_rule_engine_rule_list.go @@ -9,6 +9,7 @@ import ( type cmdRuleEngineRuleList struct { cmdRuleEngineRule + limit int } func buildCmdRuleEngineRuleList() *cli.Command { @@ -25,9 +26,26 @@ func buildCmdRuleEngineRuleList() *cli.Command { } } -func (c *cmdRuleEngineRuleList) do(ctx context.Context) error { - return c.doHTTPRequest(ctx, doHTTPRequestParams{ - Method: http.MethodGet, - Path: "", +func (c *cmdRuleEngineRuleList) Flags() []cli.Flag { + flags := c.cmdRuleEngineRule.Flags() + return append(flags, &cli.IntFlag{ + Name: "limit", + Usage: "maximum number of rules to retrieve", + Destination: &c.limit, + DefaultText: "retrieves all", }) } + +func (c *cmdRuleEngineRuleList) do(ctx context.Context) error { + doPaginateRequestParams := paginateHTTPRequestParams{ + ObjectName: "rules", + Limit: c.limit, + DoFn: c.doHTTPRequest, + BaseParams: doHTTPRequestParams{ + Method: http.MethodGet, + Path: "", + }, + } + + return c.doPaginateRequest(ctx, doPaginateRequestParams) +} diff --git a/internal/app/enaptercli/testdata/helps/enapter rule-engine rule list b/internal/app/enaptercli/testdata/helps/enapter rule-engine rule list index e5ac7f7..c30441c 100644 --- a/internal/app/enaptercli/testdata/helps/enapter rule-engine rule list +++ b/internal/app/enaptercli/testdata/helps/enapter rule-engine rule list @@ -9,6 +9,7 @@ OPTIONS: --api-allow-insecure Allow insecure connections to the Enapter API [$ENAPTER3_API_ALLOW_INSECURE] --verbose Log extra details about the operation --site-id string Site ID + --limit int maximum number of rules to retrieve (default: retrieves all) --help, -h show help ENVIRONMENT VARIABLES: diff --git a/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/cmd.tmpl b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/cmd.tmpl new file mode 100644 index 0000000..c601def --- /dev/null +++ b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/cmd.tmpl @@ -0,0 +1,2 @@ +enapter3 connection add --name my-conn --url {{.URL}} --token {{.Token}} --site-id my-site +enapter3 rule-engine rule list --connection my-conn diff --git a/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/out b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/out new file mode 100644 index 0000000..a20ee71 --- /dev/null +++ b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/out @@ -0,0 +1 @@ +{"rules":[{"id":"rule-1"}],"total_count":1} \ No newline at end of file diff --git a/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/req_0 b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/req_0 new file mode 100644 index 0000000..71d46fc --- /dev/null +++ b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/req_0 @@ -0,0 +1,19 @@ +{ + "Method": "GET", + "URL": "/v3/sites/my-site/rule_engine/rules?limit=50\u0026offset=0", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Content-Type": [ + "" + ], + "User-Agent": [ + "enapter-cli/" + ], + "X-Enapter-Auth-Token": [ + "enapter_api_test_token" + ] + }, + "Body": "" +} \ No newline at end of file diff --git a/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/req_1 b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/req_1 new file mode 100644 index 0000000..7c42eab --- /dev/null +++ b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/req_1 @@ -0,0 +1,19 @@ +{ + "Method": "GET", + "URL": "/v3/sites/my-site/rule_engine/rules?limit=50\u0026offset=1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Content-Type": [ + "" + ], + "User-Agent": [ + "enapter-cli/" + ], + "X-Enapter-Auth-Token": [ + "enapter_api_test_token" + ] + }, + "Body": "" +} \ No newline at end of file diff --git a/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/resp_0 b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/resp_0 new file mode 100644 index 0000000..cd4be09 --- /dev/null +++ b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/resp_0 @@ -0,0 +1 @@ +{"rules":[{"id":"rule-1"}],"total_count":1} diff --git a/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/resp_1 b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/resp_1 new file mode 100644 index 0000000..8a54bed --- /dev/null +++ b/internal/app/enaptercli/testdata/http_req_resp/rule_engine_rule_list/resp_1 @@ -0,0 +1 @@ +{"rules":[],"total_count":1}