2017-07-05 1 views
1

Ich möchte Bitbucket/Stash-Filialen und ihre respektierten Jira-Problem zu lesen, als ich danach suchte und Atlassian APIs fand.wie BitBucket/Stash-Filialen und ihre verknüpften JIRA-Tickets mit Java zu lesen

Ich konnte keine geeigneten Beispiele in diesem finden, wie Wie verbinde ich mich mit bitbucket Server, erhalten Informationen von jedem Projekt, und lesen Zweige dieses Projekts, und auch, wenn es Jira Problem ist mit der verknüpft Ast.

Jede Hilfe oder Richtung wäre toll.

Ich suche ein Java-Beispiel dafür.

+0

Ich nehme an, Sie suchen für einige Java-basierte Beispiele, nicht wahr? –

+0

Hi @ gil.fernandes, ja, es wäre gut, wenn es irgendwelche Java-API-basierten Beispiele gibt. –

Antwort

1

Ich habe einen möglichen Weg gefunden, mit der API zu interagieren und die Repositories und Benutzerinformationen von Bitbucket zu bekommen. Dennoch musste ich die OAuth-Authentifizierung verwenden, die einen Browser-Rückruf erforderte. Dies ist für eine eigenständige Anwendung möglicherweise nicht sehr praktisch.

So, hier ist das, was ich getan habe:

  1. einen OAuth Verbraucher auf meinem BitBucket Konto erstellt. Dies ist ziemlich gut auf dieser Seite beschrieben: https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html. Nachdem ich das getan hatte, hatte ich einen Verbraucher mit einem Schlüssel und einem Geheimnis.

  2. Ich führte eine GET-Abfrage direkt auf dem Browser diese Verbindung: https://bitbucket.org/site/oauth2/authorize?client_id= {client_id} & response_type = code. Die {client_id} ist eigentlich der Schlüssel, der im vorherigen Punkt 1 erzeugt wurde. Dies führte mich zu einer Seite, auf der ich die Zuschüsse für die OAuth-App bestätigen konnte. Nach Bestätigung der Bewilligungen wird die Browserseite an eine Seitenliste wie diese weitergeleitet: http://giltest.org/?code=LcY6FmeyvjqM2xnTyN. Der Code "LcY6FmeyvjqM2xnTyN" ist der Code, mit dem im nächsten Schritt der Autorisierungscode generiert wird.

  3. Jetzt generieren wir den Autorisierungscode, der den Zugriff auf die BitBucket REST API ermöglicht. Ich habe dafür einen Java-Code in einem Maven-Projekt erstellt. Weitere Informationen zur pom.xml finden Sie weiter unten. Mit Hilfe der Unirest Bibliothek Ich habe diese Methoden erstellt, die den Zugriffstoken abzurufen:

Zugriffstoken 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(); 
} 

Die Reaktion dieses Verfahrens wird das Zugriffstoken in JSON enthalten:

{"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} 

Sie können das Token direkt mit diesem Meth extrahieren od:

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(); 
} 
  1. Danach Sie das Zugriffstoken aus dem JSON extrahieren und sie in einer Anfrage verwenden. Siehe den Abschnitt "Anfragen stellen" unter this page.Hier ist ein Beispiel Java-Code-Methode, die die Bitbucket Benutzerinformationen bekommt:

Benutzerinformationsanfrag

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(); 
} 

anzeigen 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(); 
} 

Weitere Informationen auf der REST-API kann h gefunden werden ere:

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

Just for reference: Hier ist die pom.xml meines Spielzeug Projekt:

<?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> 
+0

Dieses Beispiel scheint für Bitbucket Cloud zu sein. Ich denke, die Frage betrifft Bitbucket Server, der eine andere API hat – Rog

Verwandte Themen