Display Atlassian Versions
This is a macro that displays the latest version of each Atlassian product. Because it makes calls to the Atlassian Marketplace REST API, it takes a couple of seconds to complete.
The following image shows the macro form:
The following image shows the macro code:
import com.atlassian.confluence.xhtml.api.XhtmlContent
import com.atlassian.sal.api.component.ComponentLocator
import groovy.xml.MarkupBuilder
import groovyx.net.http.ContentType
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.Method
def httpBuilder = new HTTPBuilder("https://marketplace.atlassian.com")
def xhtmlContent = ComponentLocator.getComponent(XhtmlContent)
def rt = httpBuilder.request(Method.GET, ContentType.JSON) {
uri.path = "/rest/1.0/applications"
}
List<Map> apps = rt.applications
def writer = new StringWriter()
def builder = new MarkupBuilder(writer)
builder.table {
tbody {
tr {
th { p("App") }
th { p("Latest version") }
}
apps.sort { it.order }.each { app ->
rt = httpBuilder.request(Method.GET, ContentType.JSON) {
uri.path = "/rest/1.0/applications/${app.key}"
}
tr {
td { p(app.name) }
td { p(rt.versions.isEmpty() ? "No Versions Found" : rt.versions.first().version) }
}
}
}
}
xhtmlContent.convertStorageToView(writer.toString(), context)
The following image shows what the macro produces:
This macro would benefit from selecting the Lazy Loaded field.