All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.gesellix.docker.client.container.DockerResponseHandler.groovy Maven / Gradle / Ivy

package de.gesellix.docker.client.container

import de.gesellix.docker.client.DockerClientException
import de.gesellix.docker.engine.EngineResponse
import groovy.util.logging.Slf4j

@Slf4j
class DockerResponseHandler {

  def ensureSuccessfulResponse(EngineResponse response, Throwable context) {
    if (!response || !response.status?.success || hasError(response)) {
      logError(response)
      throw new DockerClientException(context, response)
    }
  }

  def logError(response) {
    if (response?.content instanceof String) {
      log.error("request failed: '${response?.content}'")
    }
    else {
      log.error("request failed: ${getErrors(response)}")
    }
  }

  def hasError(response) {
    return getErrors(response).size()
  }

  def getErrors(response) {
    if (!response?.content) {
      return []
    }

    def content = response.content
    if (!response.mimeType || response.mimeType == "application/json") {
      def foundErrors = []
      if (content instanceof List) {
        foundErrors.addAll content.findAll { it.error }
      }
      else if (content instanceof Map) {
        if (content.error) {
          foundErrors << content.error
        }
        else if (content.message) {
          foundErrors << content.message
        }
      }
      else {
        log.debug("won't search for errors in ${content.getClass()}")
      }
      return foundErrors
    }
    return []
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy