define('__TEXTCUBE_ATTACH_DIR__', 'gs://' . $_SERVER['blog_fs_bucket'] . '/attach'); define('__TEXTCUBE_SKIN_STORAGE__', 'gs://' . $_SERVER['blog_fs_bucket'] . '/skin'); } if (!array_key_exists('blog_fs_bucket', $_SERVER)) { syslog('Missing a blog_fs_bucket env variable in app.yaml'); header("HTTP/1.0 404 Not Found"); exit; } // Modify SCRIPT_NAME for other codes. $_SERVER["SCRIPT_NAME"] = str_replace('gae.php', '', $_SERVER["SCRIPT_NAME"]); // Handles $blogURL/attach/... for attachment files. if (substr($_SERVER["REQUEST_URI"], 0, 8) == '/attach/') { $requestFilename = strtok(substr($_SERVER["REQUEST_URI"], 7), '?#'); if (file_exists(__TEXTCUBE_ATTACH_DIR__ . $requestFilename)) { require 'library/function/file.php'; $option = ['content_type' => getMIMEType('', $requestFilename)]; CloudStorageTools::serve(__TEXTCUBE_ATTACH_DIR__ . $requestFilename, $option); exit; } } // Handles $blogURL/blog/skin/customize... for custom skin files. if (substr($_SERVER["REQUEST_URI"], 0, 21) == '/skin/blog/customize/') { $requestFilename = strtok(substr($_SERVER["REQUEST_URI"], 5), '?#'); if (file_exists(__TEXTCUBE_SKIN_STORAGE__ . $requestFilename)) { require 'library/function/file.php'; $option = ['content_type' => getMIMEType('', $requestFilename)]; CloudStorageTools::serve(__TEXTCUBE_SKIN_STORAGE__ . $requestFilename, $option); exit; } } require_once 'rewrite.php';
<?php require_once __DIR__ . '/config.php'; use google\appengine\api\cloud_storage\CloudStorageTools; if (file_exists(MARKERS_JS)) { CloudStorageTools::serve(MARKERS_JS); } else { header('Content-type: application/javascript'); }
public function testServeRangeHeaderSuccess() { $this->expectFilenameTranslation("/gs/some_bucket/some_object", "some_blob_key"); $filename = "gs://some_bucket/some_object"; $expected_headers = ["X-AppEngine-BlobKey" => "some_blob_key", "X-AppEngine-BlobRange" => "bytes=100-200", "Content-Disposition" => "attachment; filename=foo.jpg", "Content-Type" => "image/jpeg"]; $options = ["save_as" => "foo.jpg", "use_range" => true, "content_type" => "image/jpeg"]; $_SERVER["HTTP_RANGE"] = "bytes=100-200"; CloudStorageTools::serve($filename, $options); $this->assertEquals(ksort($this->sent_headers), ksort($expected_headers)); $this->apiProxyMock->verify(); }
public function testServeUsingDefaultKeyword() { $gs_filename = 'gs://#default#/some_object'; $this->expectGetDefaultBucketName('some_bucket'); $this->expectApcFetch('__DEFAULT_GCS_BUCKET_NAME__', false, false); $this->expectApcStore('__DEFAULT_GCS_BUCKET_NAME__', 'some_bucket', true); $this->expectFilenameTranslation("/gs/some_bucket/some_object", "some_blob_key"); $expected_headers = ["X-AppEngine-BlobKey" => "some_blob_key", "X-AppEngine-BlobRange" => "bytes=1-2", "Content-Disposition" => "attachment; filename=foo.jpg"]; $options = ["start" => 1, "end" => 2, "save_as" => "foo.jpg"]; CloudStorageTools::serve($gs_filename, $options); $this->assertEquals(ksort($this->sent_headers), ksort($expected_headers)); $this->apiProxyMock->verify(); }