@Override public okhttp3.Response intercept(Chain chain) throws IOException { okhttp3.Request request = chain.request(); if (isRunning && !isHostIgnored(request)) { if (!tape.isPresent()) { return buildResponse(request, 403, "No tape"); } else { //noinspection ConstantConditions Tape tape = this.tape.get(); Request recordedRequest = OkHttpRequestAdapter.adapt(request); if (tape.isReadable() && tape.seek(recordedRequest)) { return replayResponse(request, tape, recordedRequest); } else { LOG.warning(String.format("no matching request found on tape '%s' for request %s %s", tape.getName(), request.method(), request.url().toString())); if (tape.getMode() == TapeMode.READ_ONLY_QUIET) { return buildResponse(request, 404, "No matching response"); } // If the tape isn't writeable, abandon this request. This prevents us from // talking to the server for non-mutable tapes. if (!tape.isWritable()) { throwTapeNotWritable(request.method() + " " + request.url().toString()); } // Continue the request and attempt to write the response to the tape. return recordResponse(request, tape, recordedRequest, chain.proceed(request)); } } } else { return chain.proceed(request); } }
@Override public okhttp3.Response intercept(Chain chain) throws IOException { okhttp3.Request request = chain.request(); if (isRunning && !isHostIgnored(request)) { if (!tape.isPresent()) { return new okhttp3.Response.Builder() //