gpt4 book ai didi

java - 如何使用 Java 读取 BitBucket/Stash 分支及其链接的 JIRA 票据

转载 作者:行者123 更新时间:2023-11-30 06:37:47 24 4
gpt4 key购买 nike

我想阅读 bitbucket/stash 分支及其受人尊敬的 Jira 问题,当我在寻找它时发现 Atlassian APIs .

我找不到任何合适的例子,比如如何连接到 bitbucket 服务器,获取任何项目的信息,并读取该项目的分支,以及是否有任何 Jira 问题与分支相关联。

任何帮助或指导都会很棒。

我正在寻找一个 Java 示例。

最佳答案

我找到了一种与 API 交互并从 Bitbucket 获取存储库和用户信息的可能方法。但我必须使用涉及浏览器回调的 OAuth 身份验证。这对于独立应用程序来说可能不太方便。

这就是我所做的:

  1. 在我的 BitBucket 帐户上创建了 OAuth 使用者。此页面对此进行了很好的描述:https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html 。完成此操作后,我有了一个拥有 key 和 secret 的消费者。

  2. 我直接在浏览器上执行了 GET 查询此链接:https://bitbucket.org/site/oauth2/authorize?client_id= {client_id}&response_type=代码。 {client_id} 实际上是前一项中生成的 key 。这将我带到一个页面,在其中我可以确认对 OAuth 应用程序的授权。确认授权后,浏览器页面将重定向到如下页面列表:http://giltest.org/?code=LcY6FmeyvjqM2xnTyN 。代码“LcY6FmeyvjqM2xnTyN”是下一步将用于生成授权码的代码。

  3. 现在我们生成允许访问 BitBucket REST API 的授权代码。我已经在 Maven 项目中为此创建了一些 Java 代码。有关 pom.xml 的更多详细信息,请参阅下文。使用Unirest库我创建了这些检索访问 token 的方法:

access token retrieval

public JsonNode accessToken(String clientId, String secret, String code) throws UnirestException {
return Unirest.post("https://bitbucket.org/site/oauth2/access_token").basicAuth(clientId, secret)
.field("grant_type", "authorization_code").field("code", code)
.asJson().getBody();
}

此方法的响应将包含 JSON 格式的访问 token :

{"access_token":"xetOO4xZU-xxxxxxxx--LRmbQrmBkDfHIKfE1vz1ZEGnbUyt5UI31ErKojnecuGWxxxxxxxxxx=","refresh_token":"jbad7ajwVWxxxxx","scopes":"webhook snippet:write issue:write pullrequest:write project:write team:write account:write","token_type":"bearer","expires_in":3600}

您可以使用此方法直接提取 token :

public String accessTokenExtract(String clientId, String secret, String code) throws UnirestException {
return Unirest.post("https://bitbucket.org/site/oauth2/access_token").basicAuth(clientId, secret)
.field("grant_type", "authorization_code").field("code", code)
.asJson().getBody().getObject().get("access_token").toString();
}
  • 此后,您可以从 JSON 中提取访问 token 并在请求中使用它。请参阅 this page 上的“提出请求”部分。以下是获取 Bitbucket 用户信息的示例 Java 代码方法:
  • Show user information request

    public String showUserInformation(String authorizationCode) throws UnirestException {
    return Unirest.get("https://api.bitbucket.org/2.0/user")
    .header("Authorization", String.format("Bearer %s", authorizationCode)).asString().getBody();
    }

    Show repositories

    public String listRepositories(String authorizationCode) throws UnirestException {
    return Unirest.get("https://api.bitbucket.org/2.0/repositories")
    .header("Authorization", String.format("Bearer %s", authorizationCode)).asString().getBody();
    }

    有关 REST API 的更多信息可以在此处找到:

    https://developer.atlassian.com/bitbucket/api/2/reference/resource/

    仅供引用:这是我的玩具项目的 pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.fernandes</groupId>
    <artifactId>bitbucket.experiments</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
    <junit.version>5.0.0-M4</junit.version>
    <bitbucket.version>4.0.0-m27</bitbucket.version>
    </properties>

    <repositories>
    <repository>
    <id>Atlassian</id>
    <url>https://maven.atlassian.com/content/repositories/atlassian-public</url>
    </repository>
    </repositories>

    <dependencies>
    <dependency>
    <groupId>com.mashape.unirest</groupId>
    <artifactId>unirest-java</artifactId>
    <version>1.4.9</version>
    </dependency>
    <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.assertj/assertj-core -->
    <dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.8.0</version>
    <scope>test</scope>
    </dependency>
    </dependencies>

    </project>

    关于java - 如何使用 Java 读取 BitBucket/Stash 分支及其链接的 JIRA 票据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44919925/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com