From 06f1ec397c4c47b573eb1713c67c99b06dae3b1a Mon Sep 17 00:00:00 2001 From: Bron Date: Tue, 31 Jan 2023 16:36:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feature:=20java=20sdk=20support=20embed=20l?= =?UTF-8?q?ink=20create=E3=80=81get=20and=20delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/vika/client/api/DatasheetApi.java | 64 +++++++++++++++- .../vika/client/api/http/ApiHttpClient.java | 14 ++-- .../api/model/CreateEmbedLinkRequest.java | 24 ++++++ .../api/model/CreateEmbedLinkResponse.java | 44 +++++++++++ .../client/api/model/EmbedLinkPayload.java | 44 +++++++++++ .../api/model/EmbedLinkPayloadSideBar.java | 14 ++++ .../model/EmbedLinkPayloadViewControl.java | 44 +++++++++++ .../model/EmbedLinkPayloadViewToolBar.java | 74 +++++++++++++++++++ .../api/model/EmbedLinkPermissionEnum.java | 24 ++++++ .../client/api/model/EmbedLinkThemeEnum.java | 7 ++ .../api/model/GetEmbedLinkResponse.java | 46 ++++++++++++ .../client/api/DatasheetOperationTest.java | 49 ++++++++++-- 12 files changed, 432 insertions(+), 16 deletions(-) create mode 100644 client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkRequest.java create mode 100644 client/src/main/java/cn/vika/client/api/model/CreateEmbedLinkResponse.java create mode 100644 client/src/main/java/cn/vika/client/api/model/EmbedLinkPayload.java create mode 100644 client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadSideBar.java create mode 100644 client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewControl.java create mode 100644 client/src/main/java/cn/vika/client/api/model/EmbedLinkPayloadViewToolBar.java create mode 100644 client/src/main/java/cn/vika/client/api/model/EmbedLinkPermissionEnum.java create mode 100644 client/src/main/java/cn/vika/client/api/model/EmbedLinkThemeEnum.java create mode 100644 client/src/main/java/cn/vika/client/api/model/GetEmbedLinkResponse.java 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..551f5ec --- /dev/null +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPermissionEnum.java @@ -0,0 +1,24 @@ +package cn.vika.client.api.model; + +public enum EmbedLinkPermissionEnum { + readOnly, + publicEdit, + privateEdit; + + +// READ_ONLY("readOnly"), +// +// PUBLIC_EDIT("publicEdit"), +// +// PRIVATE_EDIT("privateEdit"); +// +// private final String permissionType; +// +// EmbedLinkPermissionEnum(String permissionType){ +// this.permissionType = permissionType; +// } +// +// public String getPermissionType(){ +// return permissionType; +// } +} 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()); + } + } From 23357ad2b770aef069e981f82be83ca763a437d3 Mon Sep 17 00:00:00 2001 From: Bron Date: Thu, 9 Feb 2023 10:31:35 +0800 Subject: [PATCH 2/2] feat: delete unuseful code --- .../api/model/EmbedLinkPermissionEnum.java | 17 ----------------- 1 file changed, 17 deletions(-) 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 index 551f5ec..499cbfa 100644 --- a/client/src/main/java/cn/vika/client/api/model/EmbedLinkPermissionEnum.java +++ b/client/src/main/java/cn/vika/client/api/model/EmbedLinkPermissionEnum.java @@ -4,21 +4,4 @@ public enum EmbedLinkPermissionEnum { readOnly, publicEdit, privateEdit; - - -// READ_ONLY("readOnly"), -// -// PUBLIC_EDIT("publicEdit"), -// -// PRIVATE_EDIT("privateEdit"); -// -// private final String permissionType; -// -// EmbedLinkPermissionEnum(String permissionType){ -// this.permissionType = permissionType; -// } -// -// public String getPermissionType(){ -// return permissionType; -// } }