Files
d.velop/_Vorlagen/Groovy-Skripte/downloadDocuments.groovy
2025-04-04 11:35:25 +02:00

58 lines
2.5 KiB
Groovy

import com.dvelop.d3.server.core.D3
import groovy.json.JsonSlurper
import javax.net.ssl.HttpsURLConnection
/**
* Beispiel um Dokumente anhand einer Kategorie und einer Eigenschaft zu suchen und mit dem JSON arbeiten zu können
*/
void searchDocuments(D3 d3, String sessionId, String searchCategory, String searchPropertyKey, String searchPropertyValue) {
String searchFor = "?sourceid=/dms/r/$REPO_ID/source&sourcecategories=[\"$searchCategory\"]&sourceproperties={\"$searchPropertyKey\":[\"$searchPropertyValue\"]}"
String baseRequest = "$BASE_URI/dms/r/$REPO_ID/srm$searchFor"
HttpsURLConnection request = new URL(baseRequest).openConnection() as HttpsURLConnection
request.requestMethod = "GET"
request.setRequestProperty("Origin", BASE_URI)
request.setRequestProperty("Accept", "application/json")
request.setRequestProperty("Authorization", "Bearer $sessionId")
if (request.responseCode == 200) {
def json = request.inputStream.withCloseable { stream ->
new JsonSlurper().parse(stream as InputStream)
}
//Alle gefundenen Dokumente durchgehen
json.items?.each {
//Dateinamen mit Endung jedes Dokuments holen
String fileName = it.sourceProperties.find { property -> property.key == "property_filename" }.value
File file = new File(exportDirectory, fileName)
//Download starten
downloadDocument(d3, sessionId, it._links.mainblobcontent.href, file.getPath())
}
} else {
d3.log.error("Fehler bei der Suche nach Dokumenten $request.responseCode: $request.responseMessage")
}
}
/**
* Beispiel um ein Dokument herunter zu laden
*/
void downloadDocument(D3 d3, String sessionId, String downloadUrl, String filePath) {
String baseRequest = BASE_URI + downloadUrl
HttpsURLConnection request = new URL(baseRequest).openConnection() as HttpsURLConnection
request.requestMethod = "GET"
request.setRequestProperty("Origin", BASE_URI)
request.setRequestProperty("Accept", "application/json")
request.setRequestProperty("Authorization", "Bearer $sessionId")
if (request.responseCode == 200) {
d3.log.info("Starte Download von: " + downloadUrl)
request.inputStream.withCloseable { stream ->
new File(filePath) << stream.getBytes()
}
} else {
d3.log.error("Fehler beim Herunterladen von $baseRequest")
}
}