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