diff --git a/pom.xml b/pom.xml index 01690d5..5ae9233 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,15 @@ provided + + org.springframework + spring-web + + + com.fasterxml.jackson.core + jackson-databind + + com.github.stefanbirkner system-rules diff --git a/src/main/java/cz/brmlab/wm/Application.java b/src/main/java/cz/brmlab/wm/Application.java index 04623d1..32b37c0 100644 --- a/src/main/java/cz/brmlab/wm/Application.java +++ b/src/main/java/cz/brmlab/wm/Application.java @@ -2,6 +2,9 @@ package cz.brmlab.wm; import cz.brmlab.wm.utils.Exceptions.BrmException; import cz.brmlab.wm.wekan.WekanConfiguration; +import cz.brmlab.wm.wekan.pojo.card.CardRequest; +import cz.brmlab.wm.wekan.rest.CardPost; +import cz.brmlab.wm.wekan.rest.LoginPost; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; @@ -23,6 +26,12 @@ public class Application implements CommandLineRunner { try { WekanConfiguration wekanConfiguration = new WekanConfiguration(); + LoginPost loginPost = new LoginPost(wekanConfiguration); + loginPost.login(); + + CardPost cardPost = new CardPost(loginPost.getToken(), wekanConfiguration); + cardPost.postCard("Test from spring", "Test card from awesome spring app.\nAnd next line"); + } catch (BrmException ex) { System.exit(ex.getExitCode().getCode()); } diff --git a/src/main/java/cz/brmlab/wm/wekan/pojo/card/CardRequest.java b/src/main/java/cz/brmlab/wm/wekan/pojo/card/CardRequest.java new file mode 100644 index 0000000..6d75b72 --- /dev/null +++ b/src/main/java/cz/brmlab/wm/wekan/pojo/card/CardRequest.java @@ -0,0 +1,15 @@ +package cz.brmlab.wm.wekan.pojo.card; + +import cz.brmlab.wm.wekan.WekanConfiguration; +import cz.brmlab.wm.wekan.pojo.login.LoginToken; +import lombok.Data; + +@Data +public class CardRequest { + + private String title; + private String description; + private String authorId; + private final String swimlaneId = "Default"; + +} diff --git a/src/main/java/cz/brmlab/wm/wekan/pojo/card/CardResponse.java b/src/main/java/cz/brmlab/wm/wekan/pojo/card/CardResponse.java new file mode 100644 index 0000000..94e6b2f --- /dev/null +++ b/src/main/java/cz/brmlab/wm/wekan/pojo/card/CardResponse.java @@ -0,0 +1,10 @@ +package cz.brmlab.wm.wekan.pojo.card; + +import lombok.Data; + +@Data +public class CardResponse { + + private String id; + +} diff --git a/src/main/java/cz/brmlab/wm/wekan/pojo/login/LoginRequest.java b/src/main/java/cz/brmlab/wm/wekan/pojo/login/LoginRequest.java new file mode 100644 index 0000000..1d812d5 --- /dev/null +++ b/src/main/java/cz/brmlab/wm/wekan/pojo/login/LoginRequest.java @@ -0,0 +1,13 @@ +package cz.brmlab.wm.wekan.pojo.login; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class LoginRequest implements Serializable { + + private String username; + private String password; + +} diff --git a/src/main/java/cz/brmlab/wm/wekan/pojo/login/LoginToken.java b/src/main/java/cz/brmlab/wm/wekan/pojo/login/LoginToken.java new file mode 100644 index 0000000..a696226 --- /dev/null +++ b/src/main/java/cz/brmlab/wm/wekan/pojo/login/LoginToken.java @@ -0,0 +1,10 @@ +package cz.brmlab.wm.wekan.pojo.login; + +import lombok.Data; + +@Data +public class LoginToken { + public String id; + public String token; + public String tokenExpires; +} diff --git a/src/main/java/cz/brmlab/wm/wekan/rest/CardPost.java b/src/main/java/cz/brmlab/wm/wekan/rest/CardPost.java new file mode 100644 index 0000000..8280673 --- /dev/null +++ b/src/main/java/cz/brmlab/wm/wekan/rest/CardPost.java @@ -0,0 +1,41 @@ +package cz.brmlab.wm.wekan.rest; + +import cz.brmlab.wm.wekan.WekanConfiguration; +import cz.brmlab.wm.wekan.pojo.card.CardRequest; +import cz.brmlab.wm.wekan.pojo.card.CardResponse; +import cz.brmlab.wm.wekan.pojo.login.LoginToken; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.client.RestTemplate; + +public class CardPost { + + private static final Logger LOG = LoggerFactory.getLogger(CardPost.class); + + private final LoginToken token; + private final WekanConfiguration configuration; + + public CardPost(LoginToken token, WekanConfiguration configuration) { + this.token = token; + this.configuration = configuration; + } + + public CardResponse postCard(String title, String description) { + CardRequest cardRequest = new CardRequest(); + cardRequest.setAuthorId(token.getId()); + cardRequest.setTitle(title); + cardRequest.setDescription(description); + + String cardUrl = configuration.getWekanUrl() + + "/api/boards" + + configuration.getWekanBoard() + + "/lists/" + + configuration.getWekanList() + "cards"; + + RestTemplate restTemplate = new RestTemplate(); + LOG.debug("Sending card: {}", cardRequest); + CardResponse cardResponse = restTemplate.postForObject(cardUrl, cardRequest, CardResponse.class); + + } + +} diff --git a/src/main/java/cz/brmlab/wm/wekan/rest/LoginPost.java b/src/main/java/cz/brmlab/wm/wekan/rest/LoginPost.java new file mode 100644 index 0000000..b201fd4 --- /dev/null +++ b/src/main/java/cz/brmlab/wm/wekan/rest/LoginPost.java @@ -0,0 +1,34 @@ +package cz.brmlab.wm.wekan.rest; + +import cz.brmlab.wm.wekan.WekanConfiguration; +import cz.brmlab.wm.wekan.pojo.login.LoginRequest; +import cz.brmlab.wm.wekan.pojo.login.LoginToken; +import lombok.Getter; +import org.springframework.web.client.RestTemplate; + +public class LoginPost { + + private final WekanConfiguration configuration; + + @Getter + private LoginToken token; + + public LoginPost(WekanConfiguration configuration) { + this.configuration = configuration; + } + + + public void login() { + + String loginUrl = configuration.getWekanUrl() + "/users/login"; + + LoginRequest loginRequest = new LoginRequest(); + loginRequest.setUsername(configuration.getWekanUser()); + loginRequest.setPassword(configuration.getWekanPassword()); + + RestTemplate restTemplate = new RestTemplate(); + token = restTemplate.postForObject(loginUrl, loginRequest, LoginToken.class); + + System.out.println(token); + } +}