Skip to content

Commit 659766a

Browse files
yangzong18huiguangjun
authored andcommitted
api level options supports credentials_provider option
1 parent 8bf16e5 commit 659766a

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

src/Client.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,8 @@ public function presign($request, $args = []): Models\PresignResult
420420
return new Models\PresignResult(
421421
$result['method'],
422422
$result['url'],
423-
$result['expiration'],
424-
$result['signedHeaders']
423+
$result['expiration'] ?? null,
424+
$result['signedHeaders'] ?? null
425425
);
426426
}
427427
}

src/ClientImpl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ private function buildRequestContext(OperationInput &$input, array &$options)
585585
'retry_max_attempts' => \max($retry_max_attempts, 1),
586586
'retryer' => $retryer,
587587
'signer' => $this->sdkOptions['signer'],
588-
'credentials_provider' => $this->sdkOptions['credentials_provider'],
588+
'credentials_provider' => $options['credentials_provider'] ?? $this->sdkOptions['credentials_provider'],
589589
];
590590

591591
$context['sdk_context'] = $sdk_context;

tests/IntegrationTests/ClientPresignerTest.php

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ public function testPresignWithContentType()
398398
$request = new Oss\Models\InitiateMultipartUploadRequest($bucketName, $objectNameMultipart);
399399
$result = $client->presign($request);
400400
$this->assertCount(1, $result->signedHeaders);
401-
$this->assertArrayHasKey('content-md5',$result->signedHeaders);
401+
$this->assertArrayHasKey('content-md5', $result->signedHeaders);
402402
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
403403
$this->assertEquals(200, $response->getStatusCode());
404404
} catch (\Throwable $e) {
@@ -467,6 +467,30 @@ public function testPresignWithContentType()
467467
} catch (\Throwable $e) {
468468
$this->assertTrue(false, 'should not here');
469469
}
470+
}
470471

472+
public function testPresignWithAnonymous()
473+
{
474+
$client = $this->getDefaultClient();
475+
$bucketName = self::$bucketName;
476+
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object';
477+
$content = 'hi oss';
478+
$putObjectRequest = new Oss\Models\PutObjectRequest(
479+
$bucketName, $objectName
480+
);
481+
$putObjectRequest->acl = 'public-read';
482+
$putObjectRequest->body = Utils::streamFor($content);
483+
$client->putObject($putObjectRequest);
484+
485+
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName);
486+
$options['credentials_provider'] = new Oss\Credentials\AnonymousCredentialsProvider();
487+
$result = $client->presign($request, $options);
488+
$this->assertNotEmpty($result->url);
489+
$this->assertNotEmpty($result->method);
490+
$this->assertStringNotContainsString('?', $result->url);
491+
$httpClient = new GuzzleHttp\Client();
492+
$response = $httpClient->get($result->url);
493+
$this->assertEquals($response->getStatusCode(), 200);
494+
$this->assertEquals($response->getBody()->getContents(), $content);
471495
}
472496
}

0 commit comments

Comments
 (0)