#java #github-api #gist
Вопрос:
Я работаю с Java-библиотекой org.kohsuke.github уже несколько дней. Мне нужно только одно-сделать все, что нужно… заставить их удалить, отредактировать, а также различные файлы, существующие в gist.
Вот что я МОГУ сделать с библиотекой:
Аутентифицируйтесь с помощью токена пользователя.
GitHub gitHub = GitHub.connectUsingOAuth(token); boolean authenticated = gitHub.isCredentialValid();
После аутентификации я смог это сделать…
Вытяните список основных пользователей:
gitHub.getMyself().listGists()
Создайте НОВЫЕ сущности с включенным файлом:
gitHub.createGist() .file(filename,contents) .description(description) .public_(isPublic) .create();
Удалить Суть:
gitHub.getGist(gistId).delete();
Получите список файлов в пределах заданной сути:
GHGist gist = gitHub.getGist(gistId); Listlt;Stringgt; fileNameList = new ArrayListlt;gt;(); for (String filename : gist.getFiles().keySet()) { fileNameList.add(filename); }
Хотя я не могу получить содержимое файла таким образом (оно возвращается НУЛЕВЫМ), я должен вытащить URL-адрес файлов, а затем получить содержимое файла следующим образом:
String fileContents = ""; GHGistFile file = gitHub.getGist(gistId).getFile(fileName); try { HttpURLConnection conn = gitHub.getConnector().connect(new URL(file.getRawUrl())); conn.setRequestMethod("GET"); InputStream is = conn.getInputStream(); fileContents = IOUtils.toString(is, StandardCharsets.UTF_8); is.close(); } catch (IOException e) {e.printStackTrace();} return fileContents;
То, что я, похоже, НЕ МОГУ сделать с API, — это что-либо на уровне файла gist, где мне нужно удалить файл, добавить файл или обновить содержимое файла. Например, этот код НЕ ГЕНЕРИРУЕТ НИКАКИХ ОШИБОК, но он просто не работает, что означает, что код выполняется, но файл никогда не создается внутри gist:
public static void addFileToGist(String filename, String contents, String gistId) { GHGist gist = getGist(gistId); try{ gist.update().addFile(filename,contents); CustomAlert.showInfo("File Added"); } catch (IOException e) {e.printStackTrace();} }
Я делаю что-то не так? Или есть какой-то другой способ сделать это с библиотекой? Нужно ли мне создавать новые файлы gist и обновлять их и т.д. через HTTPConnector? Если это так, то я, похоже, не могу понять, КАК это сделать, и нигде не могу найти примеров для сути … на самом деле, поиск в Интернете документации, связанной с gist, или примеров кода для этой библиотеки в основном отсутствует, поэтому я надеюсь, что у кого-то есть опыт работы с ней и он сможет указать мне правильное направление.
Майк
Ответ №1:
Также разместив проблему на странице библиотеки на GitHub, я очень быстро получил ответ.
Для тех, у кого в будущем возникнут проблемы с этой библиотекой, вы должны создать ее с помощью подключения OHTTP.
Поэтому добавьте это в свой файл POM:
lt;dependencygt; lt;groupIdgt;com.squareup.okhttp3lt;/groupIdgt; lt;artifactIdgt;okhttplt;/artifactIdgt; lt;versiongt;4.9.2lt;/versiongt; lt;/dependencygt;
затем добавьте это в свой файл информации о модуле:
requires okhttp3;
Затем создайте объект GitHub следующим образом:
GitHub gitHub = new GitHubBuilder().withOAuthToken(token).withConnector(new OkHttpConnector(new OkHttpClient())).build();
И все будет хорошо.