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);