@Override public @Nullable CacheRequest put( URI uri, URLConnection urlConnection) throws IOException { Response okResponse = JavaApiConverter.createOkResponseForCachePut(uri, urlConnection); if (okResponse == null) { // The URLConnection is not cacheable or could not be converted. Stop. return null; } okhttp3.internal.cache.CacheRequest okCacheRequest = delegate.internalCache.put(okResponse); if (okCacheRequest == null) { return null; } return JavaApiConverter.createJavaCacheRequest(okCacheRequest); }
@Override public CacheResponse get(URI uri, String requestMethod, Map<String, List<String>> requestHeaders) throws IOException { Request okRequest = JavaApiConverter.createOkRequest(uri, requestMethod, requestHeaders); Response okResponse = delegate.internalCache.get(okRequest); if (okResponse == null) { return null; } return JavaApiConverter.createJavaCacheResponse(okResponse); }
@Override public CacheRequest put(Response response) throws IOException { URI uri = response.request().url().uri(); HttpURLConnection connection = JavaApiConverter.createJavaUrlConnectionForCachePut(response); final java.net.CacheRequest request = delegate.put(uri, connection); if (request == null) { return null; } return new CacheRequest() { @Override public Sink body() throws IOException { OutputStream body = request.getBody(); return body != null ? Okio.sink(body) : null; } @Override public void abort() { request.abort(); } }; }
Headers responseHeaders = createHeaders(urlConnection.getHeaderFields()); Headers varyHeaders = varyHeaders(urlConnection, responseHeaders); if (varyHeaders == null) { return null; StatusLine statusLine = StatusLine.parse(extractStatusLine(httpUrlConnection)); okResponseBuilder.protocol(statusLine.protocol); okResponseBuilder.code(statusLine.code); Headers okHeaders = extractOkResponseHeaders(httpUrlConnection, okResponseBuilder); okResponseBuilder.headers(okHeaders); ResponseBody okBody = createOkBody(urlConnection); okResponseBuilder.body(okBody); CipherSuite cipherSuite = CipherSuite.forJavaName(cipherSuiteString); Handshake handshake = Handshake.get(TlsVersion.SSL_3_0, cipherSuite, nullSafeImmutableList(peerCertificates), nullSafeImmutableList(localCertificates)); okResponseBuilder.handshake(handshake);
Headers responseHeaders = createHeaders(javaResponse.getHeaders()); Headers varyHeaders; if (HttpHeaders.hasVaryAll(responseHeaders)) { StatusLine statusLine = StatusLine.parse(extractStatusLine(javaResponse)); okResponseBuilder.protocol(statusLine.protocol); okResponseBuilder.code(statusLine.code); Headers okHeaders = extractOkHeaders(javaResponse, okResponseBuilder); okResponseBuilder.headers(okHeaders); ResponseBody okBody = createOkBody(okHeaders, javaResponse); okResponseBuilder.body(okBody);
/** * Extracts OkHttp headers from the supplied {@link java.net.HttpURLConnection}. Only real headers * are extracted. See {@link #extractStatusLine(java.net.HttpURLConnection)}. */ private static Headers extractOkResponseHeaders( HttpURLConnection httpUrlConnection, Response.Builder okResponseBuilder) { Map<String, List<String>> javaResponseHeaders = httpUrlConnection.getHeaderFields(); return extractOkHeaders(javaResponseHeaders, okResponseBuilder); }
@Override public Response get(Request request) throws IOException { CacheResponse javaResponse = getJavaCachedResponse(request); if (javaResponse == null) { return null; } return JavaApiConverter.createOkResponseForCacheGet(request, javaResponse); }
/** * Returns the {@link CacheResponse} from the delegate by converting the OkHttp {@link Request} * into the arguments required by the {@link ResponseCache}. */ private CacheResponse getJavaCachedResponse(Request request) throws IOException { Map<String, List<String>> headers = JavaApiConverter.extractJavaHeaders(request); return delegate.get(request.url().uri(), request.method(), headers); } }
Headers responseHeaders = createHeaders(urlConnection.getHeaderFields()); Headers varyHeaders = varyHeaders(urlConnection, responseHeaders); if (varyHeaders == null) { return null; StatusLine statusLine = StatusLine.parse(extractStatusLine(httpUrlConnection)); okResponseBuilder.protocol(statusLine.protocol); okResponseBuilder.code(statusLine.code); Headers okHeaders = extractOkResponseHeaders(httpUrlConnection, okResponseBuilder); okResponseBuilder.headers(okHeaders); ResponseBody okBody = createOkBody(urlConnection); okResponseBuilder.body(okBody); CipherSuite cipherSuite = CipherSuite.forJavaName(cipherSuiteString); Handshake handshake = Handshake.get(TlsVersion.SSL_3_0, cipherSuite, nullSafeImmutableList(peerCertificates), nullSafeImmutableList(localCertificates)); okResponseBuilder.handshake(handshake);
Headers responseHeaders = createHeaders(javaResponse.getHeaders()); Headers varyHeaders; if (HttpHeaders.hasVaryAll(responseHeaders)) { StatusLine statusLine = StatusLine.parse(extractStatusLine(javaResponse)); okResponseBuilder.protocol(statusLine.protocol); okResponseBuilder.code(statusLine.code); Headers okHeaders = extractOkHeaders(javaResponse, okResponseBuilder); okResponseBuilder.headers(okHeaders); ResponseBody okBody = createOkBody(okHeaders, javaResponse); okResponseBuilder.body(okBody);
/** * Extracts OkHttp headers from the supplied {@link java.net.CacheResponse}. Only real headers are * extracted. See {@link #extractStatusLine(java.net.CacheResponse)}. */ private static Headers extractOkHeaders( CacheResponse javaResponse, Response.Builder okResponseBuilder) throws IOException { Map<String, List<String>> javaResponseHeaders = javaResponse.getHeaders(); return extractOkHeaders(javaResponseHeaders, okResponseBuilder); }
@Override public Response get(Request request) throws IOException { CacheResponse javaResponse = getJavaCachedResponse(request); if (javaResponse == null) { return null; } return JavaApiConverter.createOkResponseForCacheGet(request, javaResponse); }
/** * Returns the {@link CacheResponse} from the delegate by converting the OkHttp {@link Request} * into the arguments required by the {@link ResponseCache}. */ private CacheResponse getJavaCachedResponse(Request request) throws IOException { Map<String, List<String>> headers = JavaApiConverter.extractJavaHeaders(request); return delegate.get(request.url().uri(), request.method(), headers); } }
@Override public @Nullable CacheRequest put( URI uri, URLConnection urlConnection) throws IOException { Response okResponse = JavaApiConverter.createOkResponseForCachePut(uri, urlConnection); if (okResponse == null) { // The URLConnection is not cacheable or could not be converted. Stop. return null; } okhttp3.internal.cache.CacheRequest okCacheRequest = delegate.internalCache.put(okResponse); if (okCacheRequest == null) { return null; } return JavaApiConverter.createJavaCacheRequest(okCacheRequest); }
@Override public CacheResponse get(URI uri, String requestMethod, Map<String, List<String>> requestHeaders) throws IOException { Request okRequest = JavaApiConverter.createOkRequest(uri, requestMethod, requestHeaders); Response okResponse = delegate.internalCache.get(okRequest); if (okResponse == null) { return null; } return JavaApiConverter.createJavaCacheResponse(okResponse); }
/** * Creates an OkHttp {@link Request} from the supplied information. * * <p>This method allows a {@code null} value for {@code requestHeaders} for situations where a * connection is already connected and access to the headers has been lost. See {@link * java.net.HttpURLConnection#getRequestProperties()} for details. */ public static Request createOkRequest( URI uri, String requestMethod, Map<String, List<String>> requestHeaders) { // OkHttp's Call API requires a placeholder body; the real body will be streamed separately. RequestBody placeholderBody = HttpMethod.requiresRequestBody(requestMethod) ? Util.EMPTY_REQUEST : null; Request.Builder builder = new Request.Builder() .url(uri.toString()) .method(requestMethod, placeholderBody); if (requestHeaders != null) { Headers headers = extractOkHeaders(requestHeaders, null); builder.headers(headers); } return builder.build(); }
@Override public CacheRequest put(Response response) throws IOException { URI uri = response.request().url().uri(); HttpURLConnection connection = JavaApiConverter.createJavaUrlConnectionForCachePut(response); final java.net.CacheRequest request = delegate.put(uri, connection); if (request == null) { return null; } return new CacheRequest() { @Override public Sink body() throws IOException { OutputStream body = request.getBody(); return body != null ? Okio.sink(body) : null; } @Override public void abort() { request.abort(); } }; }
/** * Extracts OkHttp headers from the supplied {@link java.net.HttpURLConnection}. Only real headers * are extracted. See {@link #extractStatusLine(java.net.HttpURLConnection)}. */ private static Headers extractOkResponseHeaders( HttpURLConnection httpUrlConnection, Response.Builder okResponseBuilder) { Map<String, List<String>> javaResponseHeaders = httpUrlConnection.getHeaderFields(); return extractOkHeaders(javaResponseHeaders, okResponseBuilder); }
/** * Extracts OkHttp headers from the supplied {@link java.net.CacheResponse}. Only real headers are * extracted. See {@link #extractStatusLine(java.net.CacheResponse)}. */ private static Headers extractOkHeaders( CacheResponse javaResponse, Response.Builder okResponseBuilder) throws IOException { Map<String, List<String>> javaResponseHeaders = javaResponse.getHeaders(); return extractOkHeaders(javaResponseHeaders, okResponseBuilder); }
/** * Creates an OkHttp {@link Request} from the supplied information. * * <p>This method allows a {@code null} value for {@code requestHeaders} for situations where a * connection is already connected and access to the headers has been lost. See {@link * java.net.HttpURLConnection#getRequestProperties()} for details. */ public static Request createOkRequest( URI uri, String requestMethod, Map<String, List<String>> requestHeaders) { // OkHttp's Call API requires a placeholder body; the real body will be streamed separately. RequestBody placeholderBody = HttpMethod.requiresRequestBody(requestMethod) ? Util.EMPTY_REQUEST : null; Request.Builder builder = new Request.Builder() .url(uri.toString()) .method(requestMethod, placeholderBody); if (requestHeaders != null) { Headers headers = extractOkHeaders(requestHeaders, null); builder.headers(headers); } return builder.build(); }