From 31d34bf78b8ca3963f2d7635e0af359362a87f2e Mon Sep 17 00:00:00 2001 From: "adrien.ramarojohn" Date: Tue, 13 Dec 2016 17:38:47 +0100 Subject: [PATCH 1/5] Adding compatibility with label creation and updating CARD Updateing card may not work properly for now --- src/main/java/org/trello4j/CardService.java | 6 +- src/main/java/org/trello4j/LabelService.java | 28 +++ src/main/java/org/trello4j/Trello.java | 4 +- src/main/java/org/trello4j/TrelloImpl.java | 213 ++++++++++++------- src/main/java/org/trello4j/TrelloURL.java | 2 + src/main/java/org/trello4j/model/Label.java | 81 +++++++ 6 files changed, 256 insertions(+), 78 deletions(-) create mode 100644 src/main/java/org/trello4j/LabelService.java create mode 100644 src/main/java/org/trello4j/model/Label.java diff --git a/src/main/java/org/trello4j/CardService.java b/src/main/java/org/trello4j/CardService.java index b6ec9b7..ab19cd3 100644 --- a/src/main/java/org/trello4j/CardService.java +++ b/src/main/java/org/trello4j/CardService.java @@ -13,8 +13,8 @@ /** * The Interface CardService. - * - * @author + * + * @author */ public interface CardService { @@ -34,6 +34,8 @@ public interface CardService { List getMembersByCard(String cardId); + Card updateCard(String id, Map keyValMap); + /** * Add a new {@link Card} with the optional keyValue pairs. * @param idList Id of the {@link org.trello4j.model.List} diff --git a/src/main/java/org/trello4j/LabelService.java b/src/main/java/org/trello4j/LabelService.java new file mode 100644 index 0000000..cbae8b0 --- /dev/null +++ b/src/main/java/org/trello4j/LabelService.java @@ -0,0 +1,28 @@ +package org.trello4j; + +import org.trello4j.model.Label; + +/** + * The Interface LabelService. + * + * @author joel + */ +public interface LabelService { + + /** + * Gets the label. + * + * @param labelId + * the label id + * @return the label + */ + Label getLabel(String labelId); +/** + * Create a new label + * @param name + * @param boardId + * @param color (optionnal) + * @return + */ + Label createLabel(String name, String boardId, String color); +} \ No newline at end of file diff --git a/src/main/java/org/trello4j/Trello.java b/src/main/java/org/trello4j/Trello.java index fdfae23..385fcec 100644 --- a/src/main/java/org/trello4j/Trello.java +++ b/src/main/java/org/trello4j/Trello.java @@ -6,12 +6,12 @@ * The Interface Trello. */ public interface Trello extends OrganizationService, NotificationService, - BoardService, CardService, ActionService, ListService, MemberService, + BoardService, CardService, ActionService, ListService, LabelService, MemberService, ChecklistService, TokenService, WebhookService { /** * Gets the type. - * + * * @param idOrName * the id or name * @return the type diff --git a/src/main/java/org/trello4j/TrelloImpl.java b/src/main/java/org/trello4j/TrelloImpl.java index 8aaaf88..6c41551 100644 --- a/src/main/java/org/trello4j/TrelloImpl.java +++ b/src/main/java/org/trello4j/TrelloImpl.java @@ -1,14 +1,5 @@ package org.trello4j; -import com.google.gson.reflect.TypeToken; - -import org.trello4j.model.*; -import org.trello4j.model.Board.Prefs; -import org.trello4j.model.Card.Attachment; -import org.trello4j.model.Checklist.CheckItem; - -import javax.net.ssl.HttpsURLConnection; - import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; @@ -19,6 +10,24 @@ import java.util.Map; import java.util.zip.GZIPInputStream; +import javax.net.ssl.HttpsURLConnection; + +import org.trello4j.model.Action; +import org.trello4j.model.Board; +import org.trello4j.model.Board.Prefs; +import org.trello4j.model.Card; +import org.trello4j.model.Card.Attachment; +import org.trello4j.model.Checklist; +import org.trello4j.model.Checklist.CheckItem; +import org.trello4j.model.Member; +import org.trello4j.model.Notification; +import org.trello4j.model.Organization; +import org.trello4j.model.Token; +import org.trello4j.model.Type; +import org.trello4j.model.Webhook; + +import com.google.gson.reflect.TypeToken; + /** * The Class TrelloImpl. */ @@ -51,7 +60,7 @@ public TrelloImpl(String apiKey, String token) { /* * (non-Javadoc) - * + * * @see org.trello4j.WebhookService#getWebhook(java.lang.String) */ @Override @@ -65,10 +74,10 @@ public List getWebhooks() { return trelloObjFactory.createObject(new TypeToken>() { }, doGet(url)); } - + /* * (non-Javadoc) - * + * * @see org.trello4j.WebhookService#createWebhook(java.lang.String) */ @Override @@ -82,14 +91,14 @@ public Webhook createWebhook(String description, String callbackUrl, String idMo keyValueMap.put("description", description); keyValueMap.put("callbackURL", callbackUrl); keyValueMap.put("idModel", idModel); - + return trelloObjFactory.createObject(new TypeToken() { }, doPost(url, keyValueMap)); } - + /* * (non-Javadoc) - * + * * @see org.trello4j.WebhookService#deleteWebhook(java.lang.String) */ @Override @@ -98,13 +107,13 @@ public void deleteWebhook(String idWebhook) { .create(apiKey, TrelloURL.WEBHOOKS_ID_URL, idWebhook) .token(token) .build(); - + doDelete(url); } - + /* * (non-Javadoc) - * + * * @see org.trello4j.WebhookService#getWebhook(java.lang.String) */ @Override @@ -113,14 +122,14 @@ public Webhook getWebhook(String idWebhook) { .create(apiKey, TrelloURL.WEBHOOKS_ID_URL, idWebhook) .token(token) .build(); - + return trelloObjFactory.createObject(new TypeToken() { }, doGet(url)); } /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getBoard(java.lang.String) */ @Override @@ -138,7 +147,7 @@ public Board getBoard(final String boardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getActionsByBoard(java.lang.String, * java.lang.String[]) */ @@ -159,7 +168,7 @@ public List getActionsByBoard(final String boardId, /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getCardsByBoard(java.lang.String) */ @Override @@ -177,7 +186,7 @@ public List getCardsByBoard(String boardId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getChecklistByBoard(java.lang.String) */ @Override @@ -194,7 +203,7 @@ public List getChecklistByBoard(String boardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getListByBoard(java.lang.String) */ @Override @@ -215,7 +224,7 @@ public List getListByBoard(String boardId, /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getMembersByBoard(java.lang.String) */ @Override @@ -234,7 +243,7 @@ public List getMembersByBoard(String boardId, /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getMembersInvitedByBoard(java.lang.String) */ @Override @@ -253,7 +262,7 @@ public List getMembersInvitedByBoard(String boardId, /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getPrefsByBoard(java.lang.String) */ @Override @@ -270,7 +279,7 @@ public Prefs getPrefsByBoard(String boardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.BoardService#getOrganizationByBoard(java.lang.String) */ @Override @@ -289,7 +298,7 @@ public Organization getOrganizationByBoard(String boardId, /* * (non-Javadoc) - * + * * @see org.trello4j.ActionService#getAction(java.lang.String) */ @Override @@ -308,7 +317,7 @@ public Action getAction(final String actionId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.OrganizationService#getOrganization(java.lang.String) */ @Override @@ -325,7 +334,7 @@ public Organization getOrganization(String organizationName, /* * (non-Javadoc) - * + * * @see org.trello4j.MemberService#getMember(java.lang.String) */ @Override @@ -341,7 +350,7 @@ public Member getMember(String usernameOrId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.MemberService#getBoardsByMember(java.lang.String) */ @Override @@ -358,7 +367,7 @@ public List getBoardsByMember(String usernameOrId, /* * (non-Javadoc) - * + * * @see * org.trello4j.OrganizationService#getBoardsByOrganization(java.lang.String * ) @@ -380,7 +389,7 @@ public List getBoardsByOrganization(String organizationName, /* * (non-Javadoc) - * + * * @see * org.trello4j.OrganizationService#getActionsByOrganization(java.lang.String * ) @@ -400,7 +409,7 @@ public List getActionsByOrganization(String organizationNameOrId) { /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getCard(java.lang.String) */ @Override @@ -418,7 +427,7 @@ public Card getCard(final String cardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getActionsByCard(java.lang.String) */ @Override @@ -436,7 +445,7 @@ public List getActionsByCard(final String cardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getAttachmentsByCard(java.lang.String) */ @Override @@ -454,7 +463,7 @@ public List getAttachmentsByCard(final String cardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getBoardByCard(java.lang.String) */ @Override @@ -473,7 +482,7 @@ public Board getBoardByCard(final String cardId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getCheckItemStatesByCard(java.lang.String) */ @Override @@ -491,7 +500,7 @@ public List getCheckItemStatesByCard(final String cardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getChecklistByCard(java.lang.String) */ @Override @@ -509,7 +518,7 @@ public List getChecklistByCard(final String cardId) { /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getListByCard(java.lang.String) */ @Override @@ -531,7 +540,7 @@ public org.trello4j.model.List getListByCard(final String cardId, /* * (non-Javadoc) - * + * * @see org.trello4j.CardService#getMembersByCard(java.lang.String) */ @Override @@ -564,6 +573,61 @@ public Card createCard(String idList, String name, Map keyValueM }, doPost(url, keyValueMap)); } + @Override + public Card updateCard(String id, Map keyValueMap) { + if (keyValueMap == null){ + return getCard(id); + } + final String url = TrelloURL + .create(apiKey, TrelloURL.CARD_URL) + .token(token) + .build(); + keyValueMap.put("id", id); + return trelloObjFactory.createObject(new TypeToken() { + }, doPut(url, keyValueMap)); + } + /* + * (non-Javadoc) + * + * @see org.trello4j.LabelService#getLabel(java.lang.String) + */ + @Override + public org.trello4j.model.Label getLabel(final String labelId) { + validateObjectId(labelId); + + final String url = TrelloURL + .create(apiKey, TrelloURL.LABELS_URL, labelId) + .token(token) + .build(); + + return trelloObjFactory.createObject( + new TypeToken() { + }, + doGet(url)); + } + /* + * (non-Javadoc) + * + * @see org.trello4j.LabelService#createLabel(java.lang.String) + */ + @Override + public org.trello4j.model.Label createLabel(final String name, final String boardId, final String color) { + validateObjectId(boardId); + + final String url = TrelloURL + .create(apiKey, TrelloURL.LABELS_POST_URL) + .token(token) + .build(); + Map keyValueMap = new HashMap(); + keyValueMap.put("name", name); + keyValueMap.put("idBoard", boardId); + if(color != null){ + keyValueMap.put("color", color); + } + + return trelloObjFactory.createObject(new TypeToken() { + }, doPost(url, keyValueMap)); + } /* * (non-Javadoc) * @@ -586,7 +650,7 @@ public org.trello4j.model.List getList(final String listId) { /* * (non-Javadoc) - * + * * @see org.trello4j.NotificationService#getNotification(java.lang.String) */ @Override @@ -606,7 +670,7 @@ public Notification getNotification(String notificationId, /* * (non-Javadoc) - * + * * @see org.trello4j.ChecklistService#getChecklist(java.lang.String) */ @Override @@ -625,7 +689,7 @@ public Checklist getChecklist(String checklistId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.Trello#getType(java.lang.String) */ @Override @@ -641,7 +705,7 @@ public Type getType(String idOrName) { /* * (non-Javadoc) - * + * * @see org.trello4j.ActionService#getBoardByAction(java.lang.String) */ @Override @@ -660,7 +724,7 @@ public Board getBoardByAction(String actionId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.ActionService#getCardByAction(java.lang.String) */ @Override @@ -679,7 +743,7 @@ public Card getCardByAction(String actionId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.ActionService#getMemberByAction(java.lang.String) */ @Override @@ -698,7 +762,7 @@ public Member getMemberByAction(String actionId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.ActionService#getListByAction(java.lang.String) */ @Override @@ -720,7 +784,7 @@ public org.trello4j.model.List getListByAction(String actionId, /* * (non-Javadoc) - * + * * @see * org.trello4j.ActionService#getMemberCreatorByAction(java.lang.String) */ @@ -741,7 +805,7 @@ public Member getMemberCreatorByAction(String actionId, /* * (non-Javadoc) - * + * * @see org.trello4j.ActionService#getOrganizationByAction(java.lang.String) */ @Override @@ -761,7 +825,7 @@ public Organization getOrganizationByAction(String actionId, /* * (non-Javadoc) - * + * * @see * org.trello4j.OrganizationService#getMembersByOrganization(java.lang.String * ) @@ -785,7 +849,7 @@ public List getMembersByOrganization(String organizationNameOrId, /* * (non-Javadoc) - * + * * @see * org.trello4j.NotificationService#getBoardByNotification(java.lang.String) */ @@ -809,7 +873,7 @@ public Board getBoardByNotification(String notificationId, /* * (non-Javadoc) - * + * * @see * org.trello4j.NotificationService#getCardByNotification(java.lang.String) */ @@ -833,7 +897,7 @@ public Card getCardByNotification(String notificationId, /* * (non-Javadoc) - * + * * @see * org.trello4j.NotificationService#getListByNotification(java.lang.String) */ @@ -856,7 +920,7 @@ public org.trello4j.model.List getListByNotification(String notificationId, /* * (non-Javadoc) - * + * * @see * org.trello4j.NotificationService#getMemberByNotification(java.lang.String * ) @@ -881,7 +945,7 @@ public Member getMemberByNotification(String notificationId, /* * (non-Javadoc) - * + * * @see * org.trello4j.NotificationService#getMemberCreatorByNotification(java. * lang.String) @@ -906,7 +970,7 @@ public Member getMemberCreatorByNotification(String notificationId, /* * (non-Javadoc) - * + * * @see * org.trello4j.NotificationService#getOrganizationCreatorByNotification * (java.lang.String) @@ -931,7 +995,7 @@ public Member getOrganizationCreatorByNotification(String notificationId, /* * (non-Javadoc) - * + * * @see org.trello4j.ListService#getActionsByList(java.lang.String) */ @Override @@ -949,7 +1013,7 @@ public List getActionsByList(String listId) { /* * (non-Javadoc) - * + * * @see org.trello4j.ListService#getBoardByList(java.lang.String) */ @Override @@ -968,7 +1032,7 @@ public Board getBoardByList(String listId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.ListService#getCardsByList(java.lang.String) */ @Override @@ -987,7 +1051,7 @@ public List getCardsByList(String listId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.MemberService#getActionsByMember(java.lang.String) */ @Override @@ -1004,7 +1068,7 @@ public List getActionsByMember(String usernameOrId) { /* * (non-Javadoc) - * + * * @see org.trello4j.MemberService#getCardsByMember(java.lang.String) */ @Override @@ -1023,7 +1087,7 @@ public List getCardsByMember(String usernameOrId, /* * (non-Javadoc) - * + * * @see * org.trello4j.MemberService#getNotificationsByMember(java.lang.String) */ @@ -1048,7 +1112,7 @@ public List getNotificationsByMember(String usernameOrId, /* * (non-Javadoc) - * + * * @see * org.trello4j.MemberService#getOrganizationsByMember(java.lang.String) */ @@ -1070,7 +1134,7 @@ public List getOrganizationsByMember(String usernameOrId, /* * (non-Javadoc) - * + * * @see * org.trello4j.MemberService#getOrganizationsInvitedByMember(java.lang. * String) @@ -1096,7 +1160,7 @@ public List getOrganizationsInvitedByMember( /* * (non-Javadoc) - * + * * @see org.trello4j.ChecklistService#getBoardByChecklist(java.lang.String) */ @Override @@ -1116,7 +1180,7 @@ public List getOrganizationsInvitedByMember( /* * (non-Javadoc) - * + * * @see * org.trello4j.ChecklistService#getCheckItemsByChecklist(java.lang.String) */ @@ -1135,7 +1199,7 @@ public List getCheckItemsByChecklist(String checklistId) { /* * (non-Javadoc) - * + * * @see org.trello4j.ChecklistService#getCardByChecklist(java.lang.String) */ @Override @@ -1155,7 +1219,7 @@ public List getCardByChecklist(String checklistId, /* * (non-Javadoc) - * + * * @see org.trello4j.TokenService#getToken(java.lang.String) */ @Override @@ -1174,7 +1238,7 @@ public Token getToken(String tokenId, final String... filter) { /* * (non-Javadoc) - * + * * @see org.trello4j.TokenService#getMemberByToken(java.lang.String) */ @Override @@ -1195,8 +1259,8 @@ private InputStream doGet(String url) { return doRequest(url, METHOD_GET); } - private InputStream doPut(String url) { - return doRequest(url, METHOD_PUT); + private InputStream doPut(String url, Map map) { + return doRequest(url, METHOD_PUT, map); } private InputStream doPost(String url, Map map) { @@ -1265,7 +1329,7 @@ private InputStream getWrappedInputStream(InputStream is, boolean gzip) * method is not suitable for streaming purposes. To fix this, create a * subclass of GZIPInputStream() which overrides the available() * method." - * + * * https://dev.twitter.com/docs/streaming-api/concepts#gzip-compression */ if (gzip) { @@ -1274,4 +1338,5 @@ private InputStream getWrappedInputStream(InputStream is, boolean gzip) return new BufferedInputStream(is); } } + } diff --git a/src/main/java/org/trello4j/TrelloURL.java b/src/main/java/org/trello4j/TrelloURL.java index c70cf0b..db6547d 100644 --- a/src/main/java/org/trello4j/TrelloURL.java +++ b/src/main/java/org/trello4j/TrelloURL.java @@ -44,6 +44,8 @@ public class TrelloURL { public static final String LIST_ACTIONS_URL = "https://api.trello.com/1/lists/{0}/action"; public static final String LIST_BOARD_URL = "https://api.trello.com/1/lists/{0}/board"; public static final String LIST_CARDS_URL = "https://api.trello.com/1/lists/{0}/cards"; + public static final String LABELS_URL = "https://api.trello.com/1/labels/{0}"; + public static final String LABELS_POST_URL = "https://api.trello.com/1/labels"; public static final String MEMBER_ACTIONS_URL = "https://api.trello.com/1/members/{0}/actions"; public static final String MEMBER_BOARD_INVITED_URL = "https://api.trello.com/1/members/{0}/boardInvited"; public static final String MEMBER_CARDS_URL = "https://api.trello.com/1/members/{0}/cards"; diff --git a/src/main/java/org/trello4j/model/Label.java b/src/main/java/org/trello4j/model/Label.java new file mode 100644 index 0000000..afeac77 --- /dev/null +++ b/src/main/java/org/trello4j/model/Label.java @@ -0,0 +1,81 @@ +package org.trello4j.model; + +/** + * + * { + * "id":"4e7b86d7ce194786721560b8", + * "name":"Known Issues", + * "closed":false, + * "idBoard":"4d5ea62fd76aa1136000000c", + * "pos":9408.2119140625 + * } + * + * + * @author joel + * + */ +public class Label extends TrelloObject { + + /** The name. */ + private String name; + + /** The closed. */ + private String color; + + /** The id board. */ + private String idBoard; + + /** + * Gets the name. + * + * @return the name + */ + public String getName() { + return name; + } + + /** + * Sets the name. + * + * @param name + * the new name + */ + public void setName(String name) { + this.name = name; + } + + /** + * Gets the id board. + * + * @return the id board + */ + public String getIdBoard() { + return idBoard; + } + + /** + * Sets the id board. + * + * @param idBoard + * the new id board + */ + public void setIdBoard(String idBoard) { + this.idBoard = idBoard; + } + + /** + * @return the color + */ + public String getColor() { + return color; + } + + /** + * @param color the color to set + */ + public void setColor(String color) { + this.color = color; + } + + +} From b1456dc3820ac645079fed89e4e50eb7944b7618 Mon Sep 17 00:00:00 2001 From: "adrien.ramarojohn" Date: Wed, 14 Dec 2016 15:37:07 +0100 Subject: [PATCH 2/5] Adding label function for card and updateCard function fixed --- src/main/java/org/trello4j/CardService.java | 2 + .../java/org/trello4j/TrelloException.java | 11 +++- src/main/java/org/trello4j/TrelloImpl.java | 52 ++++++++++++++----- .../org/trello4j/TrelloObjectFactoryImpl.java | 36 +++++++------ src/main/java/org/trello4j/TrelloURL.java | 1 + src/main/java/org/trello4j/model/Card.java | 22 -------- 6 files changed, 70 insertions(+), 54 deletions(-) diff --git a/src/main/java/org/trello4j/CardService.java b/src/main/java/org/trello4j/CardService.java index ab19cd3..969a23e 100644 --- a/src/main/java/org/trello4j/CardService.java +++ b/src/main/java/org/trello4j/CardService.java @@ -44,4 +44,6 @@ public interface CardService { * @param keyValeMap Map of the optional key-value-pairs. */ Card createCard(String idList, String name, Map keyValeMap); + + List addLabelToCard(String idCard, String idLabel); } diff --git a/src/main/java/org/trello4j/TrelloException.java b/src/main/java/org/trello4j/TrelloException.java index 221a987..9489ce3 100644 --- a/src/main/java/org/trello4j/TrelloException.java +++ b/src/main/java/org/trello4j/TrelloException.java @@ -17,12 +17,21 @@ public TrelloException() { /** * Instantiates a new trello exception. - * + * * @param msg * the msg */ public TrelloException(String msg) { super(msg); } + /** + * Instantiates a new trello exception. + * + * @param msg + * the msg + */ + public TrelloException(String msg, Throwable e) { + super(msg, e); + } } diff --git a/src/main/java/org/trello4j/TrelloImpl.java b/src/main/java/org/trello4j/TrelloImpl.java index 6c41551..38c4cf9 100644 --- a/src/main/java/org/trello4j/TrelloImpl.java +++ b/src/main/java/org/trello4j/TrelloImpl.java @@ -3,6 +3,7 @@ import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; @@ -572,6 +573,21 @@ public Card createCard(String idList, String name, Map keyValueM return trelloObjFactory.createObject(new TypeToken() { }, doPost(url, keyValueMap)); } + @Override + public List addLabelToCard(String idCard, String idLabel) { + validateObjectId(idCard); + validateObjectId(idLabel); + + final String url = TrelloURL + .create(apiKey, TrelloURL.CARD_LABELS_URL, idCard) + .token(token) + .build(); + Map keyValueMap = new HashMap(); + keyValueMap.put("value", idLabel); + + return trelloObjFactory.createObject(new TypeToken>() { + }, doPost(url, keyValueMap)); + } @Override public Card updateCard(String id, Map keyValueMap) { @@ -579,10 +595,9 @@ public Card updateCard(String id, Map keyValueMap) { return getCard(id); } final String url = TrelloURL - .create(apiKey, TrelloURL.CARD_URL) + .create(apiKey, TrelloURL.CARD_URL, id) .token(token) .build(); - keyValueMap.put("id", id); return trelloObjFactory.createObject(new TypeToken() { }, doPut(url, keyValueMap)); } @@ -1260,7 +1275,7 @@ private InputStream doGet(String url) { } private InputStream doPut(String url, Map map) { - return doRequest(url, METHOD_PUT, map); + return doRequest(String.format("%s&%s", url, createParameterString(map)), METHOD_PUT, null); } private InputStream doPost(String url, Map map) { @@ -1274,6 +1289,22 @@ private InputStream doDelete(String url) { private InputStream doRequest(String url, String requestMethod) { return doRequest(url, requestMethod, null); } + private String createParameterString(Map map){ + StringBuilder sb = new StringBuilder(); + try { + for (String key : map.keySet()) { + if(map.get(key) != null){ + sb.append(sb.length() > 0 ? "&" : "") + .append(key) + .append("=") + .append(URLEncoder.encode(map.get(key), "UTF-8").replace("+", "%20")); + } + } + } catch (UnsupportedEncodingException e) { + throw new TrelloException(e.getMessage(), e); + } + return sb.toString(); + } /** * Execute a POST request with URL-encoded key-value parameter pairs. @@ -1286,18 +1317,11 @@ private InputStream doRequest(String url, String requestMethod, Map 0 ? "&" : "") - .append(key) - .append("=") - .append(URLEncoder.encode(map.get(key), "UTF-8")); - } - conn.getOutputStream().write(sb.toString().getBytes()); + conn.getOutputStream().write(createParameterString(map).toString().getBytes()); conn.getOutputStream().close(); } @@ -1309,7 +1333,7 @@ private InputStream doRequest(String url, String requestMethod, Map * the generic type * @param typeToken @@ -45,12 +46,13 @@ public T createObject(TypeToken typeToken, InputStream jsonContent) { if (jsonContent == null) { return isList(typeToken) ? (T) Collections.emptyList() : null; } - return unmarshallToObj(typeToken, unmarshallToJson(jsonContent)); + T object = unmarshallToObj(typeToken, unmarshallToJson(jsonContent)); + return object; } /** * Unmarshall to json. - * + * * @param jsonContent * the json content * @return the json element @@ -77,7 +79,7 @@ private JsonElement unmarshallToJson(InputStream jsonContent) { /** * Unmarshall to obj. - * + * * @param * the generic type * @param typeToken @@ -93,7 +95,7 @@ private T unmarshallToObj(TypeToken typeToken, JsonElement response) { /** * Gets the gson. - * + * * @return the gson */ private Gson getGson() { @@ -113,7 +115,7 @@ private Gson getGson() { /** * Close stream. - * + * * @param is * the is */ @@ -129,7 +131,7 @@ private void closeStream(InputStream is) { /** * Checks if is list. - * + * * @param typeToken * the type token * @return true, if is list diff --git a/src/main/java/org/trello4j/TrelloURL.java b/src/main/java/org/trello4j/TrelloURL.java index db6547d..793d653 100644 --- a/src/main/java/org/trello4j/TrelloURL.java +++ b/src/main/java/org/trello4j/TrelloURL.java @@ -39,6 +39,7 @@ public class TrelloURL { public static final String CARD_CHECK_ITEM_STATES_URL = "https://api.trello.com/1/cards/{0}/checkItemStates"; public static final String CARD_CHECKLISTS_URL = "https://api.trello.com/1/cards/{0}/checklists"; public static final String CARD_LIST_URL = "https://api.trello.com/1/cards/{0}/list"; + public static final String CARD_LABELS_URL = "https://api.trello.com/1/cards/{0}/idLabels"; public static final String CARD_MEMBERS_URL = "https://api.trello.com/1/cards/{0}/members"; public static final String CARD_POST_URL = "https://api.trello.com/1/cards"; public static final String LIST_ACTIONS_URL = "https://api.trello.com/1/lists/{0}/action"; diff --git a/src/main/java/org/trello4j/model/Card.java b/src/main/java/org/trello4j/model/Card.java index cd07394..1754dd2 100644 --- a/src/main/java/org/trello4j/model/Card.java +++ b/src/main/java/org/trello4j/model/Card.java @@ -166,26 +166,4 @@ public void setIdMember(String idMember) { this.idMember = idMember; } } - - public class Label { - - private String color; - private String name; - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - } } From 8346cdf86ae03412e7c7f6138c3e6b7ecdf0ac72 Mon Sep 17 00:00:00 2001 From: Adi Date: Mon, 9 Oct 2017 20:31:41 +0200 Subject: [PATCH 3/5] Update README.markdown --- README.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.markdown b/README.markdown index 43eb968..d732abd 100644 --- a/README.markdown +++ b/README.markdown @@ -223,6 +223,10 @@ Now you got two options: POST /1/webhooks IMPLEMENTED DELETE /1/webhooks/[idWebhook] IMPLEMENTED +Labels +GET 1/labels/[label] IMPLEMENTED +POST 1/labels/[label] IMPLEMENTED + ## Contributors @@ -230,6 +234,7 @@ Now you got two options: [skydjol](https://github.com/skydjol) + From e8e8781f411963a1f43eb5d1341fb49e9503be69 Mon Sep 17 00:00:00 2001 From: Adi Date: Mon, 9 Oct 2017 20:32:00 +0200 Subject: [PATCH 4/5] Update README.markdown --- README.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.markdown b/README.markdown index d732abd..5f06b46 100644 --- a/README.markdown +++ b/README.markdown @@ -224,8 +224,8 @@ Now you got two options: DELETE /1/webhooks/[idWebhook] IMPLEMENTED Labels -GET 1/labels/[label] IMPLEMENTED -POST 1/labels/[label] IMPLEMENTED +GET /1/labels/[label] IMPLEMENTED +POST /1/labels/[label] IMPLEMENTED From fc6076598a1fc471bf1f1096f2a871ffe478ea67 Mon Sep 17 00:00:00 2001 From: Adrien Ramarojohn Date: Tue, 6 Nov 2018 09:05:37 +0100 Subject: [PATCH 5/5] Adding timeout --- src/main/java/org/trello4j/TrelloImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/trello4j/TrelloImpl.java b/src/main/java/org/trello4j/TrelloImpl.java index 38c4cf9..fa4638c 100644 --- a/src/main/java/org/trello4j/TrelloImpl.java +++ b/src/main/java/org/trello4j/TrelloImpl.java @@ -39,6 +39,7 @@ public class TrelloImpl implements Trello { private static final String METHOD_POST = "POST"; private static final String METHOD_PUT = "PUT"; private static final String GZIP_ENCODING = "gzip"; + private static final int HTTP_TIMEOUT = Integer.valueOf(System.getProperty("org.trello4j.https.timeout", "60000")); private String apiKey = null; private String token = null; @@ -1319,7 +1320,7 @@ private InputStream doRequest(String url, String requestMethod, Map