Как загрузить файл .txt через PHP скрипт в Github с помощью API? - PullRequest
1 голос
/ 09 июля 2020

Итак, я работал над этим скриптом последние 3 дня, чтобы моя компания получила файл журнала, автоматически отправленный в мой репозиторий Github. Я ожидал, что на самом деле это будет довольно просто (мальчик, я ошибся) и понятия не имел, как использовать API для отправки информации. Проведя небольшое исследование, я нашел здесь сообщение другого пользователя: https://github.community/t/how-to-upload-a-file-using-github-api/14031

Основной код, который кажется полезным, это этот фрагмент:

<?php
$file_git = "wall.jpg";
$data_git = array(
'sha'=>file_get_contents("sha.txt"),
'message'=>'image',
'content'=> base64_encode($file_git),
'committer'=> array(
'name'=>'Jacob',
'email' => '45331093+greenandgreen@users.noreply.github.com'
)
);
$data_string_git = json_encode($data_git);
$ch_git = curl_init('https://api.github.com/repos/YOUR_REPO/contents/wall.jpg');
curl_setopt($ch_git, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch_git, CURLOPT_POSTFIELDS, $data_string_git);
curl_setopt($ch_git, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch_git, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.3.314 Yowser/2.5 Safari/537.36',
'Authorization: token PLACE_YOUR_PERSONAL_TOKEN_HERE'
));
$result_git = curl_exec($ch_git);
echo $result_git;
$p_git = json_decode($result_git);
file_put_contents("sha.txt",$p_git->content->sha);
?>

Проблема, которую я пытаюсь использовать, заключается в том, что функция curl_init не может достичь моего репозитория (я также могу ее неправильно настроить). У меня есть следующее:

$file_git = $filename;
$data_git = array(
    'sha'=>file_get_contents($shafile),
    'message'=>'text',
    'content'=> base64_encode($file_git),
    'committer'=> array(
    'name'=>'JOSH',
    'email' => 'USER@EMAIL.COM')
);

$data_string_git = json_encode($data_git);
$ch_git = curl_init('https://api.github.com/repos/updateCollection/contents/' . $filename);
curl_setopt($ch_git, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch_git, CURLOPT_POSTFIELDS, $data_string_git);
curl_setopt($ch_git, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch_git, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.3.314 Yowser/2.5 Safari/537.36',
    'Authorization: token PERSONALACCESSTOKEN_TOKEN_LISTED_HERE'
));

$result_git = curl_exec($ch_git);
echo $result_git;
$p_git = json_decode($result_git);
file_put_contents("sha.txt",$p_git->content->sha);

Сообщение об ошибке, которое я получаю: "" message ":" Not Found "," documentation_url ":" https://developer.github.com/v3 "" Общая цель - разместить этот файл .txt в моем репозитории в updateCollection / tree / simplehistorylogs, но я не могу туда добраться.

TL; DR: Я пытаюсь загрузить файл. txt через Github API с использованием сценария PHP и не может получить файл в репозиторий или достичь репозитория.

...