Hi All,
I got the result after running the groovy script in script runner. But I need to catch id in a variable.
How is it possible to catch the value of Id in a variable?
import groovyx.net.http.ContentType
import groovyx.net.http.*
import static groovyx.net.http.Method.*
import groovy.json.JsonOutput
import net.sf.json.groovy.JsonSlurper
import groovy.json.JsonSlurper
//Authorization
def authString = "user:passwd".bytes.encodeBase64().toString()
def bodyJson = JsonOutput.toJson([name: "Testing Automate deployment", planKey:["key":"TP-MS"], description:"Testing REST API"])
def slurper = new groovy.json.JsonSlurper()
def http = new HTTPBuilder( 'https://bamboo-abc.com/rest/api/latest/deploy/project' )
http.request(PUT) {
headers."Authorization" = "Basic ${authString}"
body = bodyJson
requestContentType = ContentType.JSON
//response.success = { resp ->
//log.warn "Creating new delpyment project request Success! ${resp.status}"
response.failure = { resp, reader ->
log.warn "Creating new delpyment project request Success! ${resp.status}"
}
response.failure = { resp ->
log.warn "Creating new delpyment project request failed with status ${resp.status}"
log.warn resp.statusLine
}
}
[id:33587298, oid:8rpzfqhc4p5u, key:[key:33587298], name:Testing Automate deployment, planKey:[key:TP-MS], description:Testing REST API, environments:[], operations:[canView:true, canEdit:true, canDelete:true, allowedToExecute:false, canExecute:false, allowedToCreateVersion:true, allowedToSetVersionStatus:false], repositorySpecsManaged:false]
There are a couple of ways you can return a value from a closure (everything in the curly brace after http.request(PUT) is a closure)
You can assign the whole statement to a variable
def myRequestOutput = http.request(PUT){...}
Then you can extract the id from that object with
def id = myRequestOutput.id
That works because the httpbuilder will automatically slurp the json into an object
The second way is to define the variable before the closure and fill it inside in a success call:
def myId
http.request(PUT){
...
response.success = {httpResponse, slurpedJson ->
myId = slurpedJson.id
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.