faultCode 804 faultString "); ini_set("error_append_string", " "); header("Content-type: text/xml"); /* ================================================================= includes */ require_once(dirname(__FILE__).'/../../conf.php'); require_once('DB.php'); require_once("XML/RPC/Server.php"); require_once('XR_LocStor.php'); /* ============================================ setting default error handler */ function errHndl($errno, $errmsg, $filename, $linenum, $vars) { switch ($errno) { case E_WARNING: case E_NOTICE: case E_USER_WARNING: case E_USER_NOTICE: return; break; default: $xr = new XML_RPC_Response(0, 805, htmlspecialchars("ERROR:xrLocStor: $errno $errmsg ($filename:$linenum)")); header("Content-type: text/xml"); echo $xr->serialize(); exit($errno); } } $old_error_handler = set_error_handler("errHndl", E_ALL); /* ============================================================= runable code */ $CC_DBC = DB::connect($CC_CONFIG['dsn'], TRUE); if (PEAR::isError($CC_DBC)) { trigger_error("DB::connect: ".$CC_DBC->getMessage()." ".$CC_DBC->getUserInfo(),E_USER_ERROR); } $CC_DBC->setErrorHandling(PEAR_ERROR_RETURN); $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC); $locStor = new XR_LocStor(); $methods = array( 'test' => 'Tests toupper and checks sessid, params: '. 'teststring, sessid.', 'getVersion' => 'Get version of Campcaster.', // 'authenticate' => 'Checks authentication.', 'login' => 'Login to storage.', 'logout' => 'Logout from storage.', 'existsAudioClip' => 'Checks if an audio clip with the specified '. 'id is stored in local storage.', 'storeAudioClipOpen' => 'Open channel to store a new audio clip '. 'or replace an existing one.', 'storeAudioClipClose' => 'Close channel to store a new audio clip'. ' or replace an existing one.', 'downloadRawAudioDataOpen'=> 'Create and return downloadable URL'. 'for audio file', 'downloadRawAudioDataClose'=>'Discard downloadable URL for audio file', 'downloadMetadataOpen' => 'Create and return downloadable URL'. 'for metadata', 'downloadMetadataClose' => 'Discard downloadable URL for metadata', 'openPut' => 'openPut', 'closePut' => 'closePut', 'deleteAudioClip' => 'Delete an existing Audio clip.', 'updateAudioClipMetadata' => 'Update the metadata of an Audio clip '. 'stored in Local storage.', 'searchMetadata' => 'Search through the metadata of stored '. 'files, return all matching clip ids.', 'browseCategory' =>'Return values of specified metadata category.', 'accessRawAudioData' => 'Get access to raw audio data.', 'releaseRawAudioData' => 'Release access to raw audio data.', 'getAudioClip' => 'Return the contents of an Audio clip.', // 'resetStorage' => 'Reset storageServer for debugging.', 'storeWebstream' => 'Store audio stream identified by URL', 'createPlaylist' => 'Create a new Playlist metafile.', 'editPlaylist' => 'Open a Playlist metafile for editing.', 'savePlaylist' => 'Save a Playlist metafile.', 'revertEditedPlaylist' => 'RollBack playlist changes to the locked state.', 'deletePlaylist' => 'Delete a Playlist metafile.', 'accessPlaylist' => 'Open readable URL to a Playlist metafile.', 'releasePlaylist' => 'Release readable URL from accessPlaylist.', 'existsPlaylist' => 'Check whether a Playlist exists.', 'playlistIsAvailable' => 'Check whether a Playlist is available '. 'for editing.', 'exportPlaylistOpen' => 'Create a tarfile with playlist export.', 'exportPlaylistClose' => 'Close playlist export.', 'importPlaylistOpen' => 'Open writable handle for playlist import.', 'importPlaylistClose' => 'Close import-handle and import playlist.', 'renderPlaylistToFileOpen' => 'Render playlist to ogg file (open handle)', 'renderPlaylistToFileCheck' => 'Render playlist to ogg file (check results)', 'renderPlaylistToFileClose' => 'Render playlist to ogg file (close handle)', 'renderPlaylistToStorageOpen' => 'Render playlist to storage media clip (open handle)', 'renderPlaylistToStorageCheck' => 'Render playlist to storage media clip (check results)', 'renderPlaylistToRSSOpen' => 'Render playlist to RSS file (open handle)', 'renderPlaylistToRSSCheck' => 'Render playlist to RSS file (check results)', 'renderPlaylistToRSSClose' => 'Render playlist to RSS file (close handle)', 'createBackupOpen' => 'Create backup of storage (open handle)', 'createBackupCheck' => 'Create backup of storage (check results)', 'createBackupClose' => 'Create backup of storage (close handle)', 'restoreBackupOpen' => 'Restore a backup file (open handle)', 'restoreBackupClosePut' => 'Restore a backup file (close PUT handle)', 'restoreBackupCheck' => 'Restore a backup file (check results)', 'restoreBackupClose' => 'Restore a backup file (close handle)', 'loadPref' => 'Load user preference value.', 'savePref' => 'Save user preference value.', 'delPref' => 'Delete user preference record.', 'loadGroupPref' => 'Read group preference record.', 'saveGroupPref' => 'Delete user preference record.', 'getTransportInfo' => 'Common "check" method and info getter for transports', 'turnOnOffTransports' => 'Turn transports on/off, optionaly return current state', 'doTransportAction' => 'Pause, resume or cancel transport', 'uploadFile2Hub' => 'Open async file transfer from local storageServer to network hub', 'getHubInitiatedTransfers' => 'Get list of prepared transfers initiated by hub', 'startHubInitiatedTransfer' => 'Start of download initiated by hub', 'upload2Hub' => 'Start upload of audioclip or playlist from local storageServer to hub', 'downloadFromHub' => 'Start download of audioclip or playlist from hub to local storageServer', // 'globalSearch' => 'Start search job on network hub', // 'getSearchResults' => 'Get results from search job on network hub', 'uploadOpen' => 'Open file-layer upload', 'uploadCheck' => 'Check the checksum of uploaded file', 'uploadClose' => 'Close file-layer upload', 'downloadOpen' => 'Open file-layer download', // 'downloadCheck' => 'Check the checksum of downloaded file', 'downloadClose' => 'Close file-layer download', 'prepareHubInitiatedTransfer' => 'Prepare hub initiated transfer', 'listHubInitiatedTransfers' => 'List hub initiated transfers', 'setHubInitiatedTransfer' => 'Set state of hub initiated transfers', 'ping' => 'Echo request', ); $defs = array(); foreach ($methods as $method => $description) { $defs["locstor.$method"] = array( "function" => array(&$locStor, "xr_$method"), // NOTE: the way this signature is set up, every function must take at least one parameter! "signature" => array( array($GLOBALS['XML_RPC_Struct'], $GLOBALS['XML_RPC_Struct']) ), "docstring" => $description ); } $s = new XML_RPC_Server($defs); ?>