X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=dist%2Fhttp-resources%2F2.0.0%2Fxref-test%2Fde%2Fjuplo%2Fhttpresources%2FTestUtil.html;fp=dist%2Fhttp-resources%2F2.0.0%2Fxref-test%2Fde%2Fjuplo%2Fhttpresources%2FTestUtil.html;h=dbd85a08b8649492b20a939fb61383d21faabd90;hb=96ec104e2974d001e9bc82c3af8b21029b2042d4;hp=0000000000000000000000000000000000000000;hpb=de1fa457a1c69c673d4dd5c0a2c9af568f74ea12;p=website diff --git a/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/TestUtil.html b/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/TestUtil.html new file mode 100644 index 00000000..dbd85a08 --- /dev/null +++ b/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/TestUtil.html @@ -0,0 +1,264 @@ + + +
++1 package de.juplo.httpresources; +2 +3 +4 import java.io.ByteArrayInputStream; +5 import java.io.ByteArrayOutputStream; +6 import java.io.IOException; +7 import java.net.URISyntaxException; +8 import java.net.URL; +9 import java.nio.charset.Charset; +10 import java.nio.file.Files; +11 import java.nio.file.Paths; +12 import java.util.Date; +13 import java.util.Scanner; +14 import java.util.stream.Collectors; +15 import java.util.zip.GZIPOutputStream; +16 import org.apache.http.Header; +17 import org.apache.http.HttpEntity; +18 import org.apache.http.HttpStatus; +19 import org.apache.http.ProtocolVersion; +20 import org.apache.http.StatusLine; +21 import org.apache.http.client.utils.DateUtils; +22 import org.apache.http.entity.ByteArrayEntity; +23 import org.apache.http.entity.StringEntity; +24 import org.apache.http.message.BasicHeader; +25 import org.apache.http.message.BasicStatusLine; +26 import org.slf4j.Logger; +27 import org.slf4j.LoggerFactory; +28 import org.springframework.core.io.Resource; +29 import org.springframework.http.HttpHeaders; +30 import org.springframework.http.MediaType; +31 +32 +33 /** +34 * @author Kai Moritz +35 */ +36 public class TestUtil +37 { +38 private final static Logger LOG = +39 LoggerFactory.getLogger(TestUtil.class); +40 +41 final static long MAX_AGE = 600l; +42 final static int MIN_TTL = 666000; +43 +44 final static String STR_THEN = "Sat, 29 Oct 1994 19:43:31 GMT"; +45 final static String STR_EXPIRED = "Mon, 14 Nov 1994 22:22:22 GMT"; +46 final static String STR_SEND = "Tue, 15 Nov 1994 12:45:25 GMT"; +47 final static String STR_NOW = "Tue, 15 Nov 1994 12:45:26 GMT"; +48 final static String STR_INBETWEEN = "Thu, 17 Nov 1994 12:45:26 GMT"; +49 final static String STR_FEATURE = "Thu, 01 Dec 1994 16:00:00 GMT"; +50 +51 final static Charset UTF8; +52 +53 final static String STR_CONTENT = "hellö wörld!"; +54 final static byte[] CONTENT; +55 final static byte[] CONTENT_GZIPPED; +56 final static String STR_CONTENT_MODIFIED = "Hellö again..."; +57 final static byte[] CONTENT_MODIFIED; +58 final static String STR_CONTENT_TYPE_HTML = "text/html;charset=UTF-8"; +59 final static String STR_CONTENT_TYPE_CSS = "text/css"; +60 final static String STR_CONTENT_ENCODING = "gzip"; +61 final static String STR_ETAG = "F345AB884"; +62 final static String STR_ETAG_MODIFIED = "NewNewNew"; +63 final static String STR_NO_CACHE = "no-cache"; +64 final static String STR_NO_CACHE_QUALIFIED = "max-age=" + MAX_AGE + ", no-cache=\"Cookie\""; +65 final static String STR_MAX_AGE = "public, max-age=" + MAX_AGE; +66 final static String STR_MAX_AGE_0 = "public, max-age=0"; +67 final static String STR_PRIVATE = "private, no-store"; +68 final static String STR_REVALIDATE = STR_MAX_AGE + ", must-revalidate"; +69 +70 final static HttpEntity BODY; +71 final static HttpEntity BODY_GZIPPED; +72 final static HttpEntity BODY_MODIFIED; +73 final static ProtocolVersion PROTOCOL = new ProtocolVersion("HTTP", 1, 1); +74 final static StatusLine OK = new BasicStatusLine(PROTOCOL, HttpStatus.SC_OK, "OK"); +75 final static StatusLine NOT_MODIFIED = new BasicStatusLine(PROTOCOL, HttpStatus.SC_NOT_MODIFIED, "NOT MODIFIED"); +76 final static StatusLine NOT_FOUND = new BasicStatusLine(PROTOCOL, HttpStatus.SC_NOT_FOUND, "NOT FOUND"); +77 final static StatusLine SERVER_ERROR = new BasicStatusLine(PROTOCOL, HttpStatus.SC_INTERNAL_SERVER_ERROR, "INTERNAL SERVER ERROR"); +78 final static Date THEN, EXPIRED, SEND, NOW, INBETWEEN, FEATURE; +79 final static long LONG_THEN, LONG_EXPIRED, LONG_SEND, LONG_NOW, LONG_INBETWEEN, LONG_FEATURE; +80 +81 final static MediaType MIME_TYPE_CONTENT_TYPE_HTML = MediaType.valueOf(STR_CONTENT_TYPE_HTML); +82 +83 final static Header CONTENT_TYPE_HTML = new BasicHeader(HttpHeaders.CONTENT_TYPE, STR_CONTENT_TYPE_HTML); +84 final static Header CONTENT_TYPE_CSS = new BasicHeader(HttpHeaders.CONTENT_TYPE, STR_CONTENT_TYPE_CSS); +85 final static Header CONTENT_ENCODING = new BasicHeader(HttpHeaders.CONTENT_ENCODING, STR_CONTENT_ENCODING); +86 final static Header DATE = new BasicHeader(HttpHeaders.DATE, STR_SEND); +87 final static Header DATE_MODIFIED = new BasicHeader(HttpHeaders.DATE, STR_NOW); +88 final static Header LAST_MODIFIED = new BasicHeader(HttpHeaders.LAST_MODIFIED, STR_THEN); +89 final static Header LAST_MODIFIED_MODIFIED = new BasicHeader(HttpHeaders.LAST_MODIFIED, STR_INBETWEEN); +90 final static Header ETAG = new BasicHeader(HttpHeaders.ETAG, STR_ETAG); +91 final static Header ETAG_MODIFIED = new BasicHeader(HttpHeaders.ETAG, STR_ETAG_MODIFIED); +92 final static Header EXPIRES_VALID = new BasicHeader(HttpHeaders.EXPIRES, STR_FEATURE); +93 final static Header EXPIRES_INVALID = new BasicHeader(HttpHeaders.EXPIRES, "0"); +94 final static Header CACHE_CONTROL_NO_CACHE = new BasicHeader(HttpHeaders.CACHE_CONTROL, STR_NO_CACHE); +95 final static Header CACHE_CONTROL_NO_CACHE_QUALIFIED = new BasicHeader(HttpHeaders.CACHE_CONTROL, STR_NO_CACHE_QUALIFIED); +96 final static Header CACHE_CONTROL_MAX_AGE = new BasicHeader(HttpHeaders.CACHE_CONTROL, STR_MAX_AGE); +97 final static Header CACHE_CONTROL_MAX_AGE_0 = new BasicHeader(HttpHeaders.CACHE_CONTROL, STR_MAX_AGE_0); +98 final static Header CACHE_CONTROL_PRIVATE = new BasicHeader(HttpHeaders.CACHE_CONTROL, STR_PRIVATE); +99 final static Header CACHE_CONTROL_REVALIDATE = new BasicHeader(HttpHeaders.CACHE_CONTROL, STR_REVALIDATE); +100 +101 final static HttpHeaders HEADERS_CONTENT_TYPE_HTML; +102 +103 // The dummy-variants are used to distinguish the result from the old state +104 // in cases, where nothing has changed... +105 final static HttpData DATA_NOT_EXPIRED; +106 final static HttpData DATA_NOT_EXPIRED_DUMMY; +107 final static HttpData DATA_NOT_EXPIRED_REVALIDATION_REQUIRED; +108 final static HttpData DATA_EXPIRED; +109 final static HttpData DATA_EXPIRED_DUMMY; +110 final static HttpData DATA_UPDATED; +111 final static HttpData DATA_NOT_FOUND; +112 +113 +114 static +115 { +116 try +117 { +118 UTF8 = Charset.forName("UTF-8"); +119 +120 BODY = new StringEntity(STR_CONTENT, UTF8); +121 BODY_MODIFIED = new StringEntity(STR_CONTENT_MODIFIED, UTF8); +122 +123 CONTENT = STR_CONTENT.getBytes(UTF8); +124 CONTENT_GZIPPED = TestUtil.gzip(CONTENT); +125 BODY_GZIPPED = new ByteArrayEntity(CONTENT_GZIPPED); +126 CONTENT_MODIFIED = STR_CONTENT_MODIFIED.getBytes(UTF8); +127 } +128 catch (IOException e) +129 { +130 throw new RuntimeException(e); +131 } +132 +133 THEN = DateUtils.parseDate(STR_THEN); +134 EXPIRED = DateUtils.parseDate(STR_EXPIRED); +135 SEND = DateUtils.parseDate(STR_SEND); +136 NOW = DateUtils.parseDate(STR_NOW); +137 INBETWEEN = DateUtils.parseDate(STR_INBETWEEN); +138 FEATURE = DateUtils.parseDate(STR_FEATURE); +139 +140 LONG_THEN = THEN.getTime(); +141 LONG_EXPIRED = EXPIRED.getTime(); +142 LONG_SEND = SEND.getTime(); +143 LONG_NOW = NOW.getTime(); +144 LONG_INBETWEEN = INBETWEEN.getTime(); +145 LONG_FEATURE = FEATURE.getTime(); +146 +147 +148 HEADERS_CONTENT_TYPE_HTML = new HttpHeaders(); +149 HEADERS_CONTENT_TYPE_HTML.setContentType(MIME_TYPE_CONTENT_TYPE_HTML); +150 +151 DATA_NOT_EXPIRED_REVALIDATION_REQUIRED = +152 new HttpData( +153 STR_CONTENT.getBytes(), +154 HEADERS_CONTENT_TYPE_HTML, +155 true, +156 LONG_THEN, +157 LONG_NOW + MAX_AGE * 1000 - 2000, +158 STR_ETAG); +159 +160 DATA_NOT_EXPIRED = +161 new HttpData( +162 STR_CONTENT.getBytes(), +163 HEADERS_CONTENT_TYPE_HTML, +164 false, +165 LONG_THEN, +166 LONG_NOW + MAX_AGE * 1000 - 2000, +167 STR_ETAG); +168 +169 DATA_NOT_EXPIRED_DUMMY = +170 new HttpData( +171 STR_CONTENT.getBytes(), +172 HEADERS_CONTENT_TYPE_HTML, +173 false, +174 LONG_THEN, +175 LONG_NOW + MAX_AGE * 1000 - 2000, +176 STR_ETAG); +177 +178 DATA_EXPIRED = +179 new HttpData( +180 STR_CONTENT.getBytes(), +181 HEADERS_CONTENT_TYPE_HTML, +182 false, +183 LONG_THEN, +184 LONG_EXPIRED, +185 STR_ETAG); +186 +187 DATA_EXPIRED_DUMMY = +188 new HttpData( +189 STR_CONTENT.getBytes(), +190 HEADERS_CONTENT_TYPE_HTML, +191 false, +192 LONG_THEN, +193 LONG_EXPIRED, +194 STR_ETAG); +195 +196 DATA_UPDATED = +197 new HttpData( +198 STR_CONTENT_MODIFIED.getBytes(), +199 HEADERS_CONTENT_TYPE_HTML, +200 false, +201 LONG_INBETWEEN, +202 LONG_NOW + MAX_AGE * 1000, +203 STR_ETAG_MODIFIED); +204 +205 DATA_NOT_FOUND = +206 new HttpData( +207 null, +208 new HttpHeaders(), +209 false, +210 0, +211 LONG_NOW - 2000, +212 null); +213 } +214 +215 +216 static byte[] gzip(byte[] input) throws IOException +217 { +218 try (ByteArrayInputStream bais = new ByteArrayInputStream(input)) +219 { +220 ByteArrayOutputStream baos = new ByteArrayOutputStream(); +221 GZIPOutputStream gzos = new GZIPOutputStream(baos); +222 byte[] data = new byte[1024]; +223 int read; +224 while ((read = bais.read(data)) > -1) +225 gzos.write(data, 0, read); +226 gzos.close(); +227 baos.close(); +228 return baos.toByteArray(); +229 } +230 } +231 +232 +233 static StringEntity body(String resource) throws URISyntaxException, IOException +234 { +235 return new StringEntity(read(resource)); +236 } +237 +238 static String read(String resource) throws URISyntaxException, IOException +239 { +240 URL url = TestUtil.class.getResource(resource); +241 if (url == null) +242 throw new IllegalArgumentException("Cannot find " + resource); +243 return Files.readAllLines(Paths.get(url.toURI())).stream().collect(Collectors.joining("\n")); +244 } +245 +246 static String read(Resource resource) throws URISyntaxException, IOException +247 { +248 Scanner s = new Scanner(resource.getInputStream()).useDelimiter("\\A"); +249 return s.hasNext() ? s.next() : ""; +250 } +251 } ++