SeecoderGitlabClient.java 28 KB

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