def listDraftsets(baseUrl, credentials, include) { def response = httpRequest(acceptType: 'APPLICATION_JSON', authentication: credentials, httpMode: 'GET', url: "${baseUrl}/v1/draftsets?include=${include}") if (response.status == 200) { return readJSON(text: response.content) } else { error "Problem listing draftsets ${response.status} : ${response.content}" } } def deleteDraftset(baseUrl, credentials, id) { def response = httpRequest(acceptType: 'APPLICATION_JSON', authentication: credentials, httpMode: 'DELETE', url: "${baseUrl}/v1/draftset/${jobDraft.id}") if (response.status == 202) { def job = readJSON(text: response.content) drafter.waitForJob( "${baseUrl}${job['finished-job']}", credentials, job['restart-id']) } else { error "Problem deleting draftset ${response.status} : ${response.content}" } } def createDraftset(baseUrl, credentials, label) { String displayName = java.net.URLEncoder.encode(label, "UTF-8") def response = httpRequest(acceptType: 'APPLICATION_JSON', authentication: credentials, httpMode: 'POST', url: "${baseUrl}/v1/draftsets?display-name=${displayName}") if (response.status == 200) { return readJSON(text: response.content) } else { error "Problem creating draftset ${response.status} : ${response.content}" } } def addData(baseUrl, credentials, id, data, type) { def response = httpRequest(acceptType: 'APPLICATION_JSON', authentication: credentials, httpMode: 'PUT', url: "${baseUrl}/v1/draftset/${id}/data", requestBody: data, customHeaders: [[name: 'Content-Type', value: type]]) if (response.status == 202) { def job = readJSON(text: response.content) drafter.waitForJob( "${baseUrl}${job['finished-job']}", credentials, job['restart-id']) } else { error "Problem adding data ${response.status} : ${response.content}" } } def publishDraftset(baseUrl, credentials, id) { def response = httpRequest(acceptType: 'APPLICATION_JSON', authentication: credentials, httpMode: 'POST', url: "${baseUrl}/v1/draftset/${id}/publish") if (response.status == 202) { def job = readJSON(text: response.content) drafter.waitForJob( "${baseUrl}${job['finished-job']}", credentials, job['restart-id']) } else { error "Problem publishing draftset ${response.status} : ${response.content}" } } def waitForJob(pollUrl, credentials, restartId) { while (true) { jobResponse = httpRequest(acceptType: 'APPLICATION_JSON', authentication: credentials, httpMode: 'GET', url: pollUrl, validResponseCodes: '200:404') if (jobResponse.status == 404) { if (readJSON(text: jobResponse.content)['restart-id'] != restartId) { error "Failed waiting for job to finish, restart-id different." } else { sleep 10 } } else if (jobResponse.status == 200) { def jobResponseObj = readJSON(text: jobResponse.content) if (jobResponseObj['restart-id'] != restartId) { error "Failed waiting for job to finish, restart-id different." } else if (jobResponseObj.type == 'ok') { return } else if (jobResponseObj.type == "error") { error "Pipeline error in ${jobResponseObj.details?.pipeline?.name}. ${jobResponseObj.message}" } } } }