1 /*
2  *  Licensed to the Apache Software Foundation (ASF) under one or more
3  *  contributor license agreements.  See the NOTICE file distributed with
4  *  this work for additional information regarding copyright ownership.
5  *  The ASF licenses this file to You under the Apache License, Version 2.0
6  *  (the "License"); you may not use this file except in compliance with
7  *  the License.  You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  */

17 package okhttp3.internal.connection;
18
19 import java.io.IOException;
20 import okhttp3.Interceptor;
21 import okhttp3.OkHttpClient;
22 import okhttp3.Request;
23 import okhttp3.Response;
24 import okhttp3.internal.http.RealInterceptorChain;
25
26 /** Opens a connection to the target server and proceeds to the next interceptor. */
27 public final class ConnectInterceptor implements Interceptor {
28   public final OkHttpClient client;
29
30   public ConnectInterceptor(OkHttpClient client) {
31     this.client = client;
32   }
33
34   @Override public Response intercept(Chain chain) throws IOException {
35     RealInterceptorChain realChain = (RealInterceptorChain) chain;
36     Request request = realChain.request();
37     Transmitter transmitter = realChain.transmitter();
38
39     // We need the network to satisfy this request. Possibly for validating a conditional GET.
40     boolean doExtensiveHealthChecks = !request.method().equals("GET");
41     Exchange exchange = transmitter.newExchange(chain, doExtensiveHealthChecks);
42
43     return realChain.proceed(request, transmitter, exchange);
44   }
45 }
46