SeecoderGitlabClient.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580
  1. package com.nju.edu.gitlab;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.JsonNode;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.nju.edu.gitlab.dto.*;
  6. import com.nju.edu.gitlab.dto.commit.CommitActionForm;
  7. import com.nju.edu.gitlab.dto.commit.CommitDTO;
  8. import com.nju.edu.gitlab.dto.member.AccessLevelForm;
  9. import com.nju.edu.gitlab.dto.member.GroupMemberDTO;
  10. import com.nju.edu.gitlab.dto.project.ProjectDTO;
  11. import com.nju.edu.gitlab.dto.project.VisibilityForm;
  12. import com.nju.edu.gitlab.vo.*;
  13. import com.nju.edu.gitlab.vo.commit.CommitVO;
  14. import org.gitlab4j.api.GitLabApiException;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import okhttp3.*;
  18. import org.gitlab4j.api.models.AccessLevel;
  19. import org.gitlab4j.api.models.CommitAction;
  20. import org.gitlab4j.api.models.Visibility;
  21. import java.io.IOException;
  22. import java.util.ArrayList;
  23. import java.util.HashSet;
  24. import java.util.List;
  25. import java.util.Set;
  26. import java.util.concurrent.TimeUnit;
  27. import java.util.stream.Collectors;
  28. import static com.nju.edu.gitlab.SeecoderGitlabException.BIZ_ERROR_CODE;
  29. public class SeecoderGitlabClient implements SeecoderGitlabApi{
  30. private final Logger logger = LoggerFactory.getLogger(getClass());
  31. private OkHttpClient client;
  32. private String host;
  33. private String token;
  34. public SeecoderGitlabClient(String host,String token){
  35. this.token=token;
  36. this.host=host;
  37. this.client=new OkHttpClient.Builder()
  38. .connectTimeout(60, TimeUnit.SECONDS)
  39. .writeTimeout(60,TimeUnit.SECONDS)
  40. .retryOnConnectionFailure(true)
  41. .build();
  42. }
  43. private <T> T processResponse(ObjectMapper objectMapper, Response response, Class<T> clazz) throws SeecoderGitlabException {
  44. try {
  45. validateResponseStatus(response);
  46. String body = response.body().string();
  47. JsonNode node = objectMapper.readTree(body);
  48. Integer code = Integer.parseInt(node.get("code").asText());
  49. String msg = node.get("msg").asText();
  50. if (code != 0) {
  51. throw new SeecoderGitlabException(BIZ_ERROR_CODE, msg);
  52. }
  53. if (clazz == null) {
  54. return null;
  55. }
  56. if (node.get("result")!=null)
  57. return objectMapper.treeToValue(node.get("result"), clazz);
  58. else
  59. throw SeecoderGitlabException.NOT_FOUND_ERROR;
  60. } catch (IOException e) {
  61. logger.error("IOException", e);
  62. throw SeecoderGitlabException.IO_ERROR;
  63. }
  64. }
  65. private void validateResponseStatus(Response response) throws SeecoderGitlabException {
  66. if (response.code() == 403) {
  67. throw SeecoderGitlabException.UNAHTORIZATION_ERROR;
  68. } else if (response.code() == 500) {
  69. throw SeecoderGitlabException.INTERNAL_SERVER_ERROR;
  70. } else if (response.code() != 200) {
  71. throw SeecoderGitlabException.UNKNOWN_ERROR;
  72. }
  73. }
  74. @Override
  75. public GitlabUserVO createGitlabUser(int userId,String username, String password, String email) throws SeecoderGitlabException {
  76. try {
  77. ObjectMapper objectMapper = new ObjectMapper();
  78. Request.Builder builder = new Request.Builder()
  79. .addHeader("Authorization", token);
  80. GitlabUserDTO gitlabUserDTO=GitlabUserDTO.builder()
  81. .userId(userId)
  82. .email(email)
  83. .password(password)
  84. .username(username)
  85. .build();
  86. builder = builder
  87. .url(host + "/api/user/")
  88. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(gitlabUserDTO)));
  89. Request request = builder.build();
  90. final Call call = client.newCall(request);
  91. Response response = call.execute();
  92. GitlabUserVO gitlabUserVO = processResponse(objectMapper, response, GitlabUserVO.class);
  93. return gitlabUserVO;
  94. } catch (JsonProcessingException e) {
  95. logger.error("JSON writeValueAsString error", e);
  96. throw SeecoderGitlabException.JSON_ERROR;
  97. } catch (IOException e) {
  98. logger.error("IOException", e);
  99. throw SeecoderGitlabException.IO_ERROR;
  100. }
  101. }
  102. @Override
  103. public boolean changePassword(int userId, String password) throws SeecoderGitlabException {
  104. try {
  105. ObjectMapper objectMapper = new ObjectMapper();
  106. Request.Builder builder = new Request.Builder()
  107. .addHeader("Authorization", token);
  108. ChangePasswordDTO changePasswordDTO=ChangePasswordDTO.builder()
  109. .password(password)
  110. .userId(userId)
  111. .build();
  112. builder = builder
  113. .url(host + "/api/user/changePassword")
  114. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(changePasswordDTO)));
  115. Request request = builder.build();
  116. final Call call = client.newCall(request);
  117. Response response = call.execute();
  118. return processResponse(objectMapper, response, boolean.class);
  119. } catch (JsonProcessingException e) {
  120. logger.error("JSON writeValueAsString error", e);
  121. throw SeecoderGitlabException.JSON_ERROR;
  122. } catch (IOException e) {
  123. logger.error("IOException", e);
  124. throw SeecoderGitlabException.IO_ERROR;
  125. }
  126. }
  127. @Override
  128. public boolean deleteUser(int userId) throws SeecoderGitlabException {
  129. try {
  130. ObjectMapper objectMapper = new ObjectMapper();
  131. Request.Builder builder = new Request.Builder()
  132. .addHeader("Authorization", token);
  133. builder = builder
  134. .url(host + "/api/user/"+userId)
  135. .delete();
  136. Request request = builder.build();
  137. final Call call = client.newCall(request);
  138. Response response = call.execute();
  139. boolean isDeleted = processResponse(objectMapper, response, boolean.class);
  140. return isDeleted;
  141. } catch (JsonProcessingException e) {
  142. logger.error("JSON writeValueAsString error", e);
  143. throw SeecoderGitlabException.JSON_ERROR;
  144. } catch (IOException e) {
  145. logger.error("IOException", e);
  146. throw SeecoderGitlabException.IO_ERROR;
  147. }
  148. }
  149. @Override
  150. public GitlabGroup createGroup(String groupName) throws SeecoderGitlabException {
  151. try {
  152. ObjectMapper objectMapper = new ObjectMapper();
  153. Request.Builder builder = new Request.Builder()
  154. .addHeader("Authorization", token);
  155. builder = builder
  156. .url(host + "/api/user")
  157. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), groupName));
  158. Request request = builder.build();
  159. final Call call = client.newCall(request);
  160. Response response = call.execute();
  161. GitlabGroup gitlabGroup = processResponse(objectMapper, response, GitlabGroup.class);
  162. return gitlabGroup;
  163. } catch (JsonProcessingException e) {
  164. logger.error("JSON writeValueAsString error", e);
  165. throw SeecoderGitlabException.JSON_ERROR;
  166. } catch (IOException e) {
  167. logger.error("IOException", e);
  168. throw SeecoderGitlabException.IO_ERROR;
  169. }
  170. }
  171. @Override
  172. public boolean addMember(int groupId, int userId, AccessLevelForm accessLevelForm) throws SeecoderGitlabException {
  173. try {
  174. ObjectMapper objectMapper = new ObjectMapper();
  175. Request.Builder builder = new Request.Builder()
  176. .addHeader("Authorization", token);
  177. AccessLevel accessLevel=AccessLevel.forValue(accessLevelForm.value);
  178. GroupMemberDTO groupMemberDTO=GroupMemberDTO.builder()
  179. .accessLevel(accessLevel)
  180. .userId(userId)
  181. .groupId(groupId)
  182. .build();
  183. builder = builder
  184. .url(host + "/api/group/addMember")
  185. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(groupMemberDTO)));
  186. Request request = builder.build();
  187. final Call call = client.newCall(request);
  188. Response response = call.execute();
  189. boolean isAdded = processResponse(objectMapper, response, boolean.class);
  190. return isAdded;
  191. } catch (JsonProcessingException e) {
  192. logger.error("JSON writeValueAsString error", e);
  193. throw SeecoderGitlabException.JSON_ERROR;
  194. } catch (IOException e) {
  195. logger.error("IOException", e);
  196. throw SeecoderGitlabException.IO_ERROR;
  197. }
  198. }
  199. @Override
  200. public ProjectVO createProject(String projectName, VisibilityForm visibilityForm) throws SeecoderGitlabException {
  201. try {
  202. ObjectMapper objectMapper = new ObjectMapper();
  203. Request.Builder builder = new Request.Builder()
  204. .addHeader("Authorization", token);
  205. Visibility visibility=Visibility.forValue(visibilityForm.toString());
  206. ProjectDTO projectDTO= ProjectDTO.builder()
  207. .projectName(projectName)
  208. .visibility(visibility)
  209. .build();
  210. builder = builder
  211. .url(host + "/api/project")
  212. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectDTO)));
  213. Request request = builder.build();
  214. final Call call = client.newCall(request);
  215. Response response = call.execute();
  216. return processResponse(objectMapper, response, ProjectVO.class);
  217. } catch (JsonProcessingException e) {
  218. logger.error("JSON writeValueAsString error", e);
  219. throw SeecoderGitlabException.JSON_ERROR;
  220. } catch (IOException e) {
  221. logger.error("IOException", e);
  222. throw SeecoderGitlabException.IO_ERROR;
  223. }
  224. }
  225. @Override
  226. public Integer forkProject(int projectId, int userId) throws SeecoderGitlabException {
  227. try {
  228. ObjectMapper objectMapper = new ObjectMapper();
  229. Request.Builder builder = new Request.Builder()
  230. .addHeader("Authorization", token);
  231. UserForkDTO userForkDTO= UserForkDTO.builder()
  232. .projectId(projectId)
  233. .userId(userId)
  234. .build();
  235. builder = builder
  236. .url(host + "/api/project/userFork")
  237. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(userForkDTO)));
  238. Request request = builder.build();
  239. final Call call = client.newCall(request);
  240. Response response = call.execute();
  241. projectId = processResponse(objectMapper, response, Integer.class);
  242. return projectId;
  243. } catch (JsonProcessingException e) {
  244. logger.error("JSON writeValueAsString error", e);
  245. throw SeecoderGitlabException.JSON_ERROR;
  246. } catch (IOException e) {
  247. logger.error("IOException", e);
  248. throw SeecoderGitlabException.IO_ERROR;
  249. }
  250. }
  251. @Override
  252. public Integer forkGroupProject(int projectId, int groupId) throws SeecoderGitlabException {
  253. try {
  254. ObjectMapper objectMapper = new ObjectMapper();
  255. Request.Builder builder = new Request.Builder()
  256. .addHeader("Authorization", token);
  257. GroupForkDTO groupForkDTO= GroupForkDTO.builder()
  258. .projectId(projectId)
  259. .groupId(groupId)
  260. .build();
  261. builder = builder
  262. .url(host + "/api/project/groupFork")
  263. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(groupForkDTO)));
  264. Request request = builder.build();
  265. final Call call = client.newCall(request);
  266. Response response = call.execute();
  267. projectId = processResponse(objectMapper, response, Integer.class);
  268. return projectId;
  269. } catch (JsonProcessingException e) {
  270. logger.error("JSON writeValueAsString error", e);
  271. throw SeecoderGitlabException.JSON_ERROR;
  272. } catch (IOException e) {
  273. logger.error("IOException", e);
  274. throw SeecoderGitlabException.IO_ERROR;
  275. }
  276. }
  277. @Override
  278. public Set<DiffVO> compare(int projectId, String fromBash, String toBash) throws SeecoderGitlabException {
  279. try {
  280. ObjectMapper objectMapper = new ObjectMapper();
  281. Request.Builder builder = new Request.Builder()
  282. .addHeader("Authorization", token);
  283. builder = builder
  284. .url(host + "/api/project/compare?projectId="+projectId+"&fromBash="+fromBash+"&toBash="+toBash)
  285. .get();
  286. Request request = builder.build();
  287. final Call call = client.newCall(request);
  288. Response response = call.execute();
  289. Set<DiffVO> diffVOSet= new HashSet<>();
  290. diffVOSet=processResponse(objectMapper, response, diffVOSet.getClass());
  291. return diffVOSet;
  292. } catch (JsonProcessingException e) {
  293. logger.error("JSON writeValueAsString error", e);
  294. throw SeecoderGitlabException.JSON_ERROR;
  295. } catch (IOException e) {
  296. logger.error("IOException", e);
  297. throw SeecoderGitlabException.IO_ERROR;
  298. }
  299. }
  300. @Override
  301. public boolean addWebHook(int projectId, String url, boolean doPushEvents, boolean doIssueEvents, boolean doMergeRequestsEvents) throws SeecoderGitlabException {
  302. try {
  303. ObjectMapper objectMapper = new ObjectMapper();
  304. Request.Builder builder = new Request.Builder()
  305. .addHeader("Authorization", token);
  306. WebHookDTO webHookDTO= WebHookDTO.builder()
  307. .projectId(projectId)
  308. .url(url)
  309. .doIssueEvents(doIssueEvents)
  310. .doPushEvents(doPushEvents)
  311. .doMergeRequestsEvents(doMergeRequestsEvents)
  312. .build();
  313. builder = builder
  314. .url(host + "/api/project/webhook")
  315. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(webHookDTO)));
  316. Request request = builder.build();
  317. final Call call = client.newCall(request);
  318. Response response = call.execute();
  319. return processResponse(objectMapper, response, boolean.class);
  320. } catch (JsonProcessingException e) {
  321. logger.error("JSON writeValueAsString error", e);
  322. throw SeecoderGitlabException.JSON_ERROR;
  323. } catch (IOException e) {
  324. logger.error("IOException", e);
  325. throw SeecoderGitlabException.IO_ERROR;
  326. }
  327. }
  328. @Override
  329. public boolean archiveProject(int projectId) throws SeecoderGitlabException {
  330. try {
  331. ObjectMapper objectMapper = new ObjectMapper();
  332. Request.Builder builder = new Request.Builder()
  333. .addHeader("Authorization", token);
  334. builder = builder
  335. .url(host + "/api/project/archive")
  336. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectId)));
  337. Request request = builder.build();
  338. final Call call = client.newCall(request);
  339. Response response = call.execute();
  340. return processResponse(objectMapper, response, boolean.class);
  341. } catch (JsonProcessingException e) {
  342. logger.error("JSON writeValueAsString error", e);
  343. throw SeecoderGitlabException.JSON_ERROR;
  344. } catch (IOException e) {
  345. logger.error("IOException", e);
  346. throw SeecoderGitlabException.IO_ERROR;
  347. }
  348. }
  349. @Override
  350. public String getProjectFile(int projectId, String branch, String path) throws SeecoderGitlabException {
  351. try {
  352. ObjectMapper objectMapper = new ObjectMapper();
  353. Request.Builder builder = new Request.Builder()
  354. .addHeader("Authorization", token);
  355. ProjectFileDTO projectFileDTO=ProjectFileDTO.builder()
  356. .path(path)
  357. .branch(branch)
  358. .build();
  359. builder = builder
  360. .url(host + "/api/project/"+projectId+"/getFile")
  361. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectFileDTO)));
  362. Request request = builder.build();
  363. final Call call = client.newCall(request);
  364. Response response = call.execute();
  365. return processResponse(objectMapper, response, String.class);
  366. } catch (JsonProcessingException e) {
  367. logger.error("JSON writeValueAsString error", e);
  368. throw SeecoderGitlabException.JSON_ERROR;
  369. } catch (IOException e) {
  370. logger.error("IOException", e);
  371. throw SeecoderGitlabException.IO_ERROR;
  372. }
  373. }
  374. @Override
  375. public String getProjectRawFile(int projectId, String commitOrBranchName, String path) throws SeecoderGitlabException {
  376. try {
  377. ObjectMapper objectMapper = new ObjectMapper();
  378. Request.Builder builder = new Request.Builder()
  379. .addHeader("Authorization", token);
  380. ProjectRawFileDTO projectFileDTO=ProjectRawFileDTO.builder()
  381. .commitOrBranchName(commitOrBranchName)
  382. .path(path)
  383. .build();
  384. builder = builder
  385. .url(host + "/api/project/"+projectId+"/getRawFile")
  386. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectFileDTO)));
  387. Request request = builder.build();
  388. final Call call = client.newCall(request);
  389. Response response = call.execute();
  390. return processResponse(objectMapper, response, String.class);
  391. } catch (JsonProcessingException e) {
  392. logger.error("JSON writeValueAsString error", e);
  393. throw SeecoderGitlabException.JSON_ERROR;
  394. } catch (IOException e) {
  395. logger.error("IOException", e);
  396. throw SeecoderGitlabException.IO_ERROR;
  397. }
  398. }
  399. @Override
  400. public CommitVO createCommit(int projectId, String branch, String commitMessage, String email, String username, List<CommitActionForm> actions) throws SeecoderGitlabException {
  401. try {
  402. ObjectMapper objectMapper = new ObjectMapper();
  403. Request.Builder builder = new Request.Builder()
  404. .addHeader("Authorization", token);
  405. List<CommitAction> actionList=actions.stream().map(action-> new CommitAction()
  406. .withAction(CommitAction.Action.forValue(action.getAction().toString()))
  407. .withEncoding(CommitAction.Encoding.forValue(action.getEncoding().toString()))
  408. .withFilePath(action.getFilepath())
  409. .withContent(action.getContent())).collect(Collectors.toList());
  410. CommitDTO commitDTO=CommitDTO.builder()
  411. .branch(branch)
  412. .commitMessage(commitMessage)
  413. .email(email)
  414. .username(username)
  415. .actions(actionList)
  416. .build();
  417. builder = builder
  418. .url(host + "/api/project/"+projectId+"/commit")
  419. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(commitDTO)));
  420. Request request = builder.build();
  421. final Call call = client.newCall(request);
  422. Response response = call.execute();
  423. return processResponse(objectMapper, response, CommitVO.class);
  424. } catch (JsonProcessingException e) {
  425. logger.error("JSON writeValueAsString error", e);
  426. throw SeecoderGitlabException.JSON_ERROR;
  427. } catch (IOException e) {
  428. logger.error("IOException", e);
  429. throw SeecoderGitlabException.IO_ERROR;
  430. }
  431. }
  432. @Override
  433. public List<CommitVO> getAllCommitMessage(int projectId, String commitHash) throws SeecoderGitlabException {
  434. try {
  435. ObjectMapper objectMapper = new ObjectMapper();
  436. Request.Builder builder = new Request.Builder()
  437. .addHeader("Authorization", token);
  438. builder = builder
  439. .url(host + "/api/project/"+projectId+"/commit/"+commitHash)
  440. .get();
  441. Request request = builder.build();
  442. final Call call = client.newCall(request);
  443. Response response = call.execute();
  444. List<CommitVO> commitVOList=new ArrayList<>();
  445. commitVOList=processResponse(objectMapper, response, commitVOList.getClass());
  446. return commitVOList;
  447. } catch (JsonProcessingException e) {
  448. logger.error("JSON writeValueAsString error", e);
  449. throw SeecoderGitlabException.JSON_ERROR;
  450. } catch (IOException e) {
  451. logger.error("IOException", e);
  452. throw SeecoderGitlabException.IO_ERROR;
  453. }
  454. }
  455. @Override
  456. public List<BranchVO> getProjectBranches(int projectId) throws SeecoderGitlabException {
  457. try {
  458. ObjectMapper objectMapper = new ObjectMapper();
  459. Request.Builder builder = new Request.Builder()
  460. .addHeader("Authorization", token);
  461. builder = builder
  462. .url(host + "/api/project/"+projectId+"/branches")
  463. .get();
  464. Request request = builder.build();
  465. final Call call = client.newCall(request);
  466. Response response = call.execute();
  467. List<BranchVO> branchVOList=new ArrayList<>();
  468. branchVOList=processResponse(objectMapper, response, branchVOList.getClass());
  469. return branchVOList;
  470. } catch (JsonProcessingException e) {
  471. logger.error("JSON writeValueAsString error", e);
  472. throw SeecoderGitlabException.JSON_ERROR;
  473. } catch (IOException e) {
  474. logger.error("IOException", e);
  475. throw SeecoderGitlabException.IO_ERROR;
  476. }
  477. }
  478. @Override
  479. public boolean addAuthorization(int projectId, int userId, AccessLevelForm accessLevelForm) throws GitLabApiException, SeecoderGitlabException {
  480. try {
  481. ObjectMapper objectMapper = new ObjectMapper();
  482. Request.Builder builder = new Request.Builder()
  483. .addHeader("Authorization", token);
  484. AccessLevel accessLevel=AccessLevel.forValue(accessLevelForm.value);
  485. UpdateMemberDTO updateMemberDTO=UpdateMemberDTO.builder()
  486. .accessLevel(accessLevel)
  487. .userId(userId)
  488. .projectId(projectId)
  489. .build();
  490. builder = builder
  491. .url(host + "/api/project/updateMember")
  492. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(updateMemberDTO)));
  493. Request request = builder.build();
  494. final Call call = client.newCall(request);
  495. Response response = call.execute();
  496. boolean isAdded = processResponse(objectMapper, response, boolean.class);
  497. return isAdded;
  498. } catch (JsonProcessingException e) {
  499. logger.error("JSON writeValueAsString error", e);
  500. throw SeecoderGitlabException.JSON_ERROR;
  501. } catch (IOException e) {
  502. logger.error("IOException", e);
  503. throw SeecoderGitlabException.IO_ERROR;
  504. }
  505. }
  506. @Override
  507. public List<ProjectVO> getAllProjectsByUserId(int userId) throws SeecoderGitlabException {
  508. try {
  509. ObjectMapper objectMapper = new ObjectMapper();
  510. Request.Builder builder = new Request.Builder()
  511. .addHeader("Authorization", token);
  512. builder = builder
  513. .url(host + "/api/project/allProjects/"+userId)
  514. .get();
  515. Request request = builder.build();
  516. final Call call = client.newCall(request);
  517. Response response = call.execute();
  518. List<ProjectVO> projectVOList=new ArrayList<>();
  519. projectVOList=processResponse(objectMapper, response, projectVOList.getClass());
  520. return projectVOList;
  521. } catch (JsonProcessingException e) {
  522. logger.error("JSON writeValueAsString error", e);
  523. throw SeecoderGitlabException.JSON_ERROR;
  524. } catch (IOException e) {
  525. logger.error("IOException", e);
  526. throw SeecoderGitlabException.IO_ERROR;
  527. }
  528. }
  529. @Override
  530. public List<Integer> getJoinedUserByProject(int projectId) throws SeecoderGitlabException {
  531. try {
  532. ObjectMapper objectMapper = new ObjectMapper();
  533. Request.Builder builder = new Request.Builder()
  534. .addHeader("Authorization", token);
  535. builder = builder
  536. .url(host + "/api/project/projectMembers/"+projectId)
  537. .get();
  538. Request request = builder.build();
  539. final Call call = client.newCall(request);
  540. Response response = call.execute();
  541. List<Integer> userList=new ArrayList<>();
  542. userList=processResponse(objectMapper, response, userList.getClass());
  543. return userList;
  544. } catch (JsonProcessingException e) {
  545. logger.error("JSON writeValueAsString error", e);
  546. throw SeecoderGitlabException.JSON_ERROR;
  547. } catch (IOException e) {
  548. logger.error("IOException", e);
  549. throw SeecoderGitlabException.IO_ERROR;
  550. }
  551. }
  552. }