Skip to content

Commit 2a638ae

Browse files
committed
Update
1 parent 3f3cf39 commit 2a638ae

4 files changed

Lines changed: 46 additions & 43 deletions

File tree

README.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
= typeutils
1+
= funclient
22

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package net.igsoft.funclient
2+
3+
import net.igsoft.funclient.model.*
4+
import java.net.http.HttpClient
5+
import java.net.http.HttpRequest
6+
import java.net.http.HttpResponse
7+
8+
//NOTE: Doesn't work with JDK8
9+
@Suppress("unused")
10+
class FunClientJdk11 {
11+
private val client = HttpClient.newHttpClient()
12+
13+
fun execute(request: Request): Response {
14+
val httpRequestBuilder = HttpRequest.newBuilder()
15+
16+
when (request.method) {
17+
Method.GET -> httpRequestBuilder.GET()
18+
Method.POST -> httpRequestBuilder.POST(resolveBody(request))
19+
Method.PUT -> httpRequestBuilder.PUT(resolveBody(request))
20+
Method.DELETE -> httpRequestBuilder.DELETE()
21+
Method.PATCH -> httpRequestBuilder.method("PATCH", resolveBody(request))
22+
Method.HEAD -> httpRequestBuilder.method("HEAD", resolveBody(request))
23+
Method.OPTIONS -> httpRequestBuilder.method("OPTIONS", resolveBody(request))
24+
}
25+
26+
httpRequestBuilder.uri(request.url.toURI())
27+
28+
for (header in request.headers.all.entries) {
29+
for (value in header.value) {
30+
httpRequestBuilder.header(header.key, value)
31+
}
32+
}
33+
34+
val response = client.send(httpRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
35+
36+
return RawResponse(response.statusCode(), Headers(response.headers().map()), StringBody(response.body()))
37+
}
38+
39+
private fun resolveBody(request: Request) = when (request.body) {
40+
is StringBody -> HttpRequest.BodyPublishers.ofString(request.body.string)
41+
is EmptyBody -> HttpRequest.BodyPublishers.ofString("")
42+
else -> TODO()
43+
}
44+
}

src/main/kotlin/net/igsoft/funclient/FunClient_Jdk11.kt

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package net.igsoft.funclient.model
22

3-
enum class Method { GET, POST, PUT, DELETE, HEAD, OPTIONS }
3+
enum class Method { GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH }

0 commit comments

Comments
 (0)