投稿 2023年2月26日
更新 2023年2月26日
【GitHub API】GitHubのReleaseにファイルをアップロードしてみた
JavaでGitHub API
GitHub APIをJavaで実行します。
バージョンはJava17です。
今回はGitHub Releaseにファイルをアップロードしてみます。
前提
GitHub APIの実行環境は、整っている前提で話を進めます。
※curlなどでGitHub APIをたたける前提
もしまだ環境が整っていない方は、整えてからご覧ください。
リリースID
以下のコードに出てくる「リリースID」というのは、
GitHub Releaseを特定するIDのことです。
GitHub Release作成時のAPIレスポンスや、
ReleaseIDを取得するAPIなどで取得することができます。
以下の記事でRelease作成時のレスポンス内容を紹介しています。
レスポンス内の「id」がReleaseIDです。
ReleaseIDが取得出来たら以下のように、ファイルをアップロードしてみましょう。
コード
Java
- import java.io.File;
- import java.io.IOException;
- import java.net.URI;
- import java.net.http.HttpClient;
- import java.net.http.HttpRequest;
- import java.net.http.HttpRequest.BodyPublishers;
- import java.net.http.HttpResponse.BodyHandlers;
- String token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
- String owner = "ink-0x20";
- String repository = "ink-commons";
- String releaseId = "0000000000";
- File target = new File("./test.jar");
- try (FileInputStream data = new FileInputStream(target)) {
-
- byte[] d = data.readAllBytes();
-
- StringBuilder apiUrl = new StringBuilder()
- .append("https://uploads.github.com/repos/")
- .append(owner)
- .append("/")
- .append(repository)
- .append("/releases/")
- .append(releaseId)
- .append("/assets?name=")
- .append(target.getName());
-
- HttpRequest request = HttpRequest.newBuilder()
- .uri(URI.create(apiUrl.toString()))
- .header("Accept", "application/vnd.github+json")
- .header("Authorization", "Bearer " + token)
- .header("X-GitHub-Api-Version", "2022-11-28")
- .header("Content-Type", "multipart/form-data")
- .method("POST", BodyPublishers.ofByteArray(d))
- .build();
-
- String response = HttpClient.newHttpClient()
- .send(request, BodyHandlers.ofString())
- .body();
- System.out.println(response);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
curl
curl --request POST \
--url https://uploads.github.com/repos/OWNER/REPO/releases/RELEASE_ID/assets?name=test.jar \
--header 'Accept: application/vnd.github+json' \
--header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'X-GitHub-Api-Version: 2022-11-28' \
--header 'Content-Type: application/octet-stream' \
--data-binary "@test.jar"
リンク
GitHubにもメソッド版を上げています。
そちらも参考にどうぞ。
まとめ
PHPやcurlは検索すれば出てくるとは思いますが、Javaが思ったより出てこなかったので書いてみました
どうすれば出来るかを考えるのは楽しいです!
仕組みさえわかれば、どうにかなるもんですね。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。
コメント一覧