>() {});
+ }
+
+ /**
+ * Get the specified award emoji for the specified issue.
+ *
+ * GitLab Endpoint: GET /projects/:id/issues/:issue_iid/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param issueIid the issue IID to get the award emoji for
+ * @param awardId the ID of the award emoji to get
+ * @return an AwardEmoji instance for the specified award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji getIssueAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer awardId) throws GitLabApiException {
+ Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()),
+ "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "award_emoji", awardId);
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Get the specified award emoji for the specified merge request.
+ *
+ * GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param mergeRequestIid the merge request IID to get the award emoji for
+ * @param awardId the ID of the award emoji to get
+ * @return an AwardEmoji instance for the specified award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji getMergeRequestAwardEmoji(Object projectIdOrPath, Integer mergeRequestIid, Integer awardId) throws GitLabApiException {
+ Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()),
+ "projects", getProjectIdOrPath(projectIdOrPath), "merge_requests", mergeRequestIid, "award_emoji", awardId);
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Get the specified award emoji for the specified snippet.
+ *
+ * GitLab Endpoint: GET /projects/:id/snippets/:snippet_id/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param snippetId the snippet ID to get the award emoji for
+ * @param awardId the ID of the award emoji to get
+ * @return an AwardEmoji instance for the specified award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji getSnippetAwardEmoji(Object projectIdOrPath, Integer snippetId, Integer awardId) throws GitLabApiException {
+ Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()),
+ "projects", getProjectIdOrPath(projectIdOrPath), "snippets", snippetId, "award_emoji", awardId);
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Get the specified award emoji for the specified note.
+ *
+ * GitLab Endpoint: GET /projects/:id/issues/:issue_iid/notes/:note_id/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param issueIid the issue IID of the issue that owns the note
+ * @param noteId the note ID to get the award emoji from
+ * @param awardId the ID of the award emoji to get
+ * @return an AwardEmoji instance for the specified award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji getNoteAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer noteId, Integer awardId) throws GitLabApiException {
+ Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()),
+ "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "notes", noteId, "award_emoji", awardId);
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Add an award emoji for the specified issue.
+ *
+ * GitLab Endpoint: POST /projects/:id/issues/:issue_iid/award_emoji
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param issueIid the issue IID to add the award emoji to
+ * @param name the name of the award emoji to add
+ * @return an AwardEmoji instance for the added award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji addIssueAwardEmoji(Object projectIdOrPath, Integer issueIid, String name) throws GitLabApiException {
+ GitLabApiForm form = new GitLabApiForm().withParam("name", name, true);
+ Response response = post(Response.Status.CREATED, form.asMap(),
+ "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "award_emoji");
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Add an award emoji to the specified merge request.
+ *
+ * GitLab Endpoint: POST /projects/:id/merge_requests/:merge_request_iid/award_emoji
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param mergeRequestIid the merge request IID to add the award emoji to
+ * @param name the name of the award emoji to add
+ * @return an AwardEmoji instance for the added award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji addMergeRequestAwardEmoji(Object projectIdOrPath, Integer mergeRequestIid, String name) throws GitLabApiException {
+ GitLabApiForm form = new GitLabApiForm().withParam("name", name, true);
+ Response response = post(Response.Status.CREATED, form.asMap(),
+ "projects", getProjectIdOrPath(projectIdOrPath), "merge_requests", mergeRequestIid, "award_emoji");
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Add an award emoji to the specified snippet.
+ *
+ * GitLab Endpoint: POST /projects/:id/snippets/:snippet_id/award_emoji
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param snippetId the snippet ID to add the award emoji to
+ * @param name the name of the award emoji to add
+ * @return an AwardEmoji instance for the added award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji addSnippetAwardEmoji(Object projectIdOrPath, Integer snippetId, String name) throws GitLabApiException {
+ GitLabApiForm form = new GitLabApiForm().withParam("name", name, true);
+ Response response = post(Response.Status.CREATED, form.asMap(),
+ "projects", getProjectIdOrPath(projectIdOrPath), "snippets", snippetId, "award_emoji");
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Add an award emoji for the specified note.
+ *
+ * GitLab Endpoint: POST /projects/:id/issues/:issue_iid/notes/:noteId/award_emoji
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param issueIid the issue IID of the issue that owns the note
+ * @param noteId the note ID to add the award emoji to
+ * @param name the name of the award emoji to add
+ * @return an AwardEmoji instance for the added award emoji
+ * @throws GitLabApiException if any exception occurs
+ */
+ public AwardEmoji addNoteAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer noteId, String name) throws GitLabApiException {
+ GitLabApiForm form = new GitLabApiForm().withParam("name", name, true);
+ Response response = post(Response.Status.CREATED, form.asMap(),
+ "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "notes", noteId, "award_emoji");
+ return (response.readEntity(AwardEmoji.class));
+ }
+
+ /**
+ * Delete an award emoji from the specified issue.
+ *
+ * GitLab Endpoint: DELETE /projects/:id/issues/:issue_iid/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param issueIid the issue IID to delete the award emoji from
+ * @param awardId the ID of the award emoji to delete
+ * @throws GitLabApiException if any exception occurs
+ */
+ public void deleteIssueAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer awardId) throws GitLabApiException {
+ delete(Response.Status.NO_CONTENT, null,
+ "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "award_emoji", awardId);
+ }
+
+ /**
+ * Delete an award emoji from the specified merge request.
+ *
+ * GitLab Endpoint: DELETE /projects/:id/merge_requests/:merge_request_iid/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param mergeRequestIid the merge request IID to delete the award emoji from
+ * @param awardId the ID of the award emoji to delete
+ * @throws GitLabApiException if any exception occurs
+ */
+ public void deleteMergeRequestAwardEmoji(Object projectIdOrPath, Integer mergeRequestIid, Integer awardId) throws GitLabApiException {
+ delete(Response.Status.NO_CONTENT, null,
+ "projects", getProjectIdOrPath(projectIdOrPath), "merge_requests", mergeRequestIid, "award_emoji", awardId);
+ }
+
+ /**
+ * Delete an award emoji from the specified snippet.
+ *
+ * GitLab Endpoint: DELETE /projects/:id/snippets/:snippet_id/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param snippetId the snippet ID to delete the award emoji from
+ * @param awardId the ID of the award emoji to delete
+ * @throws GitLabApiException if any exception occurs
+ */
+ public void deleteSnippetAwardEmoji(Object projectIdOrPath, Integer snippetId, Integer awardId) throws GitLabApiException {
+ delete(Response.Status.NO_CONTENT, null,
+ "projects", getProjectIdOrPath(projectIdOrPath), "snippets", snippetId, "award_emoji", awardId);
+ }
+
+ /**
+ * Delete an award emoji from the specified note.
+ *
+ * GitLab Endpoint: DELETE /projects/:id/issues/:issue_iid/notes/:note_id/award_emoji/:award_id
+ *
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
+ * @param issueIid the issue IID that owns the note
+ * @param noteId the note ID of the note to delete the award emoji from
+ * @param awardId the ID of the award emoji to delete
+ * @throws GitLabApiException if any exception occurs
+ */
+ public void deleteNoteAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer noteId, Integer awardId) throws GitLabApiException {
+ delete(Response.Status.NO_CONTENT, null,
+ "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "notes", noteId, "award_emoji", awardId);
+ }
+}
diff --git a/src/main/java/org/gitlab4j/api/GitLabApi.java b/src/main/java/org/gitlab4j/api/GitLabApi.java
index c142a13f2..953c4ca87 100644
--- a/src/main/java/org/gitlab4j/api/GitLabApi.java
+++ b/src/main/java/org/gitlab4j/api/GitLabApi.java
@@ -48,6 +48,7 @@ public String getApiNamespace() {
private int defaultPerPage = DEFAULT_PER_PAGE;
private Session session;
+ private AwardEmojiApi awardEmojiApi;
private CommitsApi commitsApi;
private DeployKeysApi deployKeysApi;
private EpicsApi epicsApi;
@@ -809,6 +810,25 @@ class VersionApi extends AbstractApi {
return (response.readEntity(Version.class));
}
+ /**
+ * Gets the AwardEmojiApi instance owned by this GitLabApi instance. The AwardEmojiApi is used
+ * to perform all award emoji related API calls.
+ *
+ * @return the AwardEmojiApi instance owned by this GitLabApi instance
+ */
+ public AwardEmojiApi getAwardEmojiApi() {
+
+ if (awardEmojiApi == null) {
+ synchronized (this) {
+ if (awardEmojiApi == null) {
+ awardEmojiApi = new AwardEmojiApi(this);
+ }
+ }
+ }
+
+ return (awardEmojiApi);
+ }
+
/**
* Gets the CommitsApi instance owned by this GitLabApi instance. The CommitsApi is used
* to perform all commit related API calls.
diff --git a/src/main/java/org/gitlab4j/api/models/AwardEmoji.java b/src/main/java/org/gitlab4j/api/models/AwardEmoji.java
new file mode 100644
index 000000000..b1c4a391d
--- /dev/null
+++ b/src/main/java/org/gitlab4j/api/models/AwardEmoji.java
@@ -0,0 +1,103 @@
+
+package org.gitlab4j.api.models;
+
+import java.util.Date;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.gitlab4j.api.utils.JacksonJsonEnumHelper;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class AwardEmoji {
+
+ public enum AwardableType {
+ ISSUE, MERGE_REQUEST, NOTE, SNIPPET;
+
+ private static JacksonJsonEnumHelper enumHelper = new JacksonJsonEnumHelper<>(AwardableType.class, true);
+
+ @JsonCreator
+ public static AwardableType forValue(String value) {
+ return enumHelper.forValue(value);
+ }
+
+ @JsonValue
+ public String toValue() {
+ return (enumHelper.toString(this));
+ }
+
+ @Override
+ public String toString() {
+ return (enumHelper.toString(this));
+ }
+ }
+
+ private Integer id;
+ private String name;
+ private User user;
+ private Date createdAt;
+ private Date updatedAt;
+ private Integer awardableId;
+ private AwardableType awardableType;
+
+ public Integer getId() {
+ return this.id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+ public Date getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Date createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Date getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Date updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Integer getAwardableId() {
+ return awardableId;
+ }
+
+ public void setAwardableId(Integer awardableId) {
+ this.awardableId = awardableId;
+ }
+
+ public AwardableType getAwardableType() {
+ return awardableType;
+ }
+
+ public void setAwardableType(AwardableType awardableType) {
+ this.awardableType = awardableType;
+ }
+}
diff --git a/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java b/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java
index a5fd29936..a2bd1713a 100644
--- a/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java
+++ b/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java
@@ -31,6 +31,7 @@
import java.util.Map;
import org.gitlab4j.api.models.ArtifactsFile;
+import org.gitlab4j.api.models.AwardEmoji;
import org.gitlab4j.api.models.Branch;
import org.gitlab4j.api.models.Comment;
import org.gitlab4j.api.models.Commit;
@@ -102,6 +103,17 @@ public static void setup() {
jacksonJson.getObjectMapper().configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
}
+ @Test
+ public void testAwardEmoji() {
+
+ try {
+ AwardEmoji awardEmoji = makeFakeApiCall(AwardEmoji.class, "award-emoji");
+ assertTrue(compareJson(awardEmoji, "award-emoji"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
@Test
public void testBranch() {
diff --git a/src/test/resources/org/gitlab4j/api/award-emoji.json b/src/test/resources/org/gitlab4j/api/award-emoji.json
new file mode 100644
index 000000000..e2bca86c4
--- /dev/null
+++ b/src/test/resources/org/gitlab4j/api/award-emoji.json
@@ -0,0 +1,16 @@
+{
+ "id": 1,
+ "name": "microphone",
+ "user": {
+ "name": "User 4",
+ "username": "user4",
+ "id": 26,
+ "state": "active",
+ "avatar_url": "http://www.gravatar.com/avatar/7e65550957227bd38fe2d7fbc6fd2f7b?s=80&d=identicon",
+ "web_url": "http://gitlab.example.com/user4"
+ },
+ "created_at": "2016-06-15T10:09:34.177Z",
+ "updated_at": "2016-06-15T10:09:34.177Z",
+ "awardable_id": 80,
+ "awardable_type": "Issue"
+}