PageRenderTime 39ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/src/main/java/com/trendmicro/rdhelpdesk/command/utils/ConnectJiraUtils.java

https://gitlab.com/goodman1209/JiraRestClientDemo
Java | 112 lines | 95 code | 14 blank | 3 comment | 7 complexity | 5139e6f97d56d9e2d0f7779a8c77b55b MD5 | raw file
  1. package com.trendmicro.rdhelpdesk.command.utils;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStreamWriter;
  6. import java.net.HttpURLConnection;
  7. import java.net.MalformedURLException;
  8. import java.net.URI;
  9. import java.net.URISyntaxException;
  10. import java.net.URL;
  11. import java.nio.charset.Charset;
  12. import org.apache.commons.codec.binary.Base64;
  13. import org.codehaus.jettison.json.JSONException;
  14. import org.codehaus.jettison.json.JSONObject;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import com.atlassian.jira.rest.client.JiraRestClient;
  18. import com.atlassian.jira.rest.client.JiraRestClientFactory;
  19. import com.atlassian.jira.rest.client.domain.Issue;
  20. import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
  21. public class ConnectJiraUtils {
  22. private static final Logger LOG = LoggerFactory.getLogger(ConnectJiraUtils.class);
  23. private static final String JIRA_URL = "http://10.28.9.101:8080/";
  24. public static JiraRestClient GetJiraRestClientInstance(String username, String password) throws URISyntaxException {
  25. JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
  26. URI uri = new URI(JIRA_URL);
  27. return factory.createWithBasicHttpAuthentication(uri, username, password);
  28. }
  29. public static HttpURLConnection urlConnection(URL url, String encoding, boolean isTransition) throws IOException {
  30. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  31. connection.setDoOutput(true);
  32. connection.setRequestProperty("Content-Type", "application/json");
  33. if (isTransition) {
  34. connection.setRequestMethod("POST");
  35. } else {
  36. connection.setRequestMethod("PUT");
  37. }
  38. connection.setRequestProperty("Authorization", "Basic " + encoding);
  39. return connection;
  40. }
  41. public static HttpURLConnection urlGetConnection(URL url, String encoding) throws IOException {
  42. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  43. connection.setDoOutput(true);
  44. connection.setRequestProperty("Content-Type", "application/json");
  45. connection.setRequestMethod("GET");
  46. connection.setRequestProperty("Authorization", "Basic " + encoding);
  47. return connection;
  48. }
  49. public static URL forIssue(Issue issue, boolean isTransition) throws MalformedURLException {
  50. if (isTransition) {
  51. return new URL(issue.getSelf().toURL().toString() + "/transitions?expand=transitions.fields ");
  52. }
  53. return issue.getSelf().toURL();
  54. }
  55. public static String withEncoding(String user, String pass) {
  56. String userPassword = user + ":" + pass;
  57. return encodeBase64String(userPassword.getBytes());
  58. }
  59. public static String encodeBase64String(byte[] bytes) {
  60. // TODO Auto-generated method stub
  61. return Base64.encodeBase64String(bytes);
  62. }
  63. public static void update(Issue issue, JSONObject jsonObj, boolean isTransition, String user, String pass)
  64. throws JSONException {
  65. try {
  66. HttpURLConnection connection = urlConnection(forIssue(issue, isTransition), withEncoding(user, pass),
  67. isTransition);
  68. LOG.info("for Issue {}", forIssue(issue, isTransition));
  69. connection.connect();
  70. writeData(connection, jsonObj);
  71. checkResponse(connection);
  72. } catch (IOException e) {
  73. // LOG.info(e.getStackTrace().toString());
  74. throw new RuntimeException(e);
  75. }
  76. }
  77. private static void writeData(HttpURLConnection connection, JSONObject fields) throws IOException {
  78. // LOG.info(fields.toString());
  79. OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
  80. out.write(fields.toString());
  81. out.flush();
  82. out.close();
  83. }
  84. private static void checkResponse(HttpURLConnection connection) throws IOException {
  85. if (HttpURLConnection.HTTP_NO_CONTENT != connection.getResponseCode()) {
  86. BufferedReader reader = new BufferedReader(new InputStreamReader(
  87. ((HttpURLConnection) (new URL(connection.getURL().toString())).openConnection()).getInputStream(),
  88. Charset.forName("UTF-8")));
  89. StringBuilder stringBuilder = new StringBuilder();
  90. String line = null;
  91. while ((line = reader.readLine()) != null) {
  92. stringBuilder.append(line + "\r\n");
  93. }
  94. LOG.info(stringBuilder.toString());
  95. }
  96. System.exit(0);
  97. }
  98. }