From c074de461179b17629d9b61d3bc0e37d5fc2e51a Mon Sep 17 00:00:00 2001 From: Olivier Lamothe Date: Tue, 29 Jun 2021 15:36:28 -0400 Subject: [PATCH 1/3] apply stash --- .../coveo/pushapiclient/DocumentBuilder.java | 4 ++ .../coveo/pushapiclient/PlatformClient.java | 13 ++++- .../java/com/coveo/pushapiclient/Source.java | 24 +++++++++ .../com/coveo/testlocally/TestingLocally.java | 51 ++++++++++++++++++- 4 files changed, 89 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/coveo/pushapiclient/DocumentBuilder.java b/src/main/java/com/coveo/pushapiclient/DocumentBuilder.java index 80a83399..e7a7ce96 100644 --- a/src/main/java/com/coveo/pushapiclient/DocumentBuilder.java +++ b/src/main/java/com/coveo/pushapiclient/DocumentBuilder.java @@ -16,6 +16,10 @@ public DocumentBuilder(String uri, String title) { this.document.title = title; } + public Document getDocument() { + return this.document; + } + public DocumentBuilder withData(String data) { this.document.data = data; return this; diff --git a/src/main/java/com/coveo/pushapiclient/PlatformClient.java b/src/main/java/com/coveo/pushapiclient/PlatformClient.java index f0aaee6a..7b5a4b14 100644 --- a/src/main/java/com/coveo/pushapiclient/PlatformClient.java +++ b/src/main/java/com/coveo/pushapiclient/PlatformClient.java @@ -62,8 +62,17 @@ public void manageSecurityIdentities(String securityProviderId, Object batchConf // TODO } - public void pushDocument(String sourceId, Document doc) { - // TODO + public HttpResponse pushDocument(String sourceId, String documentJSON, String documentId) throws IOException, InterruptedException { + String[] headers = this.getHeaders(this.getAuthorizationHeader(), this.getContentTypeApplicationJSONHeader()); + URI uri = URI.create(this.getBasePushURL() + String.format("/sources/%s/documents?documentId=%s", documentId)); + + HttpRequest request = HttpRequest.newBuilder() + .headers(headers) + .PUT(HttpRequest.BodyPublishers.ofString(documentJSON)) + .uri(uri) + .build(); + + return this.httpClient.send(request, HttpResponse.BodyHandlers.ofString()); } public void deleteDocument(String sourceId, String documentId, Boolean deleteChildren) { diff --git a/src/main/java/com/coveo/pushapiclient/Source.java b/src/main/java/com/coveo/pushapiclient/Source.java index 656c9472..84813148 100644 --- a/src/main/java/com/coveo/pushapiclient/Source.java +++ b/src/main/java/com/coveo/pushapiclient/Source.java @@ -13,4 +13,28 @@ public Source(String apiKey, String organizationId) { public HttpResponse create(String name, SourceVisibility sourceVisibility) throws IOException, InterruptedException { return this.platformClient.createSource(name, sourceVisibility); } + + public HttpResponse createOrUpdateSecurityIdentity(String securityProviderId, SecurityIdentityModel securityIdentityModel) throws IOException, InterruptedException { + return this.platformClient.createOrUpdateSecurityIdentity(securityProviderId, securityIdentityModel); + } + + public HttpResponse createOrUpdateSecurityIdentityAlias(String securityProviderId, SecurityIdentityAliasModel securityIdentityAliasModel) throws IOException, InterruptedException { + return this.platformClient.createOrUpdateSecurityIdentityAlias(securityProviderId, securityIdentityAliasModel); + } + + public HttpResponse deleteSecurityIdentity(String securityProviderId, SecurityIdentityDelete securityIdentityDelete) throws IOException, InterruptedException { + return this.platformClient.deleteSecurityIdentity(securityProviderId, securityIdentityDelete); + } + + public HttpResponse deleteOldSecurityIdentities(String securityProviderId, SecurityIdentityDeleteOptions batchDelete) throws IOException, InterruptedException { + return this.platformClient.deleteOldSecurityIdentities(securityProviderId, batchDelete); + } + + public HttpResponse manageSecurityIdentities(String securityProviderId, SecurityIdentityBatchConfig batchConfig) throws IOException, InterruptedException { + return this.platformClient.manageSecurityIdentities(securityProviderId, batchConfig); + } + + public HttpResponse addOrUpdateDocument(String sourceId, DocumentBuilder docBuilder) throws IOException, InterruptedException { + return this.platformClient.pushDocument(sourceId, docBuilder.marshal(), docBuilder.getDocument().uri); + } } diff --git a/src/main/java/com/coveo/testlocally/TestingLocally.java b/src/main/java/com/coveo/testlocally/TestingLocally.java index f72a694a..12b47b23 100644 --- a/src/main/java/com/coveo/testlocally/TestingLocally.java +++ b/src/main/java/com/coveo/testlocally/TestingLocally.java @@ -13,7 +13,7 @@ public class TestingLocally { public static void main(String[] args) { Dotenv dotenv = Dotenv.load(); - DocumentBuilder doc = new DocumentBuilder("https://perdu.com", "the title").withData("this is searchable").withDate(new Date()); + Source source = new Source(dotenv.get("API_KEY"), dotenv.get("ORG_ID")); try { HttpResponse res = source.create("testlocaljava", SourceVisibility.SECURED); @@ -24,6 +24,55 @@ public static void main(String[] args) { e.printStackTrace(); } + localTestSecurityIdentities(source); + + } + + public static void localTestDocument(String sourceId, Source source) throws IOException, InterruptedException { + DocumentBuilder doc = new DocumentBuilder("https://perdu.com", "the title").withData("this is searchable").withDate(new Date()); + source.addOrUpdateDocument(sourceId, doc); + } + + public static void localTestSecurityIdentities(Source source) { + IdentityModel identityModel = new IdentityModel("the_name", SecurityIdentityType.USER, new HashMap() { + }); + + IdentityModel[] identityModels = { + identityModel, + }; + + AliasMapping[] aliasMapping = {new AliasMapping("the_provider_name", "the_name", SecurityIdentityType.USER, new HashMap<>())}; + try { + SecurityIdentityModel securityIdentityModel = new SecurityIdentityModel(identityModels, identityModel, identityModels); + String jsonSecurityIdentityModel = new Gson().toJson(securityIdentityModel); + System.out.println(jsonSecurityIdentityModel); + HttpResponse resCreateOrUpdateSecurityIdentity = source.createOrUpdateSecurityIdentity("the_provider_id", securityIdentityModel); + System.out.println(resCreateOrUpdateSecurityIdentity.body()); + + + SecurityIdentityAliasModel securityIdentityAliasModel = new SecurityIdentityAliasModel(aliasMapping, identityModel, identityModels); + String jsonSecurityIdentityAliasModel = new Gson().toJson(securityIdentityAliasModel); + System.out.println(jsonSecurityIdentityAliasModel); + HttpResponse resCreateOrUpdateSecurityIdentityAlias = source.createOrUpdateSecurityIdentityAlias("the_provider_id_mappings", securityIdentityAliasModel); + System.out.println(resCreateOrUpdateSecurityIdentityAlias.body()); + + + SecurityIdentityDelete securityIdentityDelete = new SecurityIdentityDelete(identityModel); + String jsonSecurityIdentityDelete = new Gson().toJson(securityIdentityDelete); + System.out.println(jsonSecurityIdentityDelete); + HttpResponse resDeleteSecurityIdentity = source.deleteSecurityIdentity("the_provider_id_delete", securityIdentityDelete); + System.out.println(resDeleteSecurityIdentity.body()); + + SecurityIdentityDeleteOptions batchDelete = new SecurityIdentityDeleteOptions(123, 987l); + HttpResponse resDeleteOlderThan = source.deleteOldSecurityIdentities("the_provider_id_delete_older_than", batchDelete); + System.out.println(resDeleteOlderThan.body()); + + SecurityIdentityBatchConfig batchConfig = new SecurityIdentityBatchConfig("the_file_id", 123l); + HttpResponse resBatchConfig = source.manageSecurityIdentities("the_provider_id_batch_config", batchConfig); + System.out.println(resBatchConfig.body()); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } } } From b18713a3a8a1b43b82765a2739f264e3ad53dfd5 Mon Sep 17 00:00:00 2001 From: Olivier Lamothe Date: Tue, 29 Jun 2021 16:32:59 -0400 Subject: [PATCH 2/3] feat: support pushing single document with no permissions --- src/main/java/com/coveo/pushapiclient/DocumentPermissions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java b/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java index d9762b05..9477c529 100644 --- a/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java +++ b/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java @@ -21,4 +21,4 @@ public DocumentPermissions() { this.allowedPermissions = new SecurityIdentity[]{}; this.deniedPermissions = new SecurityIdentity[]{}; } -} \ No newline at end of file +} From b68517e6a04ac1bba9765c7ebe0d94a04ab83f98 Mon Sep 17 00:00:00 2001 From: Olivier Lamothe Date: Tue, 29 Jun 2021 16:50:51 -0400 Subject: [PATCH 3/3] fix Javadoc --- src/main/java/com/coveo/pushapiclient/DocumentPermissions.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java b/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java index 9477c529..63a1c5c3 100644 --- a/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java +++ b/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java @@ -3,7 +3,6 @@ public class DocumentPermissions { /** * Whether to allow anonymous users in this permission set. - *

* Default value is false. */ public boolean allowAnonymous;