From 830c79644d095ef4d4e3a9d8d4cdf19ef4f12b68 Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Wed, 7 May 2025 16:20:51 +0200 Subject: [PATCH] Paginate milestone requests --- .maintenance/src/GitHub.php | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/.maintenance/src/GitHub.php b/.maintenance/src/GitHub.php index 1791a6e..9c9b072 100644 --- a/.maintenance/src/GitHub.php +++ b/.maintenance/src/GitHub.php @@ -26,9 +26,28 @@ public static function get_project_milestones( $args['per_page'] = 100; - list( $body, $headers ) = self::request( $request_url, $args ); + $milestones = []; + do { + list( $body, $headers ) = self::request( $request_url, $args ); + foreach ( $body as $milestone ) { + $milestones[] = $milestone; + } + $args = array(); + $request_url = false; + // Set $request_url to 'rel="next" if present' + if ( ! empty( $headers['Link'] ) ) { + $bits = explode( ',', $headers['Link'] ); + foreach ( $bits as $bit ) { + if ( false !== stripos( $bit, 'rel="next"' ) ) { + $hrefandrel = explode( '; ', $bit ); + $request_url = trim( trim( $hrefandrel[0] ), '<>' ); + break; + } + } + } + } while ( $request_url ); - return $body; + return $milestones; } /**