ms::Graph method paginated_result_list (protected)
<instance of ms::Graph> paginated_result_list \ [ -max_entries max_entries ] r expected_status_code
Defined in packages/xooauth/tcl/ms-procs.tcl
By default, MSGraph returns for a query just the first 100 results ("pagination"). To obtain more results, it is necessary to issue multiple requests. If "max_entries" is specified, the interface tries to get the requested number of entries. If there are less entries available, just these are returned.
- Switches:
- -max_entries (optional)
- Parameters:
- r (required)
- expected_status_code (required)
- Testcases:
- No testcase defined.
Source code: set resultDict [:expect_status_code $r $expected_status_code] set resultList {} if {$max_entries ne ""} { while {1} { # # Handle pagination in Microsoft Graph. Since the # list is returned in the JSON element "value", we # have to extract these values and update it later # with the result of potentially multiple # requests. # Details: https://docs.microsoft.com/en-us/graph/paging # set partialResultList "" set nextLink "" if {[dict exists $r JSON]} { set JSON [dict get $r JSON] if {[dict exists $JSON value]} { set partialResultList [dict get $JSON value] } if {[dict exists $JSON @odata.nextLink]} { set nextLink [dict get $JSON @odata.nextLink] } } lappend resultList {*}$partialResultList set got [llength $resultList] ns_log notice "[self] paginated_result_list: got $got max_entries $max_entries" if {$got >= $max_entries} { set resultList [lrange $resultList 0 $max_entries-1] break } if {$nextLink ne ""} { set r [:request -method GET -token [:token] -url $nextLink] set resultDict [:expect_status_code $r 200] } else { #ns_log notice "=== No next link" break } } dict set resultDict value $resultList } return $resultDictXQL Not present: Generic, PostgreSQL, Oracle