package org.webpieces.http2client.util; import java.util.ArrayList; import java.util.List; import org.webpieces.data.api.DataWrapper; import org.webpieces.data.api.DataWrapperGenerator; import org.webpieces.data.api.DataWrapperGeneratorFactory; import org.webpieces.http2client.api.dto.Http2Request; import com.webpieces.hpack.api.dto.Http2Headers; import com.webpieces.hpack.api.dto.Http2Push; import com.webpieces.http2engine.impl.shared.HeaderSettings; import com.webpieces.http2parser.api.dto.DataFrame; import com.webpieces.http2parser.api.dto.RstStreamFrame; import com.webpieces.http2parser.api.dto.lib.Http2ErrorCode; import com.webpieces.http2parser.api.dto.lib.Http2Header; import com.webpieces.http2parser.api.dto.lib.Http2HeaderName; public class Requests { protected static final DataWrapperGenerator dataGen = DataWrapperGeneratorFactory.createDataWrapperGenerator(); public static HeaderSettings createSomeSettings() { HeaderSettings settings = new HeaderSettings(); settings.setHeaderTableSize(4099); settings.setInitialWindowSize(5009); settings.setMaxConcurrentStreams(1L); settings.setMaxFrameSize(16385); settings.setMaxHeaderListSize(5222); settings.setPushEnabled(true); return settings; } public static Http2Headers createRequest() { return createRequest(true); } static Http2Headers createRequest(boolean eos) { List<Http2Header> headers = new ArrayList<>(); headers.add(new Http2Header(Http2HeaderName.METHOD, "GET")); headers.add(new Http2Header(Http2HeaderName.AUTHORITY, "somehost.com")); headers.add(new Http2Header(Http2HeaderName.PATH, "/")); headers.add(new Http2Header(Http2HeaderName.SCHEME, "http")); headers.add(new Http2Header(Http2HeaderName.HOST, "somehost.com")); headers.add(new Http2Header(Http2HeaderName.ACCEPT, "*/*")); headers.add(new Http2Header(Http2HeaderName.ACCEPT_ENCODING, "gzip, deflate")); headers.add(new Http2Header(Http2HeaderName.USER_AGENT, "webpieces/1.15.0")); Http2Headers request = new Http2Headers(headers); request.setEndOfStream(eos); return request; } public static Http2Headers createResponse(int streamId) { List<Http2Header> headers = new ArrayList<>(); headers.add(new Http2Header(Http2HeaderName.SERVER, "me")); Http2Headers response = new Http2Headers(headers); response.setEndOfStream(false); response.setStreamId(streamId); return response; } public static Http2Headers createEosResponse(int streamId) { List<Http2Header> headers = new ArrayList<>(); headers.add(new Http2Header(Http2HeaderName.SERVER, "me")); Http2Headers response = new Http2Headers(headers); response.setEndOfStream(true); response.setStreamId(streamId); return response; } public static Http2Push createPush(int streamId) { Http2Push push = new Http2Push(); push.setStreamId(streamId); push.setPromisedStreamId(2); push.addHeader(new Http2Header(Http2HeaderName.SERVER, "me")); return push; } public static RstStreamFrame createReset(int streamId) { return new RstStreamFrame(streamId, Http2ErrorCode.CANCEL); } public static Http2Request createHttp2Request() { Http2Request req = new Http2Request(); req.setHeaders(createRequest()); req.setPayload(dataGen.wrapByteArray(new byte[] { 3, 4 })); return req; } public static DataFrame createData(int streamId) { DataFrame data = new DataFrame(streamId, true); DataWrapper wrapByteArray = dataGen.wrapByteArray(new byte[] {2, 3}); data.setData(wrapByteArray); return data; } }