Репозитории пользователя github и сортировка
Вообщем, решил я поработать с api github, ради интереса. И вообщем сделал вот такую функцию:
$repositories = [];
foreach ($users as $user) {
$client = new Client(['baseUrl' => 'https://api.github.com', 'requestConfig' => [
'format' => Client::FORMAT_JSON
], 'responseConfig' => ['format' => Client::FORMAT_JSON]]);
$response = $client->createRequest()->setUrl('users/' . $user . '/repos')
->addHeaders(['content-type' => 'application/json', 'accept' => 'application/vnd.github.v3+json',
'User-Agent' => 'Moonwolf45'])
->setContent('{sort: "updated", direction: "desc"}')->send();
$rep = json_decode($response->content);
$repositories[] = $rep;
}
Вообщем-то ничего сложного, пробегаемя по списку пользователей и тянем репозитории каждого, но проблема даже не в том, что ограничение 100 штук, а в том, что сортировка не работает ->setContent('{sort: "updated", direction: "desc"}') как видите я передаю нужные данные, но при этом все равно получаю:
[0] => Array
(
[0] => stdClass Object
(
...
[updated_at] => 2019-02-04T15:55:12Z
...
)
[1] => stdClass Object
(
...
[updated_at] => 2021-05-09T17:11:46Z
)
)
Сортировать уже полученные результаты совсем не дело. Кто сталкивался с этим??
Ответы (2 шт):
Автор решения: Moonwolf45
→ Ссылка
Вообщем так работает:
$curl = curl_init();
foreach ($users as $user) {
curl_setopt($curl, CURLOPT_URL, 'https://api.github.com/users/' . $user . '/repos?sort=updated&direction=desc');
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'content-type: application/json',
'accept: application/vnd.github.v3+json',
'User-Agent: Moonwolf45',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
$rep = json_decode(curl_exec($curl));
if (!empty($rep)) {
$repositories = array_merge($rep, $repositories);
}
}
curl_close($curl);