Skip to content

Commit

Permalink
symlink dev
Browse files Browse the repository at this point in the history
  • Loading branch information
ljbreak2008 committed Dec 26, 2017
1 parent 250dbb0 commit 6175d19
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 36 deletions.
68 changes: 67 additions & 1 deletion samples/Object.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@
$content = $ossClient->getObject($bucket, "b.file");
Common::println("b.file is fetched, the content is: " . $content);

// 给object添加symlink
$content = $ossClient->putSymlink($bucket, "test-symlink", "b.file");
Common::println("test-symlink is created");
Common::println($result['x-oss-request-id']);
Common::println($result['etag']);

// 获取symlink
$content = $ossClient->getSymlink($bucket, "test-symlink");
Common::println("test-symlink refer to : " . $content['x-oss-symlink-target']);

// 下载object到本地文件
$options = array(
Expand Down Expand Up @@ -81,7 +90,8 @@
deleteObject($ossClient, $bucket);
deleteObjects($ossClient, $bucket);
doesObjectExist($ossClient, $bucket);

getSymlink($ossClient, $bucket);
putSymlink($ossClient, $bucket);
/**
* 创建虚拟目录
*
Expand Down Expand Up @@ -266,6 +276,62 @@ function getObject($ossClient, $bucket)
}
}

/**
* put symlink
*
* @param OssClient $ossClient OssClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function putSymlink($ossClient, $bucket)
{
$symlink = "test-samples-symlink";
$object = "test-samples-object";
try {
$ossClient->putObject($bucket, $object, 'test-content');
$ossClient->putSymlink($bucket, $symlink, $object);
$content = $ossClient->getObject($bucket, $symlink);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
if ($content == 'test-content') {
print(__FUNCTION__ . ": putSymlink checked OK" . "\n");
} else {
print(__FUNCTION__ . ": putSymlink checked FAILED" . "\n");
}
}

/**
* 获取symlink
*
* @param OssClient $ossClient OssClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function getSymlink($ossClient, $bucket)
{
$symlink = "test-samples-symlink";
$object = "test-samples-object";
try {
$ossClient->putObject($bucket, $object, 'test-content');
$ossClient->putSymlink($bucket, $symlink, $object);
$content = $ossClient->getSymlink($bucket, $symlink);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
if ($content['x-oss-symlink-target']) {
print(__FUNCTION__ . ": getSymlink checked OK" . "\n");
} else {
print(__FUNCTION__ . ": getSymlink checked FAILED" . "\n");
}
}

/**
* get_object_to_local_file
*
Expand Down
12 changes: 6 additions & 6 deletions src/OSS/Core/OssUtil.php
Original file line number Diff line number Diff line change
Expand Up @@ -427,12 +427,12 @@ public static function readDir($dir, $exclude = ".|..|.svn|.git", $recursive = f
}

/**
* Decode key based on the encoding type
*
* @param string $key
* @param string $encoding
* @return string
*/
* Decode key based on the encoding type
*
* @param string $key
* @param string $encoding
* @return string
*/
public static function decodeKey($key, $encoding)
{
if ($encoding == "") {
Expand Down
4 changes: 2 additions & 2 deletions src/OSS/OssClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -1110,7 +1110,7 @@ public function putSymlink($bucket, $symlink ,$targetObject, $options = NULL)

$options[self::OSS_BUCKET] = $bucket;
$options[self::OSS_METHOD] = self::OSS_HTTP_PUT;
$options[self::OSS_OBJECT] = rawurlencode($symlink);
$options[self::OSS_OBJECT] = $symlink;
$options[self::OSS_SUB_RESOURCE] = self::OSS_SYMLINK;
$options[self::OSS_HEADERS][self::OSS_SYMLINK_TARGET] = rawurlencode($targetObject);

Expand All @@ -1133,7 +1133,7 @@ public function getSymlink($bucket, $symlink)

$options[self::OSS_BUCKET] = $bucket;
$options[self::OSS_METHOD] = self::OSS_HTTP_GET;
$options[self::OSS_OBJECT] = rawurlencode($symlink);
$options[self::OSS_OBJECT] = $symlink;
$options[self::OSS_SUB_RESOURCE] = self::OSS_SYMLINK;

$response = $this->auth($options);
Expand Down
62 changes: 35 additions & 27 deletions tests/OSS/Tests/SymlinkTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,54 +10,62 @@

class SymlinkTest extends TestOssClientBase
{
public function testPutSymlink()
{
$bucket = getenv('OSS_BUCKET');
$symlink = 'test-link';
$special_object = 'exist_object^$#!~';
$object = 'exist_object';

$this->ossClient ->putObject($bucket, $object,'test_content');
$this->ossClient->putSymlink($bucket, $symlink, $object);
$result = $this->ossClient->getObject($bucket, $symlink);
$this->assertEquals('test_content', $result);

$this->ossClient ->putObject($bucket, $special_object,'test_content');
$this->ossClient->putSymlink($bucket, $symlink, $special_object);
$result = $this->ossClient->getObject($bucket, $special_object);
$this->assertEquals('test_content', $result);
}

public function testGetSymlink()
{
$bucket = getenv('OSS_BUCKET');
$symlink = 'test-link';
$object = 'exist_object^$#!~';

$result = $this->ossClient->getSymlink($bucket, $symlink);
$this->assertEquals($result["x-oss-symlink-target"], $object);
$this->assertEquals('200', $result['info']['http_code']);
$this->assertTrue(isset($result['etag']));
$this->assertTrue(isset($result['x-oss-request-id']));
}

public function testPutNullSymlink()
{
$bucket = getenv('OSS_BUCKET');
$symlink = '_link@/';
$symlink = 'null-link';
$object_not_exist = 'not_exist_object+$#!b不';
$this->ossClient->putSymlink($bucket, $symlink, $object_not_exist);

try{
$result = $this->ossClient->getObject($bucket, $symlink);
$this->ossClient->getObject($bucket, $symlink);
$this->assertTrue(false);
}catch (OssException $e){
$this->assertEquals('The symlink target object does not exist', $e->getErrorMessage());
}
}

public function testPutNotNullSymlink()
{
$bucket = getenv('OSS_BUCKET');
$symlink = 'test-link=()*&';
$object = 'exist_object^$#!~';

$this->ossClient ->putObject($bucket, $object,'test_content');
$this->ossClient->putSymlink($bucket, $symlink, $object);
$result = $this->ossClient->getObject($bucket, $symlink);
$this->assertEquals('test_content', $result);
}

public function testGetNullSymlink()
{
$bucket = getenv('OSS_BUCKET');
$symlink = 'null_link@/';
$symlink = 'null-link-new';

try{
$result = $this->ossClient->getSymlink($bucket, $symlink);
$this->assertTrue(false);
}catch (OssException $e){
$this->assertEquals('The specified key does not exist.', $e->getErrorMessage());
}
}

public function testGetNotNullSymlink()
{
$bucket = getenv('OSS_BUCKET');
$symlink = 'test-link=()*&';
$object = 'exist_object^$#!~';
$result = $this->ossClient->getSymlink($bucket, $symlink);
$this->assertEquals($result["x-oss-symlink-target"], $object);
}



}

0 comments on commit 6175d19

Please sign in to comment.