in src/main/groovy/com/epam/esp/confluence/ConfluenceHelper.groovy [147:206]
def updatePage(Long pageId, String body) {
// Get current page version
String pageObj = null
HttpEntity pageEntity = null
try {
HttpGet getPageRequest = new HttpGet(getContentRestUrl(pageId, 'body.storage version ancestors'.split()))
HttpResponse getPageResponse = client.execute(getPageRequest)
pageEntity = getPageResponse.getEntity()
pageObj = IOUtils.toString(pageEntity.getContent())
logger.info("Get Page Request returned " + getPageResponse.statusLine.toString())
if (getPageResponse.statusLine.statusCode != 200) {
logger.error("GET Page Request returned ${getPageResponse.statusLine}")
throw new ConfluenceException("Unexpected API response code")
}
}
finally {
if (pageEntity != null) {
EntityUtils.consume(pageEntity)
}
}
// Parse response into JSON
JSONObject page = new JSONObject(pageObj)
// Update page
// The updated value must be Confluence Storage Format (https://confluence.atlassian.com/display/DOC/Confluence+Storage+Format), NOT HTML.
page.getJSONObject("body").getJSONObject("storage").put("value", body)
int currentVersion = page.getJSONObject("version").getInt("number")
page.getJSONObject("version").put("number", currentVersion + 1)
// Send update request
HttpEntity putPageEntity = null
try {
HttpPut putPageRequest = new HttpPut(getContentRestUrl(pageId, new String[0]))
StringEntity entity = new StringEntity(page.toString(), ContentType.APPLICATION_JSON)
putPageRequest.setEntity(entity)
HttpResponse putPageResponse = client.execute(putPageRequest)
putPageEntity = putPageResponse.getEntity()
logger.info("Put Page Request returned ${putPageResponse.statusLine}")
pageObj = IOUtils.toString(putPageEntity.getContent())
page = new JSONObject(pageObj)
def url = page.getJSONObject('_links').getString('base') + page.getJSONObject('_links').getString('tinyui')
logger.info("page URL: $url")
if (putPageResponse.statusLine.statusCode != 200) {
logger.error("Put Page Request returned ${putPageResponse.statusLine}")
throw new ConfluenceException("Unexpected API response code")
}
}
finally {
EntityUtils.consume(putPageEntity)
}
}