SeecoderGitlabClient.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  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 err = Integer.parseInt(node.get("err").asText());
  53. if (err != 0) {
  54. String msg = node.get("msg").asText();
  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 ProjectVO createPrivateProject(String projectName, VisibilityForm visibilityForm, Integer userId) throws SeecoderGitlabException {
  235. try {
  236. ObjectMapper objectMapper = new ObjectMapper();
  237. Request.Builder builder = new Request.Builder()
  238. .addHeader("Authorization", token);
  239. Visibility visibility=Visibility.valueOf(visibilityForm.toString());
  240. ProjectDTO projectDTO= ProjectDTO.builder()
  241. .projectName(projectName)
  242. .visibility(visibility)
  243. .userId(userId)
  244. .build();
  245. builder = builder
  246. .url(host + "/api/project/private")
  247. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectDTO)));
  248. Request request = builder.build();
  249. final Call call = client.newCall(request);
  250. Response response = call.execute();
  251. return processResponse(objectMapper, response, new TypeReference<ProjectVO>() {
  252. });
  253. } catch (JsonProcessingException e) {
  254. logger.error("JSON writeValueAsString error", e);
  255. throw SeecoderGitlabException.JSON_ERROR;
  256. } catch (IOException e) {
  257. logger.error("IOException", e);
  258. throw SeecoderGitlabException.IO_ERROR;
  259. }
  260. }
  261. @Override
  262. public Integer forkProject(int projectId, int userId) throws SeecoderGitlabException {
  263. try {
  264. ObjectMapper objectMapper = new ObjectMapper();
  265. Request.Builder builder = new Request.Builder()
  266. .addHeader("Authorization", token);
  267. UserForkDTO userForkDTO= UserForkDTO.builder()
  268. .projectId(projectId)
  269. .userId(userId)
  270. .build();
  271. builder = builder
  272. .url(host + "/api/project/userFork")
  273. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(userForkDTO)));
  274. Request request = builder.build();
  275. final Call call = client.newCall(request);
  276. Response response = call.execute();
  277. projectId = processResponse(objectMapper, response, new TypeReference<Integer>() {
  278. });
  279. return projectId;
  280. } catch (JsonProcessingException e) {
  281. logger.error("JSON writeValueAsString error", e);
  282. throw SeecoderGitlabException.JSON_ERROR;
  283. } catch (IOException e) {
  284. logger.error("IOException", e);
  285. throw SeecoderGitlabException.IO_ERROR;
  286. }
  287. }
  288. @Override
  289. public Integer forkGroupProject(int projectId, int groupId) throws SeecoderGitlabException {
  290. try {
  291. ObjectMapper objectMapper = new ObjectMapper();
  292. Request.Builder builder = new Request.Builder()
  293. .addHeader("Authorization", token);
  294. GroupForkDTO groupForkDTO= GroupForkDTO.builder()
  295. .projectId(projectId)
  296. .groupId(groupId)
  297. .build();
  298. builder = builder
  299. .url(host + "/api/project/groupFork")
  300. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(groupForkDTO)));
  301. Request request = builder.build();
  302. final Call call = client.newCall(request);
  303. Response response = call.execute();
  304. projectId = processResponse(objectMapper, response, new TypeReference<Integer>() {
  305. });
  306. return projectId;
  307. } catch (JsonProcessingException e) {
  308. logger.error("JSON writeValueAsString error", e);
  309. throw SeecoderGitlabException.JSON_ERROR;
  310. } catch (IOException e) {
  311. logger.error("IOException", e);
  312. throw SeecoderGitlabException.IO_ERROR;
  313. }
  314. }
  315. @Override
  316. public Set<DiffVO> compare(int projectId, String fromBash, String toBash) throws SeecoderGitlabException {
  317. try {
  318. ObjectMapper objectMapper = new ObjectMapper();
  319. Request.Builder builder = new Request.Builder()
  320. .addHeader("Authorization", token);
  321. builder = builder
  322. .url(host + "/api/project/compare?projectId="+projectId+"&fromBash="+fromBash+"&toBash="+toBash)
  323. .get();
  324. Request request = builder.build();
  325. final Call call = client.newCall(request);
  326. Response response = call.execute();
  327. Set<DiffVO> diffVOSet= new HashSet<>();
  328. diffVOSet=processResponse(objectMapper, response, new TypeReference<Set<DiffVO>>() {
  329. });
  330. return diffVOSet;
  331. } catch (JsonProcessingException e) {
  332. logger.error("JSON writeValueAsString error", e);
  333. throw SeecoderGitlabException.JSON_ERROR;
  334. } catch (IOException e) {
  335. logger.error("IOException", e);
  336. throw SeecoderGitlabException.IO_ERROR;
  337. }
  338. }
  339. @Override
  340. public boolean addWebHook(int projectId, String url, boolean doPushEvents, boolean doIssueEvents, boolean doMergeRequestsEvents) throws SeecoderGitlabException {
  341. try {
  342. ObjectMapper objectMapper = new ObjectMapper();
  343. Request.Builder builder = new Request.Builder()
  344. .addHeader("Authorization", token);
  345. WebHookDTO webHookDTO= WebHookDTO.builder()
  346. .projectId(projectId)
  347. .url(url)
  348. .doIssueEvents(doIssueEvents)
  349. .doPushEvents(doPushEvents)
  350. .doMergeRequestsEvents(doMergeRequestsEvents)
  351. .build();
  352. builder = builder
  353. .url(host + "/api/project/webhook")
  354. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(webHookDTO)));
  355. Request request = builder.build();
  356. final Call call = client.newCall(request);
  357. Response response = call.execute();
  358. return processResponse(objectMapper, response, new TypeReference<Boolean>() {
  359. });
  360. } catch (JsonProcessingException e) {
  361. logger.error("JSON writeValueAsString error", e);
  362. throw SeecoderGitlabException.JSON_ERROR;
  363. } catch (IOException e) {
  364. logger.error("IOException", e);
  365. throw SeecoderGitlabException.IO_ERROR;
  366. }
  367. }
  368. @Override
  369. public boolean archiveProject(int projectId) throws SeecoderGitlabException {
  370. try {
  371. ObjectMapper objectMapper = new ObjectMapper();
  372. Request.Builder builder = new Request.Builder()
  373. .addHeader("Authorization", token);
  374. builder = builder
  375. .url(host + "/api/project/archive")
  376. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectId)));
  377. Request request = builder.build();
  378. final Call call = client.newCall(request);
  379. Response response = call.execute();
  380. return processResponse(objectMapper, response, new TypeReference<Boolean>() {
  381. });
  382. } catch (JsonProcessingException e) {
  383. logger.error("JSON writeValueAsString error", e);
  384. throw SeecoderGitlabException.JSON_ERROR;
  385. } catch (IOException e) {
  386. logger.error("IOException", e);
  387. throw SeecoderGitlabException.IO_ERROR;
  388. }
  389. }
  390. @Override
  391. public String getProjectFile(int projectId, String branch, String path) throws SeecoderGitlabException {
  392. try {
  393. ObjectMapper objectMapper = new ObjectMapper();
  394. Request.Builder builder = new Request.Builder()
  395. .addHeader("Authorization", token);
  396. ProjectFileDTO projectFileDTO=ProjectFileDTO.builder()
  397. .path(path)
  398. .branch(branch)
  399. .build();
  400. builder = builder
  401. .url(host + "/api/project/"+projectId+"/getFile")
  402. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectFileDTO)));
  403. Request request = builder.build();
  404. final Call call = client.newCall(request);
  405. Response response = call.execute();
  406. return processResponse(objectMapper, response, new TypeReference<String>() {
  407. });
  408. } catch (JsonProcessingException e) {
  409. logger.error("JSON writeValueAsString error", e);
  410. throw SeecoderGitlabException.JSON_ERROR;
  411. } catch (IOException e) {
  412. logger.error("IOException", e);
  413. throw SeecoderGitlabException.IO_ERROR;
  414. }
  415. }
  416. @Override
  417. public String getProjectRawFile(int projectId, String commitOrBranchName, String path) throws SeecoderGitlabException {
  418. try {
  419. ObjectMapper objectMapper = new ObjectMapper();
  420. Request.Builder builder = new Request.Builder()
  421. .addHeader("Authorization", token);
  422. ProjectRawFileDTO projectFileDTO=ProjectRawFileDTO.builder()
  423. .commitOrBranchName(commitOrBranchName)
  424. .path(path)
  425. .build();
  426. builder = builder
  427. .url(host + "/api/project/"+projectId+"/getRawFile")
  428. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(projectFileDTO)));
  429. Request request = builder.build();
  430. final Call call = client.newCall(request);
  431. Response response = call.execute();
  432. return processResponse(objectMapper, response, new TypeReference<String>() {
  433. });
  434. } catch (JsonProcessingException e) {
  435. logger.error("JSON writeValueAsString error", e);
  436. throw SeecoderGitlabException.JSON_ERROR;
  437. } catch (IOException e) {
  438. logger.error("IOException", e);
  439. throw SeecoderGitlabException.IO_ERROR;
  440. }
  441. }
  442. @Override
  443. public CommitVO createCommit(int projectId, String branch, String commitMessage, String email, String username, List<CommitActionForm> actions) throws SeecoderGitlabException {
  444. try {
  445. ObjectMapper objectMapper = new ObjectMapper();
  446. Request.Builder builder = new Request.Builder()
  447. .addHeader("Authorization", token);
  448. List<CommitAction> actionList=actions.stream().map(action-> new CommitAction()
  449. .withAction(CommitAction.Action.forValue(action.getAction().toString()))
  450. .withEncoding(CommitAction.Encoding.forValue(action.getEncoding().toString()))
  451. .withFilePath(action.getFilepath())
  452. .withContent(action.getContent())).collect(Collectors.toList());
  453. CommitDTO commitDTO=CommitDTO.builder()
  454. .branch(branch)
  455. .commitMessage(commitMessage)
  456. .email(email)
  457. .username(username)
  458. .actions(actionList)
  459. .build();
  460. builder = builder
  461. .url(host + "/api/project/"+projectId+"/commit")
  462. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(commitDTO)));
  463. Request request = builder.build();
  464. final Call call = client.newCall(request);
  465. Response response = call.execute();
  466. return processResponse(objectMapper, response, new TypeReference<CommitVO>() {
  467. });
  468. } catch (JsonProcessingException e) {
  469. logger.error("JSON writeValueAsString error", e);
  470. throw SeecoderGitlabException.JSON_ERROR;
  471. } catch (IOException e) {
  472. logger.error("IOException", e);
  473. throw SeecoderGitlabException.IO_ERROR;
  474. }
  475. }
  476. @Override
  477. public List<CommitVO> getAllCommitMessage(int projectId, String commitHash) throws SeecoderGitlabException {
  478. try {
  479. ObjectMapper objectMapper = new ObjectMapper();
  480. Request.Builder builder = new Request.Builder()
  481. .addHeader("Authorization", token);
  482. builder = builder
  483. .url(host + "/api/project/"+projectId+"/commit/"+commitHash)
  484. .get();
  485. Request request = builder.build();
  486. final Call call = client.newCall(request);
  487. Response response = call.execute();
  488. List<CommitVO> commitVOList=new ArrayList<>();
  489. commitVOList=processResponse(objectMapper, response, new TypeReference<List<CommitVO>>() {
  490. });
  491. return commitVOList;
  492. } catch (JsonProcessingException e) {
  493. logger.error("JSON writeValueAsString error", e);
  494. throw SeecoderGitlabException.JSON_ERROR;
  495. } catch (IOException e) {
  496. logger.error("IOException", e);
  497. throw SeecoderGitlabException.IO_ERROR;
  498. }
  499. }
  500. @Override
  501. public List<BranchVO> getProjectBranches(int projectId) throws SeecoderGitlabException {
  502. try {
  503. ObjectMapper objectMapper = new ObjectMapper();
  504. Request.Builder builder = new Request.Builder()
  505. .addHeader("Authorization", token);
  506. builder = builder
  507. .url(host + "/api/project/"+projectId+"/branches")
  508. .get();
  509. Request request = builder.build();
  510. final Call call = client.newCall(request);
  511. Response response = call.execute();
  512. List<BranchVO> branchVOList=new ArrayList<>();
  513. branchVOList=processResponse(objectMapper, response, new TypeReference<List<BranchVO>>() {
  514. });
  515. return branchVOList;
  516. } catch (JsonProcessingException e) {
  517. logger.error("JSON writeValueAsString error", e);
  518. throw SeecoderGitlabException.JSON_ERROR;
  519. } catch (IOException e) {
  520. logger.error("IOException", e);
  521. throw SeecoderGitlabException.IO_ERROR;
  522. }
  523. }
  524. @Override
  525. public boolean addAuthorization(int projectId, int userId, AccessLevelForm accessLevelForm) throws GitLabApiException, SeecoderGitlabException {
  526. try {
  527. ObjectMapper objectMapper = new ObjectMapper();
  528. Request.Builder builder = new Request.Builder()
  529. .addHeader("Authorization", token);
  530. AccessLevel accessLevel=AccessLevel.forValue(accessLevelForm.value);
  531. UpdateMemberDTO updateMemberDTO=UpdateMemberDTO.builder()
  532. .accessLevel(accessLevel)
  533. .userId(userId)
  534. .projectId(projectId)
  535. .build();
  536. builder = builder
  537. .url(host + "/api/project/updateMember")
  538. .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), objectMapper.writeValueAsString(updateMemberDTO)));
  539. Request request = builder.build();
  540. final Call call = client.newCall(request);
  541. Response response = call.execute();
  542. boolean isAdded = processResponse(objectMapper, response, new TypeReference<Boolean>() {
  543. });
  544. return isAdded;
  545. } catch (JsonProcessingException e) {
  546. logger.error("JSON writeValueAsString error", e);
  547. throw SeecoderGitlabException.JSON_ERROR;
  548. } catch (IOException e) {
  549. logger.error("IOException", e);
  550. throw SeecoderGitlabException.IO_ERROR;
  551. }
  552. }
  553. @Override
  554. public List<ProjectVO> getAllProjectsByUserId(int userId) throws SeecoderGitlabException {
  555. try {
  556. ObjectMapper objectMapper = new ObjectMapper();
  557. Request.Builder builder = new Request.Builder()
  558. .addHeader("Authorization", token);
  559. builder = builder
  560. .url(host + "/api/project/allProjects/"+userId)
  561. .get();
  562. Request request = builder.build();
  563. final Call call = client.newCall(request);
  564. Response response = call.execute();
  565. List<ProjectVO> projectVOList=new ArrayList<>();
  566. projectVOList=processResponse(objectMapper, response, new TypeReference<List<ProjectVO>>() {});
  567. return projectVOList;
  568. } catch (JsonProcessingException e) {
  569. logger.error("JSON writeValueAsString error", e);
  570. throw SeecoderGitlabException.JSON_ERROR;
  571. } catch (IOException e) {
  572. logger.error("IOException", e);
  573. throw SeecoderGitlabException.IO_ERROR;
  574. }
  575. }
  576. @Override
  577. public List<Integer> getJoinedUserByProject(int projectId) throws SeecoderGitlabException {
  578. try {
  579. ObjectMapper objectMapper = new ObjectMapper();
  580. Request.Builder builder = new Request.Builder()
  581. .addHeader("Authorization", token);
  582. builder = builder
  583. .url(host + "/api/project/projectMembers/"+projectId)
  584. .get();
  585. Request request = builder.build();
  586. final Call call = client.newCall(request);
  587. Response response = call.execute();
  588. List<Integer> userList=new ArrayList<>();
  589. userList=processResponse(objectMapper, response, new TypeReference<List<Integer>>() {
  590. });
  591. return userList;
  592. } catch (JsonProcessingException e) {
  593. logger.error("JSON writeValueAsString error", e);
  594. throw SeecoderGitlabException.JSON_ERROR;
  595. } catch (IOException e) {
  596. logger.error("IOException", e);
  597. throw SeecoderGitlabException.IO_ERROR;
  598. }
  599. }
  600. }