jira_darkbluetext_medium
Jira 5.2.8

Les versions de Jira proposent de plus en plus de services REST et les utilisateurs/développeurs sont donc de plus en plus nombreux à les utiliser. Nous allons répondre au premier problème que l’on rencontre : l’authentification.

Dans le cas de la version 5.2.8 de Jira il est indiqué dans la documentation qu’il faut utiliser la méthode Basic.

Any authentication that works against JIRA will work against the REST API. The prefered authentication methods are HTTP Basic (when using SSL) and OAuth, which are both documented in the JIRA REST API Tutorials. Other supported methods include: HTTP Cookies, Trusted Applications, and os_username/os_password query parameters.

Voici donc un exemple d’un appel REST en méthode GET qui récupère du JSON (avec jersey) :

import java.io.IOException;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.Base64;
public class RESTService {

  public String auth(String login, String password) {
    return new String(Base64.encode(login + ":" + password));
  }

  public String get(String auth, String address) throws IOException {
    Client client = Client.create();
    WebResource webResource = client.resource(address);
    ClientResponse response = webResource.accept(MediaType.APPLICATION_JSON).header("Authorization", "Basic " + auth).get(ClientResponse.class);
    String output = response.getEntity(String.class);
    
	if (response.getStatus() >= 300) {
      throw new RuntimeException("Error " + response.getStatus() + " : " + output);
    }
	
    return output;
  }
}

Voici la classe main qui appelle tout ça :

public static void main(String[] arg) throws IOException {
  RESTService client = new RESTService();
  String auth = client.auth("my_login", "my_password");
  
  // Exemple de GET Jira : Récupérer des demandes du projet ABC
  String issues = client.get(auth, "http://localhost:8080/jira/rest/api/2/search?jql=project+=+ABC");
  System.out.println(issues);
}

Documentation Jira 5.2.8 REST API : https://docs.atlassian.com/jira/REST/5.2.8/
Pour serialiser/déserialiser le JSON je vous conseille d’utiliser jackson.
Pour simplement parser le JSON je vous conseille Simple JSON.

Sinon, il existe un plugin sur le Marketplace : REST Java Client for Jira (lien vers la documentation). Je ne sais pas ce que vaut ce plugin… A tester !

MàJ : aujourd’hui j’utiliserai plutôt restTemplate de Spring pour ce genre d’appels !

A vous de jouer !

Publicités