Skip to content

Commit

Permalink
option disconnectAfterHttpPost
Browse files Browse the repository at this point in the history
  • Loading branch information
gmuth committed Feb 20, 2024
1 parent b4903ee commit b6ed435
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions src/main/kotlin/de/gmuth/ipp/client/IppClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ open class IppClient(val config: IppConfig = IppConfig()) : IppExchange {
var saveMessagesDirectory = File("ipp-messages")
var onExceptionSaveMessages: Boolean = false
var throwWhenNotSuccessful: Boolean = true
var disconnectAfterHttpPost: Boolean = false

fun basicAuth(user: String, password: String) {
config.userName = user
Expand Down Expand Up @@ -88,7 +89,7 @@ open class IppClient(val config: IppConfig = IppConfig()) : IppExchange {
response.saveText(file("res.txt"))
}
responseInterceptor?.invoke(request, response)
validateResponse(request, response)
validateIppResponse(request, response)
return response
}

Expand All @@ -103,20 +104,24 @@ open class IppClient(val config: IppConfig = IppConfig()) : IppExchange {
if (!config.verifySSLHostname) hostnameVerifier = HostnameVerifier { _, _ -> true }
}
configure(chunked = request.hasDocument())
request.write(outputStream)
val responseContentStream = try {
validateResponse(request, inputStream)
inputStream
} catch (ioException: IOException) {
validateResponse(request, errorStream, ioException)
errorStream
try {
request.write(outputStream)
val responseContentStream = try {
validateHttpResponse(request, inputStream)
inputStream
} catch (ioException: IOException) {
validateHttpResponse(request, errorStream, ioException)
errorStream
}
return decodeContentStream(request, responseCode, responseContentStream)
.apply { httpServer = headerFields["Server"]?.first() }
} finally {
if (disconnectAfterHttpPost) disconnect()
}
return decodeContentStream(request, responseCode, responseContentStream)
.apply { httpServer = headerFields["Server"]?.first() }
}
}

private fun validateResponse(request: IppRequest, response: IppResponse) = response.run {
private fun validateIppResponse(request: IppRequest, response: IppResponse) = response.run {
if (status == ClientErrorBadRequest) {
request.log(logger, SEVERE, prefix = "REQUEST: ")
response.log(logger, SEVERE, prefix = "RESPONSE: ")
Expand Down Expand Up @@ -151,7 +156,7 @@ open class IppClient(val config: IppConfig = IppConfig()) : IppExchange {
setRequestProperty("Accept-Encoding", "identity") // avoid 'gzip' with Androids OkHttp
}

private fun HttpURLConnection.validateResponse(
private fun HttpURLConnection.validateHttpResponse(
request: IppRequest,
contentStream: InputStream?,
cause: Exception? = null
Expand Down

0 comments on commit b6ed435

Please sign in to comment.