LinkHeaderParser
in package
LinkHeaderParser Class
Utility class for parsing RFC 5988 Link headers from Canvas API responses. Canvas API uses Link headers to provide pagination information in the format:
Link: https://canvas.example.com/api/v1/courses?page=1&per_page=50; rel="current", https://canvas.example.com/api/v1/courses?page=2&per_page=50; rel="next", https://canvas.example.com/api/v1/courses?page=1&per_page=50; rel="first", https://canvas.example.com/api/v1/courses?page=10&per_page=50; rel="last"
Usage:
$parser = new LinkHeaderParser();
$links = $parser->parse($response->getHeader('Link')[0]);
$nextUrl = $links['next'] ?? null;
Table of Contents
Methods
- extractPageNumber() : int|null
- Extract page number from a paginated URL
- extractPerPage() : int|null
- Extract per_page parameter from a paginated URL
- extractRelation() : string|null
- Extract specific relation URL from Link header
- getRelations() : array<string|int, string>
- Get all available relations from Link header
- hasRelation() : bool
- Check if Link header contains a specific relation
- parse() : array<string|int, string>
- Parse Link header string into associative array
Methods
extractPageNumber()
Extract page number from a paginated URL
public
extractPageNumber(string $url) : int|null
Parameters
- $url : string
-
The paginated URL
Return values
int|null —The page number or null if not found
extractPerPage()
Extract per_page parameter from a paginated URL
public
extractPerPage(string $url) : int|null
Parameters
- $url : string
-
The paginated URL
Return values
int|null —The per_page value or null if not found
extractRelation()
Extract specific relation URL from Link header
public
extractRelation(string $linkHeader, string $relation) : string|null
Parameters
- $linkHeader : string
-
The Link header string
- $relation : string
-
The relation to extract (next, prev, first, last, current)
Return values
string|null —The URL for the relation or null if not found
getRelations()
Get all available relations from Link header
public
getRelations(string $linkHeader) : array<string|int, string>
Parameters
- $linkHeader : string
-
The Link header string
Return values
array<string|int, string> —Array of relation names
hasRelation()
Check if Link header contains a specific relation
public
hasRelation(string $linkHeader, string $relation) : bool
Parameters
- $linkHeader : string
-
The Link header string
- $relation : string
-
The relation to check for
Return values
bool —True if relation exists, false otherwise
parse()
Parse Link header string into associative array
public
parse(string $linkHeader) : array<string|int, string>
Parameters
- $linkHeader : string
-
The Link header string from HTTP response
Return values
array<string|int, string> —Associative array with rel values as keys and URLs as values