15f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen/* 25f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * Copyright (C) 2010 The Android Open Source Project 35f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * 45f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * Licensed under the Apache License, Version 2.0 (the "License"); 55f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * you may not use this file except in compliance with the License. 65f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * You may obtain a copy of the License at 75f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * 85f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * http://www.apache.org/licenses/LICENSE-2.0 95f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * 105f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * Unless required by applicable law or agreed to in writing, software 115f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * distributed under the License is distributed on an "AS IS" BASIS, 125f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * See the License for the specific language governing permissions and 145f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * limitations under the License. 155f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen */ 165f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 175f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyenpackage coretestutils.http; 185f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 195f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyenimport java.util.List; 205f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 215f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen/** 225f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * An HTTP request that came into the mock web server. 235f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen */ 245f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyenpublic final class RecordedRequest { 255f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen private final String requestLine; 265f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen private final List<String> headers; 275f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen private final List<Integer> chunkSizes; 285f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen private final int bodySize; 295f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen private final byte[] body; 305f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen private final int sequenceNumber; 315f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 325f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen RecordedRequest(String requestLine, List<String> headers, List<Integer> chunkSizes, 335f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen int bodySize, byte[] body, int sequenceNumber) { 345f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen this.requestLine = requestLine; 355f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen this.headers = headers; 365f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen this.chunkSizes = chunkSizes; 375f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen this.bodySize = bodySize; 385f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen this.body = body; 395f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen this.sequenceNumber = sequenceNumber; 405f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 415f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 425f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public String getRequestLine() { 435f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return requestLine; 445f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 455f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 465f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public List<String> getHeaders() { 475f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return headers; 485f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 495f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 505f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen /** 515f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * Returns the sizes of the chunks of this request's body, or an empty list 525f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * if the request's body was empty or unchunked. 535f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen */ 545f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public List<Integer> getChunkSizes() { 555f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return chunkSizes; 565f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 575f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 585f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen /** 595f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * Returns the total size of the body of this POST request (before 605f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * truncation). 615f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen */ 625f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public int getBodySize() { 635f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return bodySize; 645f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 655f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 665f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen /** 675f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * Returns the body of this POST request. This may be truncated. 685f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen */ 695f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public byte[] getBody() { 705f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return body; 715f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 725f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 735f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen /** 745f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * Returns the index of this request on its HTTP connection. Since a single 755f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * HTTP connection may serve multiple requests, each request is assigned its 765f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen * own sequence number. 775f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen */ 785f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public int getSequenceNumber() { 795f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return sequenceNumber; 805f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 815f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 825f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen @Override public String toString() { 835f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return requestLine; 845f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 855f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 865f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public String getMethod() { 875f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return getRequestLine().split(" ")[0]; 885f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 895f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen 905f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen public String getPath() { 915f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen return getRequestLine().split(" ")[1]; 925f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen } 935f53bca55b2c9e217dee12bff8ce55e168829783Neal Nguyen} 94