*
  • sessid : string, session ID
  • *
  • id : string, global unique ID of requested file
  • * * * On success, returns HTTP return code 200 and requested file. * * On errors, returns HTTP return code >200 * The possible error codes are: * * */ require_once 'DB.php'; require_once '../conf.php'; require_once '../LocStor.php'; PEAR::setErrorHandling(PEAR_ERROR_RETURN); $dbc = DB::connect($config['dsn'], TRUE); $dbc->setFetchMode(DB_FETCHMODE_ASSOC); $locStor = &new LocStor(&$dbc, $config); function http_error($code, $err){ header("HTTP/1.1 $code"); header("Content-type: text/plain; charset=UTF-8"); echo "$err\r\n"; exit; } if(preg_match("|^[0-9a-f]{32}$|", $_REQUEST['sessid'])){ $sessid = $_REQUEST['sessid']; }else{ http_error(400, "Error on sessid parameter. ({$_REQUEST['sessid']})"); } if(preg_match("|^[0-9a-f]{32}$|", $_REQUEST['id'])){ $gunid = $_REQUEST['id']; }else{ http_error(400, "Error on id parameter. ({$_REQUEST['id']})"); } $ex = $locStor->existsAudioClip($sessid, $gunid); if(PEAR::isError($ex)){ if($ex->getCode() == GBERR_DENY){ http_error(403, $ex->getMessage()); } else{ http_error(500, $ex->getMessage()); } } if(!$ex){ http_error(404, "File not found"); } $ac =& StoredFile::recallByGunid(&$locStor, $gunid); if(PEAR::isError($ac)){ http_error(500, $ac->getMessage()); } $realFname = $ac->_getRealRADFname(); $mime = $ac->rmd->getMime(); header("Content-type: $mime"); readfile($realFname); ?>