<?php // // Copyright (C) 2004-2011 by Autodesk, Inc. // // This library is free software; you can redistribute it and/or // modify it under the terms of version 2.1 of the GNU Lesser // General Public License as published by the Free Software Foundation. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // Start output buffering ob_start(); require_once("capturerequest.php"); include 'common.php'; include 'actions.php'; include 'helper.php'; //Edit that with your test name //First paramater - the name of your tests //Second parameter - the name of the database where all http requests will be stored //Third parameter - the absolute path to the location where the database file and all uploaded files(if any) should be stored //Fourth parameter - the relative from your test script to all data files. This path will be stored in the database and, thus, will ensure that //everyone will be able to run the captured tests $request = new CaptureRequest("StudioTests", "StudioTests.db", "D:\\AwDev\\UnitTest\\TestData\\StudioTests\\", "..\\..\\TestData\\StudioTests\\"); $request->SaveRequest(); // turn this on if debugging needed $DEBUG_AGENT = 0; // amount of time in seconds to sleep/debug $SLEEP_SECS = 20; // Useful for debugging if ($DEBUG_AGENT) sleep($SLEEP_SECS); // Initialize web tier with the site configuration file. InitializeWebTier(); // Create a request object $hreq = new MgHttpRequest(); // Get access to the header collection $hdr = $hreq->GetHeader(); // Get access to request parameter collection $reqParam = $hreq->GetRequestParam(); // Get access to request metadata collection $reqMd = $hreq->GetRequestMetadata(); // Fill all header variables setHeader($hdr); // Fill request parameters setRequestParameters($reqParam); // Fill request metadata setRequestMetadata($reqMd); // Custom action before executing the request beforeExecute($hreq); // Execute the request and return response $hresp = $hreq->Execute(); // Custom action after execute if(!afterExecute($hreq, $hresp)) { // no custom actions, send stream to client $statusCode = $hresp->GetStatusCode(); if($statusCode != 200) { $shortError = $hresp->GetHttpErrorMessage(); $longError = $hresp->GetErrorMessage(); header("HTTP/1.1 {$statusCode} {$shortError}"); header("Status: {$statusCode} {$shortError}"); echo "<html>\n<body>\n"; echo "<h2>{$shortError}</h2>\n{$longError}"; echo "</body>\n</html>\n"; } else { // Dump all headers before sending data $header = $hresp->GetHeader(); if ($header != null) { $headerLines = $header->GetHeaderNames(); // TODO: PHP collection semantics do not work on our collections. // We should try to address this so that the following will work // foreach ($headerLines as $headerLine) $hdrCount = $headerLines->GetCount(); for ($hdrNum = 0; $hdrNum < $hdrCount; $hdrCount++) { $headerLine = $headerLines->GetItem($hdrNum); $headerValue = $header->GetHeaderValue($headerLine); header("{$headerLine}: {$headerValue}"); } } // adds the content type specific to this response $contentType = $hresult->GetResultContentType(); if (strlen($contentType)>0) { header("Content-type: " . $contentType); } $result = $hresp->GetResult(); $resultObj = $result->GetResultObject(); $byteReader = null; if ($resultObj instanceof MgByteReader) { $byteReader = $resultObj; } else if ($resultObj instanceof MgFeatureReader) { $byteReader = $resultObj->ToXml(); } else if ($resultObj instanceof MgStringCollection) { $byteReader = $resultObj->ToXml(); } else if ($resultObj instanceof MgSqlDataReader) { $byteReader = $resultObj->ToXml(); } else if ($resultObj instanceof MgDataReader) { $byteReader = $resultObj->ToXml(); } else if ($resultObj instanceof MgSpatialContextReader) { $byteReader = $resultObj->ToXml(); } else if ($resultObj instanceof MgLongTransactionReader) { $byteReader = $resultObj->ToXml(); } else if ($resultObj instanceof MgHttpPrimitiveValue) { $str = $resultObj->ToString(); echo $str; } if ($byteReader != null) { // Set content length header header("Content-Length:".$byteReader->GetLength()); $len = 0; $val = ""; $len = $byteReader->Read($val, 4096); while ($len > 0) { echo $val; ob_flush(); flush();s $len = $byteReader->Read($val, 4096); } } } } // Flush output buffer ob_end_flush(); ?>