1b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson/*
2b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * Copyright (C) 2010 The Android Open Source Project
3b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson *
4b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License");
5b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * you may not use this file except in compliance with the License.
6b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * You may obtain a copy of the License at
7b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson *
8b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson *      http://www.apache.org/licenses/LICENSE-2.0
9b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson *
10b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * Unless required by applicable law or agreed to in writing, software
11b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
12b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * See the License for the specific language governing permissions and
14b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * limitations under the License.
15b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson */
16b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
17b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilsonpackage tests.http;
18b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
19b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilsonimport java.util.List;
20b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
21b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson/**
22b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson * An HTTP request that came into the mock web server.
23b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson */
24b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilsonpublic final class RecordedRequest {
25b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    private final String requestLine;
26b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    private final List<String> headers;
27b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    private final List<Integer> chunkSizes;
28b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    private final int bodySize;
29b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    private final byte[] body;
30b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    private final int sequenceNumber;
31b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
32b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    RecordedRequest(String requestLine, List<String> headers, List<Integer> chunkSizes,
33b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson            int bodySize, byte[] body, int sequenceNumber) {
34b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        this.requestLine = requestLine;
35b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        this.headers = headers;
36b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        this.chunkSizes = chunkSizes;
37b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        this.bodySize = bodySize;
38b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        this.body = body;
39b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        this.sequenceNumber = sequenceNumber;
40b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
41b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
42b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    public String getRequestLine() {
43b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        return requestLine;
44b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
45b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
46b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    public List<String> getHeaders() {
47b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        return headers;
48b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
49b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
50b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    /**
51b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * Returns the sizes of the chunks of this request's body, or an empty list
52b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * if the request's body was empty or unchunked.
53b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     */
54b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    public List<Integer> getChunkSizes() {
55b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        return chunkSizes;
56b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
57b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
58b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    /**
59b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * Returns the total size of the body of this POST request (before
60b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * truncation).
61b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     */
62b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    public int getBodySize() {
63b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        return bodySize;
64b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
65b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
66b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    /**
67b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * Returns the body of this POST request. This may be truncated.
68b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     */
69b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    public byte[] getBody() {
70b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        return body;
71b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
72b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
73b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    /**
74b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * Returns the index of this request on its HTTP connection. Since a single
75b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * HTTP connection may serve multiple requests, each request is assigned its
76b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     * own sequence number.
77b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson     */
78b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    public int getSequenceNumber() {
79b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        return sequenceNumber;
80b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
81b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson
82b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    @Override public String toString() {
83b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson        return requestLine;
84b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson    }
85b1b5baac449d2725002338735f4db34bec8fd001Jesse Wilson}
86