1 package com.github.davidmoten.aws.lw.client; 2 3 import java.io.IOException; 4 import java.net.URL; 5 import java.nio.charset.StandardCharsets; 6 import java.util.Collections; 7 import java.util.Map; 8 9 import com.github.davidmoten.aws.lw.client.internal.util.Util; 10 11 public final class HttpClientTesting implements HttpClient { 12 13 public static final HttpClientTesting INSTANCE = new HttpClientTesting(false); 14 public static final HttpClientTesting THROWING = new HttpClientTesting(true); 15 16 private final boolean throwing; 17 public URL endpointUrl; 18 public String httpMethod; 19 public Map<String, String> headers; 20 public byte[] requestBody; 21 public int connectTimeoutMs; 22 public int readTimeoutMs; 23 24 private HttpClientTesting(boolean throwing) { 25 this.throwing = throwing; 26 } 27 28 @Override 29 public ResponseInputStream request(URL endpointUrl, String httpMethod, 30 Map<String, String> headers, byte[] requestBody, int connectTimeoutMs, 31 int readTimeoutMs) throws IOException { 32 this.endpointUrl = endpointUrl; 33 this.httpMethod = httpMethod; 34 this.headers = headers; 35 this.requestBody = requestBody; 36 this.connectTimeoutMs = connectTimeoutMs; 37 this.readTimeoutMs = readTimeoutMs; 38 if (throwing) { 39 throw new IOException("bingo"); 40 } else { 41 return new ResponseInputStream(() -> {}, 200, Collections.emptyMap(), 42 Util.emptyInputStream()); 43 } 44 } 45 46 @Override 47 public String toString() { 48 return "HttpClientTesting [\n endpointUrl=" + endpointUrl + "\n httpMethod=" + httpMethod 49 + "\n headers=" + headers + "\n requestBody=" 50 + new String(requestBody, StandardCharsets.UTF_8) + "\n connectTimeoutMs=" 51 + connectTimeoutMs + "\n readTimeoutMs=" + readTimeoutMs + "\n]"; 52 } 53 54 public String requestBodyString() { 55 return new String(requestBody, StandardCharsets.UTF_8); 56 } 57 58 }