package org.webpieces.http2client.integ;
import java.net.InetSocketAddress;
import java.util.concurrent.CompletableFuture;
import org.webpieces.http2client.api.Http2Socket;
import org.webpieces.util.logging.Logger;
import org.webpieces.util.logging.LoggerFactory;
import com.webpieces.hpack.api.dto.Http2Headers;
import com.webpieces.http2engine.api.client.Http2ResponseListener;
import com.webpieces.http2engine.api.client.PushPromiseListener;
import com.webpieces.http2parser.api.dto.lib.PartialStream;
public class IntegColoradoEdu {
private static final Logger log = LoggerFactory.getLogger(IntegColoradoEdu.class);
public static void main(String[] args) throws InterruptedException {
boolean isHttp = true;
String host = "www.colorado.edu";
int port = 443;
if(isHttp)
port = 80;
Http2Headers req = createRequest(host);
log.info("starting socket");
ChunkedResponseListener listener = new ChunkedResponseListener();
InetSocketAddress addr = new InetSocketAddress(host, port);
Http2Socket socket = IntegSingleRequest.createHttpClient("oneTimerHttp2Socket", isHttp, addr);
socket
.connect(addr)
.thenAccept(socet -> socket.send(req, listener))
.exceptionally(e -> reportException(socket, e));
Thread.sleep(100000);
}
private static Void reportException(Http2Socket socket, Throwable e) {
log.error("exception on socket="+socket, e);
return null;
}
private static class ChunkedResponseListener implements Http2ResponseListener, PushPromiseListener {
@Override
public CompletableFuture<Void> incomingPartialResponse(PartialStream response) {
log.info("incoming part of response="+response);
return CompletableFuture.completedFuture(null);
}
@Override
public PushPromiseListener newIncomingPush(int streamId) {
return this;
}
@Override
public CompletableFuture<Void> incomingPushPromise(PartialStream response) {
log.info("incoming push promise");
return CompletableFuture.completedFuture(null);
}
}
private static Http2Headers createRequest(String host) {
// GET / HTTP/1.1
// Host: www.colorado.edu
// User-Agent: curl/7.43.0
// Accept: */*
//
// HttpRequestLine requestLine = new HttpRequestLine();
// requestLine.setMethod(KnownHttpMethod.GET);
// requestLine.setUri(new HttpUri("/"));
//
// HttpRequest req = new HttpRequest();
// req.setRequestLine(requestLine);
// req.addHeader(new Header(KnownHeaderName.HOST, host));
// req.addHeader(new Header(KnownHeaderName.ACCEPT, "*/*"));
// req.addHeader(new Header(KnownHeaderName.USER_AGENT, "webpieces/0.9"));
return null;
}
}