Невозможно опубликовать комментарии к запросу извлечения с помощью Github API - PullRequest
0 голосов
/ 29 октября 2018

Я использую GitHub API для создания комментариев к запросам на получение.

После этого:

Я не хочу комментировать конкретную строку кода, скорее общий комментарий к самому пиару. Скажем, например, «Спасибо за ваш PR @author»

// Using Joomla Http library that uses cURL internally
$http = new HttpRequest;

// The url variables below are set to the respective correct values
$url  = "https://api.github.com/repos/{$owner}/{$repo}/issues/{$number}/comments";

// Method: post($url, $data, $headers);
$resp = $http->post($url, array('body' => 'Thanks for your PR @author'), array('Authorization' => 'token ' . PERSONAL_ACCESS_TOKEN));

Возвращает следующую ошибку:

{
    "message": "Invalid request.\n\nFor 'links/0/schema', nil is not an object.",
    "documentation_url": "https://developer.github.com/v3/issues/comments/#create-a-comment"
}

То, что я прочитал в документации, links нигде не упоминается в качестве параметра для этого запроса, поэтому это меня больше смущает.

PS: все другие операции, такие как получение списка отзывов, получение списка комментариев, удаление комментария, добавление метки в PR, удаление метки из PR и т. Д., Работают нормально.

Я нашел где-то, что они говорят, что для комментирования требуется дополнительная аутентификация. Я не уверен, что это значит и как я этого добиваюсь.

У меня есть только Личный токен доступа для проверки моих запросов.

Пожалуйста, сообщите, что мне не хватает.

1 Ответ

0 голосов
/ 21 февраля 2019

Я смог опубликовать комментарий, используя issues api вместо pull-request

    public function comment($message)
    {
        $http = new HttpRequest;

        $url     = "https://api.github.com/repos/{$this->owner}/{$this->repo}/issues/{$this->num}/comments";
        $headers = array(
            'Content-Type'  => 'application/json;charset=utf-8',
            'Authorization' => 'token ' . GITHUB_ACCESS_TOKEN,
        );
        $resp    = $http->post($url, json_encode(array('body' => $message)), $headers);

        return $resp->code == 201 ? $resp : null;
    }

Класс HttpRequest в части внутренней библиотеки, который здесь не так важен. Вы должны быть в состоянии использовать любой способ транспорта Http.

Важными являются только URL-адрес запроса , заголовки и данные запроса .

Убедитесь, что используемому ACCESS_TOKEN назначены правильные разрешения. Я не могу вспомнить это сейчас, добавлю здесь, когда у меня будет возможность взглянуть на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...