Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 64 additions & 6 deletions src/main/java/org/zendesk/client/v2/Zendesk.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,7 @@
import org.zendesk.client.v2.model.UserRelatedInfo;
import org.zendesk.client.v2.model.dynamic.DynamicContentItem;
import org.zendesk.client.v2.model.dynamic.DynamicContentItemVariant;
import org.zendesk.client.v2.model.hc.Article;
import org.zendesk.client.v2.model.hc.ArticleAttachments;
import org.zendesk.client.v2.model.hc.Category;
import org.zendesk.client.v2.model.hc.Section;
import org.zendesk.client.v2.model.hc.Subscription;
import org.zendesk.client.v2.model.hc.Translation;
import org.zendesk.client.v2.model.hc.*;
import org.zendesk.client.v2.model.schedules.Holiday;
import org.zendesk.client.v2.model.schedules.Schedule;
import org.zendesk.client.v2.model.targets.BasecampTarget;
Expand All @@ -76,6 +71,7 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -1735,6 +1731,58 @@ public void deleteDynamicContentItemVariant(Long itemId, DynamicContentItemVaria
//////////////////////////////////////////////////////////////////////
// Action methods for Help Center
//////////////////////////////////////////////////////////////////////
/**
* Get all permission groups
*
* @return List of Permission Groups
*/
public Iterable<PermissionGroup> getPermissionGroups() {
return new PagedIterable<>(cnst("/guide/permission_groups.json"),
handleList(PermissionGroup.class, "permission_groups"));
}
/**
* Get permission group by id
*
* @param id
*/
public PermissionGroup getPermissionGroup(long id) {
return complete(submit(req("GET", tmpl("/guide/permission_groups/{id}.json").set("id", id)),
handle(PermissionGroup.class, "permission_group")));
}
/**
* Create permission group
*
* @param permissionGroup
*/
public PermissionGroup createPermissionGroup(PermissionGroup permissionGroup) {
return complete(submit(req("POST", tmpl("/guide/permission_groups.json"),
JSON, json(Collections.singletonMap("permission_group", permissionGroup))), handle(PermissionGroup.class, "permission_group")));
}
/**
* Update permission group
* @param permissionGroup
*/
public PermissionGroup updatePermissionGroup(PermissionGroup permissionGroup) {
checkHasId(permissionGroup);
return complete(submit(req("PUT", tmpl("/guide/permission_groups/{id}.json").set("id", permissionGroup.getId()),
JSON, json(Collections.singletonMap("permission_group", permissionGroup))), handle(PermissionGroup.class, "permission_group")));
}
/**
* Delete permission group
* @param permissionGroup
*/
public void deletePermissionGroup(PermissionGroup permissionGroup) {
checkHasId(permissionGroup);
deletePermissionGroup(permissionGroup.getId());
}
/**
* Delete permission group
* @param id
*/
public void deletePermissionGroup(long id) {
complete(submit(req("DELETE", tmpl("/guide/permission_groups/{id}.json").set("id", id)),
handleStatus()));
}

public List<String> getHelpCenterLocales() {
return complete(submit(
Expand Down Expand Up @@ -2006,6 +2054,10 @@ private <T> ListenableFuture<T> submit(Request request, ZendeskAsyncCompletionHa
} else if (request.getByteData() != null) {
logger.debug("Request {} {} {} {} bytes", request.getMethod(), request.getUrl(),
request.getHeaders().get("Content-type"), request.getByteData().length);
// For plain text payload debug
logger.debug("Request payload\n {}", new String(request.getByteData(), Charset.defaultCharset()));
//////////////////

} else {
logger.debug("Request {} {}", request.getMethod(), request.getUrl());
}
Expand Down Expand Up @@ -2555,6 +2607,12 @@ private static void checkHasId(Holiday holiday) {
}
}

private static void checkHasId(PermissionGroup permissionGroup) {
if (permissionGroup.getId() == null) {
throw new IllegalArgumentException("PermissionGroup requires id");
}
}

private static void checkHasToken(Attachment.Upload upload) {
if (upload.getToken() == null) {
throw new IllegalArgumentException("Upload requires token");
Expand Down
105 changes: 105 additions & 0 deletions src/main/java/org/zendesk/client/v2/model/hc/PermissionGroup.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package org.zendesk.client.v2.model.hc;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.zendesk.client.v2.model.SearchResultEntity;

import java.util.Date;
import java.util.List;

/**
* Management Permission Group
* A management permission group defines which agents can create, update, archive, and publish articles.
* https://developer.zendesk.com/rest_api/docs/help_center/permission_groups
* @author Maxim Savenko ([email protected])
*/
public class PermissionGroup implements SearchResultEntity {
/** Automatically assigned when the permission group is created */
private Long id;
/** Permission group name */
private String name;
/** The ids of user segments that have edit privileges */
private List<Long> edit;
/** The ids of user segments that have publish privileges */
private List<Long> publish;
/** When the permission group was created */
@JsonProperty("created_at")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss Z")
private Date createdAt;
/** When the permission group was last updated */
@JsonProperty("updated_at")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss Z")
private Date updatedAt;
/** Whether the permission group is built-in. Built-in permission groups cannot be modified */
@JsonProperty("built_in")
private Boolean builtIn;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public List<Long> getEdit() {
return edit;
}

public void setEdit(List<Long> edit) {
this.edit = edit;
}

public List<Long> getPublish() {
return publish;
}

public void setPublish(List<Long> publish) {
this.publish = publish;
}

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 Boolean getBuiltIn() {
return builtIn;
}

public void setBuiltIn(Boolean builtIn) {
this.builtIn = builtIn;
}

@Override
public String toString() {
return "PermissionGroup{" +
"id=" + id +
", name='" + name + '\'' +
", edit=" + edit +
", publish=" + publish +
", createdAt=" + createdAt +
", updatedAt=" + updatedAt +
", builtIn=" + builtIn +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.zendesk.client.v2.model.hc;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

/**
* Testing Permission Groups
* @author Maxim Savenko ([email protected])
*/
public class PermissionGroupTest {

private PermissionGroup parseJson(byte[] json) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readValue(json, PermissionGroup.class);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

@Test
public void testParsePermissionGroup() throws ParseException {
String json="{\n" +
" \"id\": 2939112,\n" +
" \"name\": \"ApiGroup\",\n" +
" \"built_in\": false,\n" +
" \"publish\": [360001413871],\n" +
" \"created_at\": \"2019-06-10 12:39:23 +0000\",\n" +
" \"updated_at\": \"2019-06-10 12:39:23 +0000\",\n" +
" \"edit\": [360001413871]\n" +
"}";
PermissionGroup pg = parseJson(json.getBytes());

assertNotNull(pg);
assertEquals(PermissionGroup.class, pg.getClass());
assertEquals((Long)2939112L, pg.getId());
assertEquals("ApiGroup", pg.getName());
assertEquals(false, pg.getBuiltIn());
List<Long> ids = new ArrayList<>();
ids.add(360001413871L);
assertEquals(ids, pg.getPublish());
assertEquals(ids, pg.getEdit());

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss Z");
Date date = simpleDateFormat.parse("2019-06-10 12:39:23 +0000");
assertEquals(date, pg.getCreatedAt());
assertEquals(date, pg.getUpdatedAt());
}

}