1919import io .fabric8 .kubernetes .client .http .AsyncBody ;
2020import io .fabric8 .kubernetes .client .http .HttpRequest ;
2121import io .fabric8 .kubernetes .client .http .HttpResponse ;
22+ import io .fabric8 .kubernetes .client .http .StandardHttpHeaders ;
2223import io .fabric8 .kubernetes .client .http .StandardHttpRequest ;
24+ import io .fabric8 .kubernetes .client .http .StandardHttpRequest .BodyContent ;
2325import io .vertx .core .Future ;
2426import io .vertx .core .MultiMap ;
2527import io .vertx .core .Vertx ;
3032import io .vertx .core .streams .ReadStream ;
3133
3234import java .io .InputStream ;
33- import java .net .URI ;
3435import java .nio .ByteBuffer ;
3536import java .util .Arrays ;
3637import java .util .LinkedHashMap ;
4041import java .util .concurrent .CompletableFuture ;
4142import java .util .function .Function ;
4243
43- class VertxHttpRequest implements HttpRequest {
44+ class VertxHttpRequest {
45+
46+ private static final class VertxHttpResponse extends StandardHttpHeaders implements HttpResponse <AsyncBody > {
47+ private final AsyncBody result ;
48+ private final HttpClientResponse resp ;
49+ private final HttpRequest request ;
50+
51+ private VertxHttpResponse (AsyncBody result , HttpClientResponse resp , HttpRequest request ) {
52+ super (toHeadersMap (resp .headers ()));
53+ this .result = result ;
54+ this .resp = resp ;
55+ this .request = request ;
56+ }
57+
58+ @ Override
59+ public int code () {
60+ return resp .statusCode ();
61+ }
62+
63+ @ Override
64+ public AsyncBody body () {
65+ return result ;
66+ }
67+
68+ @ Override
69+ public HttpRequest request () {
70+ return request ;
71+ }
72+
73+ @ Override
74+ public Optional <HttpResponse <?>> previousResponse () {
75+ return Optional .empty ();
76+ }
77+ }
4478
4579 final Vertx vertx ;
4680 private final RequestOptions options ;
47- private final StandardHttpRequest . BodyContent body ;
81+ private StandardHttpRequest request ;
4882
49- public VertxHttpRequest (Vertx vertx , RequestOptions options , StandardHttpRequest . BodyContent body ) {
83+ public VertxHttpRequest (Vertx vertx , RequestOptions options , StandardHttpRequest request ) {
5084 this .vertx = vertx ;
5185 this .options = options ;
52- this .body = body ;
53- }
54-
55- @ Override
56- public URI uri () {
57- return URI .create (options .getURI ());
58- }
59-
60- @ Override
61- public String method () {
62- return options .getMethod ().name ();
63- }
64-
65- @ Override
66- public String bodyString () {
67- return body .toString ();
68- }
69-
70- @ Override
71- public List <String > headers (String key ) {
72- return options .getHeaders ().getAll (key );
86+ this .request = request ;
7387 }
7488
7589 public CompletableFuture <HttpResponse <AsyncBody >> consumeBytes (HttpClient client ,
@@ -106,42 +120,11 @@ public void cancel() {
106120 result .done ().completeExceptionally (e );
107121 }
108122 }).endHandler (end -> result .done ().complete (null ));
109- return new HttpResponse <AsyncBody >() {
110-
111- @ Override
112- public List <String > headers (String key ) {
113- return VertxHttpRequest .this .headers ().get (key );
114- }
115-
116- @ Override
117- public Map <String , List <String >> headers () {
118- return VertxHttpRequest .this .headers ();
119- }
120-
121- @ Override
122- public int code () {
123- return resp .statusCode ();
124- }
125-
126- @ Override
127- public AsyncBody body () {
128- return result ;
129- }
130-
131- @ Override
132- public HttpRequest request () {
133- return VertxHttpRequest .this ;
134- }
135-
136- @ Override
137- public Optional <HttpResponse <?>> previousResponse () {
138- return Optional .empty ();
139- }
140-
141- };
123+ return new VertxHttpResponse (result , resp , request );
142124 };
143125 return client .request (options ).compose (request -> {
144126 Future <HttpClientResponse > fut ;
127+ BodyContent body = this .request .body ();
145128 if (body != null ) {
146129 if (body instanceof StandardHttpRequest .StringBodyContent ) {
147130 Buffer buffer = Buffer .buffer (((StandardHttpRequest .StringBodyContent ) body ).getContent ());
@@ -165,12 +148,6 @@ public Optional<HttpResponse<?>> previousResponse() {
165148 }).toCompletionStage ().toCompletableFuture ();
166149 }
167150
168- @ Override
169- public Map <String , List <String >> headers () {
170- MultiMap multiMap = options .getHeaders ();
171- return toHeadersMap (multiMap );
172- }
173-
174151 static Map <String , List <String >> toHeadersMap (MultiMap multiMap ) {
175152 Map <String , List <String >> headers = new LinkedHashMap <>();
176153 multiMap .names ().stream ().forEach (k -> headers .put (k , multiMap .getAll (k )));
0 commit comments