From 351740601a81558843a92670ad113a61f6e2f1be Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Thu, 3 May 2012 10:46:27 +0200 Subject: [PATCH] port oc_response --- apps/calendar/lib/app.php | 4 +- apps/contacts/lib/app.php | 2 +- apps/contacts/photo.php | 12 ++-- apps/contacts/thumbnail.php | 10 +-- apps/files/download.php | 2 +- apps/files_sharing/get.php | 2 +- apps/gallery/ajax/galleryOp.php | 4 +- apps/gallery/ajax/sharing.php | 6 +- apps/gallery/ajax/thumbnail.php | 2 +- apps/media/ajax/api.php | 4 +- apps/media/tomahawk.php | 2 +- lib/public/response.php | 106 ++++++++++++++++++++++++++++++++ 12 files changed, 131 insertions(+), 25 deletions(-) mode change 100644 => 100755 apps/gallery/ajax/thumbnail.php create mode 100644 lib/public/response.php diff --git a/apps/calendar/lib/app.php b/apps/calendar/lib/app.php index f3e9bea86a..8e2679a43f 100755 --- a/apps/calendar/lib/app.php +++ b/apps/calendar/lib/app.php @@ -334,8 +334,8 @@ class OC_Calendar_App{ $calendar_id = $_GET['calendar_id']; if (is_numeric($calendar_id)) { $calendar = self::getCalendar($calendar_id); - OC_Response::enableCaching(0); - OC_Response::setETagHeader($calendar['ctag']); + OCP\Response::enableCaching(0); + OCP\Response::setETagHeader($calendar['ctag']); $events = OC_Calendar_Object::allInPeriod($calendar_id, $start, $end); } else { OC_Hook::emit('OC_Calendar', 'getEvents', array('calendar_id' => $calendar_id, 'events' => &$events)); diff --git a/apps/contacts/lib/app.php b/apps/contacts/lib/app.php index 636b9a84b9..f4b9562605 100755 --- a/apps/contacts/lib/app.php +++ b/apps/contacts/lib/app.php @@ -176,7 +176,7 @@ class OC_Contacts_App { $rev = $contact->getAsString('REV'); if ($rev) { $rev = DateTime::createFromFormat(DateTime::W3C, $rev); - OC_Response::setLastModifiedHeader($rev); + OCP\Response::setLastModifiedHeader($rev); } } } diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php index 60723b7f0b..6fe68cefb6 100755 --- a/apps/contacts/photo.php +++ b/apps/contacts/photo.php @@ -14,9 +14,9 @@ OCP\User::checkLoggedIn(); OCP\App::checkAppEnabled('contacts'); function getStandardImage(){ - OC_Response::setExpiresHeader('P10D'); - OC_Response::enableCaching(); - OC_Response::redirect(OCP\Util::imagePath('contacts', 'person_large.png')); + OCP\Response::setExpiresHeader('P10D'); + OCP\Response::enableCaching(); + OCP\Response::redirect(OCP\Util::imagePath('contacts', 'person_large.png')); } $id = isset($_GET['id']) ? $_GET['id'] : null; @@ -35,19 +35,19 @@ if(!$image) { if( is_null($contact)) { OCP\Util::writeLog('contacts','photo.php. The VCard for ID '.$id.' is not RFC compatible',OCP\Util::ERROR); } else { - OC_Response::enableCaching($caching); + OCP\Response::enableCaching($caching); OC_Contacts_App::setLastModifiedHeader($contact); // Photo :-) if($image->loadFromBase64($contact->getAsString('PHOTO'))) { // OK - OC_Response::setETagHeader(md5($contact->getAsString('PHOTO'))); + OCP\Response::setETagHeader(md5($contact->getAsString('PHOTO'))); } else // Logo :-/ if($image->loadFromBase64($contact->getAsString('LOGO'))) { // OK - OC_Response::setETagHeader(md5($contact->getAsString('LOGO'))); + OCP\Response::setETagHeader(md5($contact->getAsString('LOGO'))); } if ($image->valid()) { $max_size = 200; diff --git a/apps/contacts/thumbnail.php b/apps/contacts/thumbnail.php index cf54b4ffd4..d7bf1fd8c3 100755 --- a/apps/contacts/thumbnail.php +++ b/apps/contacts/thumbnail.php @@ -27,9 +27,9 @@ OC_JSON::checkLoggedIn(); OCP\App::checkAppEnabled('contacts'); function getStandardImage(){ - OC_Response::setExpiresHeader('P10D'); - OC_Response::enableCaching(); - OC_Response::redirect(OCP\Util::imagePath('contacts', 'person.png')); + OCP\Response::setExpiresHeader('P10D'); + OCP\Response::enableCaching(); + OCP\Response::redirect(OCP\Util::imagePath('contacts', 'person.png')); } if(!function_exists('imagecreatefromjpeg')) { @@ -49,7 +49,7 @@ if(is_null($contact)){ getStandardImage(); exit(); } -OC_Response::enableCaching($caching); +OCP\Response::enableCaching($caching); OC_Contacts_App::setLastModifiedHeader($contact); $thumbnail_size = 23; @@ -58,7 +58,7 @@ $thumbnail_size = 23; $image = new OC_Image(); $photo = $contact->getAsString('PHOTO'); if($photo) { - OC_Response::setETagHeader(md5($photo)); + OCP\Response::setETagHeader(md5($photo)); if($image->loadFromBase64($photo)) { if($image->centerCrop()) { diff --git a/apps/files/download.php b/apps/files/download.php index a4077b9f04..e98cf2ecd3 100755 --- a/apps/files/download.php +++ b/apps/files/download.php @@ -41,7 +41,7 @@ $ftype=OC_Filesystem::getMimeType( $filename ); header('Content-Type:'.$ftype); header('Content-Disposition: attachment; filename="'.basename($filename).'"'); -OC_Response::disableCaching(); +OCP\Response::disableCaching(); header('Content-Length: '.OC_Filesystem::filesize($filename)); @ob_end_clean(); diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php index a741139b92..b17dc85c5b 100755 --- a/apps/files_sharing/get.php +++ b/apps/files_sharing/get.php @@ -68,7 +68,7 @@ if ($source !== false) { //get time mimetype and set the headers $mimetype = OC_Filesystem::getMimeType($source); header("Content-Transfer-Encoding: binary"); - OC_Response::disableCaching(); + OCP\Response::disableCaching(); header('Content-Disposition: filename="'.basename($source).'"'); header("Content-Type: " . $mimetype); header("Content-Length: " . OC_Filesystem::filesize($source)); diff --git a/apps/gallery/ajax/galleryOp.php b/apps/gallery/ajax/galleryOp.php index 75b18c6f7b..c302a3a734 100755 --- a/apps/gallery/ajax/galleryOp.php +++ b/apps/gallery/ajax/galleryOp.php @@ -41,10 +41,10 @@ function handleRemove($name) { } function handleGetThumbnails($albumname) { - OC_Response::enableCaching(3600 * 24); // 24 hour + OCP\Response::enableCaching(3600 * 24); // 24 hour $thumbnail = OC::$CONFIG_DATADIRECTORY.'/../gallery/'.urldecode($albumname).'.png'; header('Content-Type: '.OC_Image::getMimeTypeForFile($thumbnail)); - OC_Response::sendFile($thumbnail); + OCP\Response::sendFile($thumbnail); } function handleGalleryScanning() { diff --git a/apps/gallery/ajax/sharing.php b/apps/gallery/ajax/sharing.php index 04de57eb17..a1af75ad46 100755 --- a/apps/gallery/ajax/sharing.php +++ b/apps/gallery/ajax/sharing.php @@ -72,7 +72,7 @@ function handleGetThumbnail($token, $imgpath) { $owner = OC_Gallery_Sharing::getTokenOwner($token); $image = OC_Gallery_Photo::getThumbnail($imgpath, $owner); if ($image) { - OC_Response::enableCaching(3600 * 24); // 24 hour + OCP\Response::enableCaching(3600 * 24); // 24 hour $image->show(); } } @@ -86,7 +86,7 @@ function handleGetAlbumThumbnail($token, $albumname) $image->centerCrop(); $image->resize(200); $image->fixOrientation(); - OC_Response::enableCaching(3600 * 24); // 24 hour + OCP\Response::enableCaching(3600 * 24); // 24 hour $image->show(); } } @@ -95,7 +95,7 @@ function handleGetPhoto($token, $photo) { $owner = OC_Gallery_Sharing::getTokenOwner($token); $file = OCP\Config::getSystemValue( "datadirectory", OC::$SERVERROOT."/data" ).'/'.$owner.'/files'.urldecode($photo); header('Content-Type: '.OC_Image::getMimeTypeForFile($file)); - OC_Response::sendFile($file); + OCP\Response::sendFile($file); } switch ($operation) { diff --git a/apps/gallery/ajax/thumbnail.php b/apps/gallery/ajax/thumbnail.php old mode 100644 new mode 100755 index bf42fd2bec..92e9fd4269 --- a/apps/gallery/ajax/thumbnail.php +++ b/apps/gallery/ajax/thumbnail.php @@ -29,6 +29,6 @@ $img = $_GET['img']; $image = OC_Gallery_Photo::getThumbnail($img); if ($image) { - OC_Response::enableCaching(3600 * 24); // 24 hour + OCP\Response::enableCaching(3600 * 24); // 24 hour $image->show(); } diff --git a/apps/media/ajax/api.php b/apps/media/ajax/api.php index d648e6fe97..95259fdefa 100755 --- a/apps/media/ajax/api.php +++ b/apps/media/ajax/api.php @@ -110,11 +110,11 @@ if($arguments['action']){ OC_MEDIA_COLLECTION::registerPlay($songId); header('Content-Type:'.$ftype); - OC_Response::enableCaching(3600 * 24); // 24 hour + OCP\Response::enableCaching(3600 * 24); // 24 hour header('Accept-Ranges: bytes'); header('Content-Length: '.OC_Filesystem::filesize($arguments['path'])); $mtime = OC_Filesystem::filemtime($arguments['path']); - OC_Response::setLastModifiedHeader($mtime); + OCP\Response::setLastModifiedHeader($mtime); OC_Filesystem::readfile($arguments['path']); exit; diff --git a/apps/media/tomahawk.php b/apps/media/tomahawk.php index af97c444eb..d4f5ac6afa 100755 --- a/apps/media/tomahawk.php +++ b/apps/media/tomahawk.php @@ -43,7 +43,7 @@ if(isset($_POST['play']) and $_POST['play']=='true'){ $song=OC_MEDIA_COLLECTION::getSong($_POST['song']); $ftype=OC_Filesystem::getMimeType( $song['song_path'] ); header('Content-Type:'.$ftype); - OC_Response::disableCaching(); + OCP\Response::disableCaching(); header('Content-Length: '.OC_Filesystem::filesize($song['song_path'])); OC_Filesystem::readfile($song['song_path']); diff --git a/lib/public/response.php b/lib/public/response.php new file mode 100644 index 0000000000..2efa74ef84 --- /dev/null +++ b/lib/public/response.php @@ -0,0 +1,106 @@ +. +* +*/ + +/** + * Public interface of ownCloud for apps to use. + * Response Class. + * + */ + +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal ownCloud classes +namespace OCP; + +class Response { + + + /** + * @brief Enable response caching by sending correct HTTP headers + * @param $cache_time time to cache the response + * >0 cache time in seconds + * 0 and <0 enable default browser caching + * null cache indefinitly + */ + static public function enableCaching($cache_time = null) { + return(\OC_Response::enableCaching($cache_time)); + } + + + /** + * Checks and set Last-Modified header, when the request matches sends a + * 'not modified' response + * @param $lastModified time when the reponse was last modified + */ + static public function setLastModifiedHeader($lastModified) { + return(\OC_Response::setLastModifiedHeader($lastModified)); + } + + + /** + * @brief disable browser caching + * @see enableCaching with cache_time = 0 + */ + static public function disableCaching() { + return(\OC_Response::disableCaching()); + } + + + /** + * Checks and set ETag header, when the request matches sends a + * 'not modified' response + * @param $etag token to use for modification check + */ + static public function setETagHeader($etag) { + return(\OC_Response::setETagHeader($etag)); + } + + + /** + * @brief Send file as response, checking and setting caching headers + * @param $filepath of file to send + */ + static public function sendFile($filepath) { + return(\OC_Response::sendFile($filepath)); + } + + /** + * @brief Set reponse expire time + * @param $expires date-time when the response expires + * string for DateInterval from now + * DateTime object when to expire response + */ + static public function setExpiresHeader($expires) { + return(\OC_Response::setExpiresHeader($expires)); + } + + /** + * @brief Send redirect response + * @param $location to redirect to + */ + static public function redirect($location) { + return(\OC_Response::redirect($location)); + } + + +} + +?>