java - 无法使用 java org.kohsuke.github API 在现有 Gist 中创建文件
问题描述
几天来,我一直在使用 org.kohsuke.github Java 库。我唯一需要的是做 GIST 的所有事情......让他们删除它们,编辑它们以及 gists 中存在的不同文件。
这是我可以对图书馆做的事情:
使用用户令牌进行身份验证。
GitHub gitHub = GitHub.connectUsingOAuth(token);
boolean authenticated = gitHub.isCredentialValid();
一旦通过身份验证,我就可以...
拉取用户要点列表:
gitHub.getMyself().listGists()
创建包含文件的新 Gists:
gitHub.createGist()
.file(filename,contents)
.description(description)
.public_(isPublic)
.create();
删除要点:
gitHub.getGist(gistId).delete();
获取给定 gist 中的文件列表:
GHGist gist = gitHub.getGist(gistId);
List<String> fileNameList = new ArrayList<>();
for (String filename : gist.getFiles().keySet()) {
fileNameList.add(filename);
}
虽然我无法以这种方式获取文件的内容(它返回 NULL),但我必须提取文件的 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();}
}
难道我做错了什么?还是有其他方法可以用图书馆做到这一点?我是否需要通过 HTTPConnector 创建新的 gist 文件并更新它们等?如果是这样,我似乎无法弄清楚如何做到这一点,而且我在任何地方都找不到 gist 的示例......事实上,互联网搜索与 gist 相关的文档或该库的代码示例基本上不存在,所以我希望那里的人有这方面的经验,并能指出我正确的方向。
麦克风
解决方案
在图书馆的 GitHub 页面上也发布了一个问题,我很快就收到了答复。
对于将来遇到此库问题的任何人,您必须使用 OKHttp 连接来构建它。
因此,将其添加到您的 POM 文件中:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.2</version>
</dependency>
然后将其添加到您的模块信息文件中:
requires okhttp3;
然后像这样构建 GitHub 对象:
GitHub gitHub = new GitHubBuilder().withOAuthToken(token).withConnector(new OkHttpConnector(new OkHttpClient())).build();
一切都会好起来的。
推荐阅读
- css - 反应 onMount 动画
- bash - 远程执行命令 | 仅保留 5 个最近的文件/目录
- html - 如何将 SCSS 添加到 Angular 库的组件中
- c++ - 反向字符串和回文
- django - 表单无效时,FormView get_context_data 不起作用
- c++ - DBus 上的 BlueZ 在不同的时间间隔内停止响应
- python - “解压”一个熊猫系列,复制 DataFrame 的其他值
- postgresql - 在 Postgres 转换中需要帮助
- javascript - 如何将选项卡“ALL”动态添加到菜单选项卡
- docker - 如何识别我的 Docker 容器正在运行的系统?我可以在 Docker 容器内传递 Docker 守护进程标签吗?