diff --git a/client/src/main/java/cn/vika/client/api/DatasheetApi.java b/client/src/main/java/cn/vika/client/api/DatasheetApi.java index 8533a13..c0d4e0e 100644 --- a/client/src/main/java/cn/vika/client/api/DatasheetApi.java +++ b/client/src/main/java/cn/vika/client/api/DatasheetApi.java @@ -3,13 +3,13 @@ import cn.vika.client.api.exception.ApiException; import cn.vika.client.api.http.AbstractApi; import cn.vika.client.api.http.ApiHttpClient; -import cn.vika.client.api.model.CreateDatasheetRequest; -import cn.vika.client.api.model.CreateDatasheetResponse; -import cn.vika.client.api.model.HttpResult; +import cn.vika.client.api.model.*; import cn.vika.core.http.GenericTypeReference; import cn.vika.core.http.HttpHeader; import cn.vika.core.utils.StringUtil; +import java.util.List; + /** * @author tao */ @@ -17,6 +17,12 @@ public class DatasheetApi extends AbstractApi { private static final String POST_DATASHEET_PATH = "/spaces/%s/datasheets"; + private static final String POST_EMBED_LINK_PATH = "/spaces/%s/nodes/%s/embedlinks"; + + private static final String GET_EMBED_LINK_PATH = "/spaces/%s/nodes/%s/embedlinks"; + + private static final String DELETE_EMBED_LINK_PATH = "/spaces/%s/nodes/%s/embedlinks/%s"; + public DatasheetApi(ApiHttpClient apiHttpClient) { super(apiHttpClient); } @@ -34,12 +40,64 @@ path, new HttpHeader(), datasheet, return result.getData(); } + public CreateEmbedLinkResponse addEmbedLink(String spaceId, String datasheetId, CreateEmbedLinkRequest embedLink){ + // check create embed link params + checkEmbedLinkPathArgs(spaceId, datasheetId); + + final String path = String.format(POST_EMBED_LINK_PATH, spaceId, datasheetId); + + HttpResult result = getDefaultHttpClient().post(path, new HttpHeader(), embedLink, + new GenericTypeReference>() {}); + return result.getData(); + } + + public List getEmbedLink(String spaceId, String datasheetId){ + // check get embed link params + checkEmbedLinkPathArgs(spaceId, datasheetId); + + final String path = String.format(GET_EMBED_LINK_PATH, spaceId, datasheetId); + + HttpResult> result = getDefaultHttpClient().get(path, new HttpHeader(), + new GenericTypeReference>>() {}); + + return result.getData(); + } + + public void deleteEmbedLink(String spaceId, String datasheetId, String embedLinkId){ + // check delete embed link params + checkDeleteEmbedLinkPathArgs(spaceId, datasheetId, embedLinkId); + + final String path = String.format(DELETE_EMBED_LINK_PATH, spaceId, datasheetId, embedLinkId); + + getDefaultHttpClient().delete(path, new HttpHeader(), Void.class); + } + + private void checkPostDatasheetPathArgs(String spaceId) { + if (!StringUtil.hasText(spaceId)) { + throw new ApiException("space id must be not null"); + } + } + private void checkEmbedLinkPathArgs(String spaceId, String datasheetId) { if (!StringUtil.hasText(spaceId)) { throw new ApiException("space id must be not null"); } + if (!StringUtil.hasText(datasheetId)){ + throw new ApiException("datasheet id must be not null"); + } + } + private void checkDeleteEmbedLinkPathArgs(String spaceId, String datasheetId, String embedLinkId) { + if (!StringUtil.hasText(spaceId)) { + throw new ApiException("space id must not be null"); + } + if (!StringUtil.hasText(datasheetId)) { + throw new ApiException("datasheet id must not be null"); + } + if (!StringUtil.hasText(embedLinkId)) { + throw new ApiException("fieldId id must not be null"); + } } } diff --git a/client/src/main/java/cn/vika/client/api/http/ApiHttpClient.java b/client/src/main/java/cn/vika/client/api/http/ApiHttpClient.java index fbcd1be..eeb4071 100644 --- a/client/src/main/java/cn/vika/client/api/http/ApiHttpClient.java +++ b/client/src/main/java/cn/vika/client/api/http/ApiHttpClient.java @@ -126,13 +126,13 @@ public DefaultHttpClient getDefaultHttpClient() { } } - if (callTimeout != null) { - // Sets the per request call timeout. - ClientHttpRequestFactory requestFactory = this.defaultHttpClient.getRequestFactory(); - if (requestFactory instanceof OkHttpClientHttpRequestFactory) { - ((OkHttpClientHttpRequestFactory) requestFactory).setCallTimeout(callTimeout); - } - } +// if (callTimeout != null) { +// // Sets the per request call timeout. +// ClientHttpRequestFactory requestFactory = this.defaultHttpClient.getRequestFactory(); +// if (requestFactory instanceof OkHttpClientHttpRequestFactory) { +// ((OkHttpClientHttpRequestFactory) requestFactory).setCallTimeout(callTimeout); +// } +// } return this.defaultHttpClient; } diff --git a/client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkRequest.java b/client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkRequest.java new file mode 100644 index 0000000..b405df3 --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkRequest.java @@ -0,0 +1,24 @@ +package cn.vika.client.api.model; + +public class CreateEmbedLinkRequest { + + private EmbedLinkPayload payload; + + private EmbedLinkThemeEnum theme; + + public EmbedLinkPayload getPayload() { + return payload; + } + + public void setPayload(EmbedLinkPayload payload) { + this.payload = payload; + } + + public EmbedLinkThemeEnum getTheme() { + return theme; + } + + public void setTheme(EmbedLinkThemeEnum theme) { + this.theme = theme; + } +} diff --git a/client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkResponse.java b/client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkResponse.java new file mode 100644 index 0000000..689621d --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkResponse.java @@ -0,0 +1,44 @@ +package cn.vika.client.api.model; + +public class CreateEmbedLinkResponse { + + private String linkId; + + private String url; + + private EmbedLinkPayload payload; + + private EmbedLinkThemeEnum theme; + + public String getLinkId() { + return linkId; + } + + public void setLinkId(String linkId) { + this.linkId = linkId; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public EmbedLinkPayload getPayload() { + return payload; + } + + public void setPayload(EmbedLinkPayload payload) { + this.payload = payload; + } + + public EmbedLinkThemeEnum getTheme() { + return theme; + } + + public void setTheme(EmbedLinkThemeEnum theme) { + this.theme = theme; + } +} diff --git a/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayload.java b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayload.java new file mode 100644 index 0000000..adabe23 --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayload.java @@ -0,0 +1,44 @@ +package cn.vika.client.api.model; + +public class EmbedLinkPayload { + + private EmbedLinkPayloadSideBar primarySideBar; + + private EmbedLinkPayloadViewControl viewControl; + + private boolean bannerLogo; + + private EmbedLinkPermissionEnum permissionType; + + public EmbedLinkPayloadSideBar getPrimarySideBar() { + return primarySideBar; + } + + public void setPrimarySideBar(EmbedLinkPayloadSideBar primarySideBar) { + this.primarySideBar = primarySideBar; + } + + public EmbedLinkPayloadViewControl getViewControl() { + return viewControl; + } + + public void setViewControl(EmbedLinkPayloadViewControl viewControl) { + this.viewControl = viewControl; + } + + public boolean isBannerLogo() { + return bannerLogo; + } + + public void setBannerLogo(boolean bannerLogo) { + this.bannerLogo = bannerLogo; + } + + public EmbedLinkPermissionEnum getPermissionType() { + return permissionType; + } + + public void setPermissionType(EmbedLinkPermissionEnum permissionType) { + this.permissionType = permissionType; + } +} diff --git a/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadSideBar.java b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadSideBar.java new file mode 100644 index 0000000..4c2917a --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadSideBar.java @@ -0,0 +1,14 @@ +package cn.vika.client.api.model; + +public class EmbedLinkPayloadSideBar { + + private boolean collapsed; + + public boolean isCollapsed() { + return collapsed; + } + + public void setCollapsed(boolean collapsed) { + this.collapsed = collapsed; + } +} diff --git a/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewControl.java b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewControl.java new file mode 100644 index 0000000..33a33b4 --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewControl.java @@ -0,0 +1,44 @@ +package cn.vika.client.api.model; + +public class EmbedLinkPayloadViewControl { + + private String viewId; + + private boolean tabBar; + + private EmbedLinkPayloadViewToolBar toolBar; + + private boolean collapsed; + + public String getViewId() { + return viewId; + } + + public void setViewId(String viewId) { + this.viewId = viewId; + } + + public boolean isTabBar() { + return tabBar; + } + + public void setTabBar(boolean tabBar) { + this.tabBar = tabBar; + } + + public EmbedLinkPayloadViewToolBar getToolBar() { + return toolBar; + } + + public void setToolBar(EmbedLinkPayloadViewToolBar toolBar) { + this.toolBar = toolBar; + } + + public boolean isCollapsed() { + return collapsed; + } + + public void setCollapsed(boolean collapsed) { + this.collapsed = collapsed; + } +} diff --git a/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewToolBar.java b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewToolBar.java new file mode 100644 index 0000000..ce25aba --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewToolBar.java @@ -0,0 +1,74 @@ +package cn.vika.client.api.model; + +public class EmbedLinkPayloadViewToolBar { + + private boolean basicTools; + + private boolean shareBtn; + + private boolean widgetBtn; + + private boolean apiBtn; + + private boolean formBtn; + + private boolean historyBtn; + + private boolean robotBtn; + + public boolean isBasicTools() { + return basicTools; + } + + public void setBasicTools(boolean basicTools) { + this.basicTools = basicTools; + } + + public boolean isShareBtn() { + return shareBtn; + } + + public void setShareBtn(boolean shareBtn) { + this.shareBtn = shareBtn; + } + + public boolean isWidgetBtn() { + return widgetBtn; + } + + public void setWidgetBtn(boolean widgetBtn) { + this.widgetBtn = widgetBtn; + } + + public boolean isApiBtn() { + return apiBtn; + } + + public void setApiBtn(boolean apiBtn) { + this.apiBtn = apiBtn; + } + + public boolean isFormBtn() { + return formBtn; + } + + public void setFormBtn(boolean formBtn) { + this.formBtn = formBtn; + } + + public boolean isHistoryBtn() { + return historyBtn; + } + + public void setHistoryBtn(boolean historyBtn) { + this.historyBtn = historyBtn; + } + + public boolean isRobotBtn() { + return robotBtn; + } + + public void setRobotBtn(boolean robotBtn) { + this.robotBtn = robotBtn; + } +} diff --git a/client/src/main/java/cn/vika/client/api/model/EmbedLinkPermissionEnum.java b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPermissionEnum.java new file mode 100644 index 0000000..499cbfa --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPermissionEnum.java @@ -0,0 +1,7 @@ +package cn.vika.client.api.model; + +public enum EmbedLinkPermissionEnum { + readOnly, + publicEdit, + privateEdit; +} diff --git a/client/src/main/java/cn/vika/client/api/model/EmbedLinkThemeEnum.java b/client/src/main/java/cn/vika/client/api/model/EmbedLinkThemeEnum.java new file mode 100644 index 0000000..f6a1948 --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkThemeEnum.java @@ -0,0 +1,7 @@ +package cn.vika.client.api.model; + +public enum EmbedLinkThemeEnum { + light, + + dark; +} diff --git a/client/src/main/java/cn/vika/client/api/model/GetEmbedLinkResponse.java b/client/src/main/java/cn/vika/client/api/model/GetEmbedLinkResponse.java new file mode 100644 index 0000000..a22a122 --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/GetEmbedLinkResponse.java @@ -0,0 +1,46 @@ +package cn.vika.client.api.model; + +import java.util.List; + +public class GetEmbedLinkResponse { + + private String linkId; + + private String url; + + private EmbedLinkPayload payload; + + private EmbedLinkThemeEnum theme; + + public String getLinkId() { + return linkId; + } + + public void setLinkId(String linkId) { + this.linkId = linkId; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public EmbedLinkPayload getPayload() { + return payload; + } + + public void setPayload(EmbedLinkPayload payload) { + this.payload = payload; + } + + public EmbedLinkThemeEnum getTheme() { + return theme; + } + + public void setTheme(EmbedLinkThemeEnum theme) { + this.theme = theme; + } +} diff --git a/client/src/test/java/cn/vika/client/api/DatasheetOperationTest.java b/client/src/test/java/cn/vika/client/api/DatasheetOperationTest.java index 193a546..487b956 100644 --- a/client/src/test/java/cn/vika/client/api/DatasheetOperationTest.java +++ b/client/src/test/java/cn/vika/client/api/DatasheetOperationTest.java @@ -4,18 +4,14 @@ import java.util.List; import cn.vika.client.api.http.ApiCredential; -import cn.vika.client.api.model.CreateDatasheetRequest; -import cn.vika.client.api.model.CreateDatasheetResponse; -import cn.vika.client.api.model.CreateFieldRequest; +import cn.vika.client.api.model.*; import cn.vika.client.api.model.builder.CreateFieldRequestBuilder; import cn.vika.client.api.model.field.FieldTypeEnum; import cn.vika.client.api.model.field.property.EmptyProperty; import cn.vika.client.api.model.field.property.SingleTextFieldProperty; import org.junit.jupiter.api.Test; -import static cn.vika.client.api.ConstantKey.TEST_API_KEY; -import static cn.vika.client.api.ConstantKey.TEST_HOST_URL; -import static cn.vika.client.api.ConstantKey.TEST_SPACE_ID; +import static cn.vika.client.api.ConstantKey.*; import static org.assertj.core.api.Assertions.assertThat; /** @@ -29,6 +25,10 @@ public class DatasheetOperationTest { private final String API_KEY = TEST_API_KEY.get(); + private final String DATASHEET_ID = TEST_DATASHEET_ID.get(); + + private final String VIEW_ID = TEST_VIEW_ID.get(); + private final VikaApiClient vikaApiClient = new VikaApiClient(HOST_URL, new ApiCredential(API_KEY)); @Test @@ -70,4 +70,41 @@ void testAddDatasheetWithOtherInfo() { assertThat(response.getId()).isNotNull(); } + @Test + void testCreateEmbedLink(){ + CreateEmbedLinkRequest request = new CreateEmbedLinkRequest(); + EmbedLinkPayloadViewControl viewControl = new EmbedLinkPayloadViewControl(); + viewControl.setViewId(VIEW_ID); + EmbedLinkPayload embedLinkPayload = new EmbedLinkPayload(); + embedLinkPayload.setViewControl(viewControl); + request.setPayload(embedLinkPayload); + request.setTheme(EmbedLinkThemeEnum.light); + CreateEmbedLinkResponse response = vikaApiClient.getDatasheetApi().addEmbedLink(SPACE_ID, DATASHEET_ID, request); + assertThat(response).isNotNull(); + assertThat(response.getLinkId()).isNotNull(); + } + + @Test + void testGetEmbedLink(){ + List responses = vikaApiClient.getDatasheetApi().getEmbedLink(SPACE_ID, DATASHEET_ID); + assertThat(responses).isNotNull(); + assertThat(responses.get(0).getLinkId()).isNotNull(); + } + + @Test + void testDeleteEmbedLink() throws InterruptedException { + CreateEmbedLinkRequest request = new CreateEmbedLinkRequest(); + EmbedLinkPayloadViewControl viewControl = new EmbedLinkPayloadViewControl(); + viewControl.setViewId(VIEW_ID); + EmbedLinkPayload embedLinkPayload = new EmbedLinkPayload(); + embedLinkPayload.setViewControl(viewControl); + request.setPayload(embedLinkPayload); + request.setTheme(EmbedLinkThemeEnum.light); + CreateEmbedLinkResponse response = vikaApiClient.getDatasheetApi().addEmbedLink(SPACE_ID, DATASHEET_ID, request); + assertThat(response).isNotNull(); + assertThat(response.getLinkId()).isNotNull(); + Thread.sleep(1000); + vikaApiClient.getDatasheetApi().deleteEmbedLink(SPACE_ID, DATASHEET_ID, response.getLinkId()); + } + }