Skip to content

Commit b0e0eaa

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 067b61b + be62c3b commit b0e0eaa

File tree

3 files changed

+48
-11
lines changed

3 files changed

+48
-11
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"api-clients/rx": "^2.1",
2121
"api-clients/rx-operators": "^2.0",
2222
"api-clients/transport": "^3.0",
23+
"kelunik/link-header-rfc5988": "^1.0",
2324
"react/promise-stream": "^0.1.1",
2425
"wyrihaximus/react-stream-base64": "^1.0",
2526
"wyrihaximus/react-stream-json": "^1.0"

composer.lock

Lines changed: 41 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Service/IteratePagesService.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Rx\Observable;
1010
use Rx\Scheduler;
1111
use Rx\Subject\Subject;
12+
use function Kelunik\LinkHeaderRfc5988\parseLinks;
1213

1314
class IteratePagesService
1415
{
@@ -46,23 +47,18 @@ public function iterate(string $path): Observable
4647
return;
4748
}
4849

50+
$parsedLinks = parseLinks($response->getHeaderLine('link'));
4951
$links = [
50-
'next' => false,
51-
'last' => false,
52+
'next' => $parsedLinks->getByRel('next'),
53+
'last' => $parsedLinks->getByRel('last'),
5254
];
53-
foreach (explode(', ', $response->getHeader('link')[0]) as $link) {
54-
list($url, $rel) = explode('>; rel="', ltrim(rtrim($link, '"'), '<'));
55-
if (isset($links[$rel])) {
56-
$links[$rel] = $url;
57-
}
58-
}
5955

60-
if ($links['next'] === false || $links['last'] === false) {
56+
if ($links['next'] === null || $links['last'] === null) {
6157
return;
6258
}
6359

6460
$this->scheduler->schedule(function () use ($paths, $links) {
65-
$paths->onNext($links['next']);
61+
$paths->onNext($links['next']->getUri());
6662
});
6763
})
6864
->map(function (ResponseInterface $response) {

0 commit comments

Comments
 (0)