diff --git a/src/main/java/com/coveo/pushapiclient/Document.java b/src/main/java/com/coveo/pushapiclient/Document.java index fa27bbf7..22fa35b4 100644 --- a/src/main/java/com/coveo/pushapiclient/Document.java +++ b/src/main/java/com/coveo/pushapiclient/Document.java @@ -90,7 +90,7 @@ public class Document { *

* See https://docs.coveo.com/en/107 for more information. */ - public DocumentPermissions permissions; + public DocumentPermissions[] permissions; /** * The file extension of the data you're pushing. *

@@ -101,5 +101,9 @@ public class Document { * Example: `.html` */ public String fileExtension; + + public Document() { + this.permissions = new DocumentPermissions[]{new DocumentPermissions()}; + } } 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/DocumentPermissions.java b/src/main/java/com/coveo/pushapiclient/DocumentPermissions.java index 5314e2af..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; @@ -15,4 +14,10 @@ public class DocumentPermissions { * The list of denied permissions for this permission set. */ public SecurityIdentity[] deniedPermissions; -} \ No newline at end of file + + public DocumentPermissions() { + this.allowAnonymous = true; + this.allowedPermissions = new SecurityIdentity[]{}; + this.deniedPermissions = new SecurityIdentity[]{}; + } +} diff --git a/src/main/java/com/coveo/pushapiclient/PlatformClient.java b/src/main/java/com/coveo/pushapiclient/PlatformClient.java index cedf87d6..3f6535ef 100644 --- a/src/main/java/com/coveo/pushapiclient/PlatformClient.java +++ b/src/main/java/com/coveo/pushapiclient/PlatformClient.java @@ -113,8 +113,17 @@ public HttpResponse manageSecurityIdentities(String securityProviderId, return this.httpClient.send(request, HttpResponse.BodyHandlers.ofString()); } - 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", sourceId, 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 ffc4a3c0..84813148 100644 --- a/src/main/java/com/coveo/pushapiclient/Source.java +++ b/src/main/java/com/coveo/pushapiclient/Source.java @@ -33,4 +33,8 @@ public HttpResponse deleteOldSecurityIdentities(String securityProviderI 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 cdf33fba..650f0582 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); @@ -22,7 +22,22 @@ public static void main(String[] args) { e.printStackTrace(); } + testManageIdentities(source); + testPushDocument(dotenv.get("SOURCE_ID"), source); + } + public static void testPushDocument(String sourceId, Source source) { + DocumentBuilder doc = new DocumentBuilder("https://perdu.com", "the title").withData("this is searchable").withDate(new Date()); + System.out.println(doc.marshal()); + try { + source.addOrUpdateDocument(sourceId, doc); + } catch (IOException | InterruptedException e) { + System.out.println(e); + } + + } + + public static void testManageIdentities(Source source) { IdentityModel identityModel = new IdentityModel("the_name", SecurityIdentityType.USER, new HashMap() { }); @@ -31,7 +46,6 @@ public static void main(String[] args) { }; 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);