Skip to content

Commit a1623b3

Browse files
committed
support to parse error msg from header.
1 parent 0e436d2 commit a1623b3

File tree

6 files changed

+22
-17
lines changed

6 files changed

+22
-17
lines changed

sdk/src/client/Client.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ Error Client::buildError(const std::shared_ptr<HttpResponse> &response) const
131131
std::istreambuf_iterator<char> isb(*response->Body().get()), end;
132132
error.setMessage(std::string(isb, end));
133133
}
134+
// get error xml from header
135+
if (error.Message().empty() && response->hasHeader("x-oss-err")) {
136+
auto errstr = Base64Decode(response->Header("x-oss-err"));
137+
error.setMessage(std::string(errstr.begin(), errstr.end()));
138+
}
134139
} else {
135140
ss << "ClientError:" << responseCode;
136141
error.setCode(ss.str());

test/src/Encryption/CryptoObjectVersioningTest.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ TEST_F(CryptoObjectVersioningTest, ObjectBasicWithVersioningEnableTest)
190190
GetObjectMetaRequest gmRequest(BucketName, key);
191191
auto gmOutcome = Client->GetObjectMeta(gmRequest);
192192
EXPECT_EQ(gmOutcome.isSuccess(), false);
193-
EXPECT_EQ(gmOutcome.error().Code(), "ServerError:404");
193+
EXPECT_EQ(gmOutcome.error().Code(), "NoSuchKey");
194194

195195
gmRequest.setVersionId(versionId1);
196196
gmOutcome = Client->GetObjectMeta(gmRequest);
@@ -355,7 +355,7 @@ TEST_F(CryptoObjectVersioningTest, ResumableDownloadWithVersioningEnableTest)
355355
rdRequest.setThreadNum(3);
356356
auto rdOutcome = Client->ResumableDownloadObject(rdRequest);
357357
EXPECT_EQ(rdOutcome.isSuccess(), false);
358-
EXPECT_EQ(rdOutcome.error().Code(), "ServerError:404");
358+
EXPECT_EQ(rdOutcome.error().Code(), "NoSuchKey");
359359

360360
rdRequest.setVersionId(pOutcome.result().VersionId());
361361
rdOutcome = Client->ResumableDownloadObject(rdRequest);
@@ -371,7 +371,7 @@ TEST_F(CryptoObjectVersioningTest, ResumableDownloadWithVersioningEnableTest)
371371
rdRequest1.setPartSize(4 * 1024 * 1024);
372372
rdOutcome = Client->ResumableDownloadObject(rdRequest1);
373373
EXPECT_EQ(rdOutcome.isSuccess(), false);
374-
EXPECT_EQ(rdOutcome.error().Code(), "ServerError:404");
374+
EXPECT_EQ(rdOutcome.error().Code(), "NoSuchKey");
375375

376376
rdRequest1.setVersionId(pOutcome.result().VersionId());
377377
rdOutcome = Client->ResumableDownloadObject(rdRequest1);

test/src/Object/ObjectBasicOperationTest.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,11 +1453,11 @@ TEST_F(ObjectBasicOperationTest, HeadObjectsNegativeTest)
14531453
{
14541454
auto outcome = Client->HeadObject("no-exist-bucket", "object");
14551455
EXPECT_EQ(outcome.isSuccess(), false);
1456-
EXPECT_EQ(outcome.error().Code(), "ServerError:404");
1456+
EXPECT_EQ(outcome.error().Code(), "NoSuchBucket");
14571457

14581458
outcome = Client->HeadObject(BucketName, "object");
14591459
EXPECT_EQ(outcome.isSuccess(), false);
1460-
EXPECT_EQ(outcome.error().Code(), "ServerError:404");
1460+
EXPECT_EQ(outcome.error().Code(), "NoSuchKey");
14611461
EXPECT_EQ(outcome.error().RequestId().empty(), false);
14621462
}
14631463

test/src/Object/ObjectRequestPaymentTest.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ TEST_F(ObjectRequestPaymentTest, GetObjectMetaTest)
203203
GetObjectMetaRequest request(BucketName, "GetObjectMeta");
204204
auto outcome = PayerClient->GetObjectMeta(request);
205205
EXPECT_EQ(outcome.isSuccess(), false);
206-
EXPECT_EQ(outcome.error().Code(), "ServerError:403");
206+
EXPECT_EQ(outcome.error().Code(), "AccessDenied");
207207

208208
request.setRequestPayer(RequestPayer::Requester);
209209
outcome = PayerClient->GetObjectMeta(request);
@@ -230,7 +230,7 @@ TEST_F(ObjectRequestPaymentTest, HeadObjectTest)
230230
HeadObjectRequest request(BucketName, "HeadObject");
231231
auto outcome = PayerClient->HeadObject(request);
232232
EXPECT_EQ(outcome.isSuccess(), false);
233-
EXPECT_EQ(outcome.error().Code(), "ServerError:403");
233+
EXPECT_EQ(outcome.error().Code(), "AccessDenied");
234234

235235
request.setRequestPayer(RequestPayer::Requester);
236236
outcome = PayerClient->HeadObject(request);
@@ -1444,7 +1444,7 @@ TEST_F(ObjectRequestPaymentTest, NormalResumableDownloadWithSizeOverPartSizeTest
14441444
request.setThreadNum(1);
14451445
auto outcome = PayerClient->ResumableDownloadObject(request);
14461446
EXPECT_EQ(outcome.isSuccess(), false);
1447-
EXPECT_EQ(outcome.error().Code(), "ServerError:403");
1447+
EXPECT_EQ(outcome.error().Code(), "AccessDenied");
14481448

14491449
request.setRequestPayer(RequestPayer::Requester);
14501450
outcome = PayerClient->ResumableDownloadObject(request);
@@ -1475,7 +1475,7 @@ TEST_F(ObjectRequestPaymentTest, NormalResumableDownloadWithSizeUnderPartSizeTes
14751475
request.setThreadNum(1);
14761476
auto outcome = PayerClient->ResumableDownloadObject(request);
14771477
EXPECT_EQ(outcome.isSuccess(), false);
1478-
EXPECT_EQ(outcome.error().Code(), "ServerError:403");
1478+
EXPECT_EQ(outcome.error().Code(), "AccessDenied");
14791479

14801480
request.setRequestPayer(RequestPayer::Requester);
14811481
outcome = PayerClient->ResumableDownloadObject(request);
@@ -1506,7 +1506,7 @@ TEST_F(ObjectRequestPaymentTest, NormalResumableCopyWithSizeOverPartSizeTest)
15061506
request.setThreadNum(1);
15071507
auto outcome = PayerClient->ResumableCopyObject(request);
15081508
EXPECT_EQ(outcome.isSuccess(), false);
1509-
EXPECT_EQ(outcome.error().Code(), "ServerError:403");
1509+
EXPECT_EQ(outcome.error().Code(), "AccessDenied");
15101510

15111511
request.setRequestPayer(RequestPayer::Requester);
15121512
outcome = PayerClient->ResumableCopyObject(request);
@@ -1529,7 +1529,7 @@ TEST_F(ObjectRequestPaymentTest, NormalResumableCopyWithSizeUnderPartSizeTest)
15291529
request.setPartSize(100 * 1024 + 1);
15301530
auto outcome = PayerClient->ResumableCopyObject(request);
15311531
EXPECT_EQ(outcome.isSuccess(), false);
1532-
EXPECT_EQ(outcome.error().Code(), "ServerError:403");
1532+
EXPECT_EQ(outcome.error().Code(), "AccessDenied");
15331533

15341534
request.setRequestPayer(RequestPayer::Requester);
15351535
outcome = PayerClient->ResumableCopyObject(request);

test/src/Object/ObjectVersioningTest.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ TEST_F(ObjectVersioningTest, ObjectBasicWithVersioningEnableTest)
162162
GetObjectMetaRequest gmRequest(BucketName, key);
163163
auto gmOutcome = Client->GetObjectMeta(gmRequest);
164164
EXPECT_EQ(gmOutcome.isSuccess(), false);
165-
EXPECT_EQ(gmOutcome.error().Code(), "ServerError:404");
165+
EXPECT_EQ(gmOutcome.error().Code(), "NoSuchKey");
166166

167167
gmRequest.setVersionId(versionId1);
168168
gmOutcome = Client->GetObjectMeta(gmRequest);
@@ -1272,7 +1272,7 @@ TEST_F(ObjectVersioningTest, ResumableDownloadWithVersioningEnableTest)
12721272
rdRequest.setThreadNum(3);
12731273
auto rdOutcome = Client->ResumableDownloadObject(rdRequest);
12741274
EXPECT_EQ(rdOutcome.isSuccess(), false);
1275-
EXPECT_EQ(rdOutcome.error().Code(), "ServerError:404");
1275+
EXPECT_EQ(rdOutcome.error().Code(), "NoSuchKey");
12761276

12771277
rdRequest.setVersionId(pOutcome.result().VersionId());
12781278
rdOutcome = Client->ResumableDownloadObject(rdRequest);
@@ -1288,7 +1288,7 @@ TEST_F(ObjectVersioningTest, ResumableDownloadWithVersioningEnableTest)
12881288
rdRequest1.setPartSize(4 * 1024 * 1024);
12891289
rdOutcome = Client->ResumableDownloadObject(rdRequest1);
12901290
EXPECT_EQ(rdOutcome.isSuccess(), false);
1291-
EXPECT_EQ(rdOutcome.error().Code(), "ServerError:404");
1291+
EXPECT_EQ(rdOutcome.error().Code(), "NoSuchKey");
12921292

12931293
rdRequest1.setVersionId(pOutcome.result().VersionId());
12941294
rdOutcome = Client->ResumableDownloadObject(rdRequest1);
@@ -1334,7 +1334,7 @@ TEST_F(ObjectVersioningTest, ResumableCopyWithVersioningEnableTest)
13341334
mcRequest.setThreadNum(3);
13351335
auto rcOutcome = Client->ResumableCopyObject(mcRequest);
13361336
EXPECT_EQ(rcOutcome.isSuccess(), false);
1337-
EXPECT_EQ(rcOutcome.error().Code(), "ServerError:404");
1337+
EXPECT_EQ(rcOutcome.error().Code(), "NoSuchKey");
13381338

13391339
mcRequest.setVersionId(pOutcome.result().VersionId());
13401340
rcOutcome = Client->ResumableCopyObject(mcRequest);
@@ -1354,7 +1354,7 @@ TEST_F(ObjectVersioningTest, ResumableCopyWithVersioningEnableTest)
13541354
mcRequest1.setThreadNum(3);
13551355
auto rcOutcome1 = Client->ResumableCopyObject(mcRequest1);
13561356
EXPECT_EQ(rcOutcome1.isSuccess(), false);
1357-
EXPECT_EQ(rcOutcome1.error().Code(), "ServerError:404");
1357+
EXPECT_EQ(rcOutcome1.error().Code(), "NoSuchKey");
13581358

13591359
mcRequest1.setVersionId(pOutcome.result().VersionId());
13601360
rcOutcome1 = Client->ResumableCopyObject(mcRequest1);

test/src/Other/HttpClientTest.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ TEST_F(HttpClientTest, SetDateTimeTest)
468468
std::string key = TestUtils::GetObjectKey("SetDateTimeTest");
469469
auto content = std::make_shared<std::stringstream>("test");
470470
auto meta = ObjectMetaData();
471-
auto localTime = std::time(nullptr) - 20*60LL;
471+
auto localTime = std::time(nullptr) - 20*60;
472472
meta.addHeader("x-oss-date", ToGmtTime(localTime));
473473
auto outcome = Client->PutObject(BucketName, key, content, meta);
474474
EXPECT_EQ(outcome.isSuccess(), false);

0 commit comments

Comments
 (0)