1a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath/*
2a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * Copyright (C) 2013 Square, Inc.
3a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath *
4a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * Licensed under the Apache License, Version 2.0 (the "License");
5a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * you may not use this file except in compliance with the License.
6a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * You may obtain a copy of the License at
7a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath *
8a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath *      http://www.apache.org/licenses/LICENSE-2.0
9a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath *
10a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * Unless required by applicable law or agreed to in writing, software
11a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS,
12a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * See the License for the specific language governing permissions and
14a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * limitations under the License.
15a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath */
16a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamathpackage com.squareup.okhttp;
17a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
18a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath/**
19a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath * A failure attempting to retrieve an HTTP response.
20a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath */
213c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerpublic final class Failure {
22a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  private final Request request;
23a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  private final Throwable exception;
24a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
25a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  private Failure(Builder builder) {
26a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    this.request = builder.request;
27a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    this.exception = builder.exception;
28a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  }
29a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
30a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  public Request request() {
31a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    return request;
32a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  }
33a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
34a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  public Throwable exception() {
35a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    return exception;
36a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  }
37a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
38a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  public static class Builder {
39a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    private Request request;
40a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    private Throwable exception;
41a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
42a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    public Builder request(Request request) {
43a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath      this.request = request;
44a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath      return this;
45a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    }
46a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
47a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    public Builder exception(Throwable exception) {
48a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath      this.exception = exception;
49a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath      return this;
50a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    }
51a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath
52a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    public Failure build() {
53a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath      return new Failure(this);
54a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath    }
55a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath  }
56a82f42bbeedd0b07f3892f3b0efaa8122dc8f264Narayan Kamath}
57