This is an automated email from the git hooks/post-receive script. mckinstry pushed a commit to branch debian/master in repository rest-gradle-plugin.
commit 9a036568d0ea168400384e5cbcdec300bdf0dbdc Author: noamt <[email protected]> Date: Sun Sep 20 17:31:16 2015 +0300 Add the ability to specify a custom successful response handler --- .../groovy/org/_10ne/gradle/rest/RestTask.groovy | 56 +++++++++++++++++----- .../org/_10ne/gradle/rest/RestTaskSpec.groovy | 47 ++++++++++++++++++ 2 files changed, 92 insertions(+), 11 deletions(-) diff --git a/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy b/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy index 05de2cf..4699d9b 100644 --- a/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy +++ b/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy @@ -38,22 +38,43 @@ class RestTask extends DefaultTask { RESTClient client - @Input String httpMethod - @Input Object uri @Input - @Optional boolean preemptiveAuth + String httpMethod + @Input - @Optional String username + Object uri + @Input - @Optional String password + @Optional + boolean preemptiveAuth + @Input - @Optional Object requestContentType + @Optional + String username + @Input - @Optional Object contentType + @Optional + String password + @Input - @Optional Object requestBody + @Optional + Object requestContentType + @Input - @Optional Object requestHeaders + @Optional + Object contentType + + @Input + @Optional + Object requestBody + + @Input + @Optional + Object requestHeaders + + @Input + @Optional + Closure responseHandler HttpResponseDecorator serverResponse @@ -107,8 +128,21 @@ class RestTask extends DefaultTask { try { serverResponse = client."${httpMethod.toLowerCase()}"(params) - slf4jLogger.info "Server Response:" + System.lineSeparator() + serverResponse.getData() - } catch(groovyx.net.http.HttpResponseException e) { + if (responseHandler && responseHandler.maximumNumberOfParameters == 1) { + def parameterType = responseHandler.parameterTypes.first() + if (InputStream.isAssignableFrom(parameterType)) { + responseHandler.call(serverResponse.entity.content) + } else if (String.isAssignableFrom(parameterType)) { + serverResponse.entity.content.withStream { + responseHandler.call(it.text) + } + } else { + responseHandler.call(serverResponse.data) + } + } else { + slf4jLogger.info "Server Response:" + System.lineSeparator() + serverResponse.getData() + } + } catch (groovyx.net.http.HttpResponseException e) { throw new GradleException(e.getResponse().getData().toString(), e) } } diff --git a/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy b/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy index c179c14..d1352b4 100644 --- a/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy +++ b/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy @@ -4,6 +4,8 @@ import groovyx.net.http.AuthConfig import groovyx.net.http.HttpResponseDecorator import groovyx.net.http.RESTClient import org.apache.http.HttpHeaders +import org.apache.http.entity.BasicHttpEntity +import org.apache.tools.ant.filters.StringInputStream import org.gradle.api.InvalidUserDataException import org.gradle.api.Project import org.gradle.api.Task @@ -173,4 +175,49 @@ class RestTaskSpec extends Specification { 'http' | 8080 'https' | 8443 } + + def 'Configure and execute a request with a custom response handler'() { + setup: + def responseCalled = false + + Task task = project.tasks.create(name: 'request', type: RestTask) { + httpMethod = 'post' + uri = 'bob.com' + username = 'username' + password = 'password' + requestContentType = 'requestContentType' + requestBody = 'requestBody' + contentType = 'contentType' + responseHandler = { String responseText -> + responseCalled = (responseText == 'called') + } + } + def mockClient = Mock(RESTClient) + task.client = mockClient + + def mockAuth = Mock(AuthConfig) + + def mockResponse = Mock(HttpResponseDecorator) { + getEntity() >> { + def entity = new BasicHttpEntity() + entity.content = new StringInputStream('called') + entity + } + } + + when: + task.executeRequest() + + then: + 1 * mockClient.setUri('bob.com') + 1 * mockClient.getAuth() >> { mockAuth } + 1 * mockAuth.basic('username', 'password') + 1 * mockClient.post(_ as Map) >> { Map params -> + assert params.body == 'requestBody' + assert params.contentType == 'contentType' + assert params.requestContentType == 'requestContentType' + mockResponse + } + responseCalled + } } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/rest-gradle-plugin.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

