From 29afe17db4791640fd4d8be5874f2db8afabf3d9 Mon Sep 17 00:00:00 2001 From: blueww Date: Tue, 17 Dec 2024 14:56:58 +0800 Subject: [PATCH] Changed the responds status code from 500 to 501 for not implemented API --- ChangeLog.md | 4 ++++ src/blob/errors/NotImplementedError.ts | 20 +++++++++++++++++++- src/blob/persistence/SqlBlobMetadataStore.ts | 17 +++++++++-------- src/queue/errors/NotImplementedError.ts | 2 +- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index d043ce63c..f81a7422c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -4,6 +4,10 @@ ## Upcoming Release +General: + +- Changed the responds status code of not implemented API from 500 to 501. + Blob: - GetBlob on Archive tier blobs now fails as expected. diff --git a/src/blob/errors/NotImplementedError.ts b/src/blob/errors/NotImplementedError.ts index 17e44cef5..c55c42a09 100644 --- a/src/blob/errors/NotImplementedError.ts +++ b/src/blob/errors/NotImplementedError.ts @@ -10,10 +10,28 @@ import StorageError from "./StorageError"; export default class NotImplementedError extends StorageError { public constructor(requestID: string = "") { super( - 500, + 501, "APINotImplemented", "Current API is not implemented yet. Please vote your wanted features to https://github.com/azure/azurite/issues", requestID ); } } + +/** + * Create customized error types by inheriting ServerError + * + * @export + * @class UnimplementedError + * @extends {StorageError} + */ +export class NotImplementedinSQLError extends StorageError { + public constructor(requestID: string = "") { + super( + 501, + "APINotImplemented", + "Current API is not implemented yet when use a SQL database based metadata storage. Please vote your wanted features to https://github.com/azure/azurite/issues", + requestID + ); + } +} diff --git a/src/blob/persistence/SqlBlobMetadataStore.ts b/src/blob/persistence/SqlBlobMetadataStore.ts index 9faa5144c..302dad820 100644 --- a/src/blob/persistence/SqlBlobMetadataStore.ts +++ b/src/blob/persistence/SqlBlobMetadataStore.ts @@ -71,6 +71,7 @@ import PageWithDelimiter from "./PageWithDelimiter"; import FilterBlobPage from "./FilterBlobPage"; import { getBlobTagsCount, getTagsFromString, toBlobTags } from "../utils/utils"; import { generateQueryBlobWithTagsWhereFunction } from "./QueryInterpreter/QueryInterpreter"; +import { NotImplementedinSQLError } from "../errors/NotImplementedError"; // tslint:disable: max-classes-per-file class ServicesModel extends Model { } @@ -1831,7 +1832,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { } public undeleteBlob(): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(); } public async createSnapshot( @@ -2756,7 +2757,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { copySource: string, metadata: Models.BlobMetadata | undefined ): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(context.contextId); } public setTier( @@ -2866,7 +2867,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { leaseAccessConditions?: Models.LeaseAccessConditions, modifiedAccessConditions?: Models.ModifiedAccessConditions ): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(context.contextId); } public clearRange( @@ -2877,7 +2878,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { leaseAccessConditions?: Models.LeaseAccessConditions, modifiedAccessConditions?: Models.ModifiedAccessConditions ): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(context.contextId); } public getPageRanges( @@ -2889,7 +2890,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { leaseAccessConditions?: Models.LeaseAccessConditions, modifiedAccessConditions?: Models.ModifiedAccessConditions ): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(context.contextId); } public resizePageBlob( @@ -2901,7 +2902,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { leaseAccessConditions?: Models.LeaseAccessConditions, modifiedAccessConditions?: Models.ModifiedAccessConditions ): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(context.contextId); } public updateSequenceNumber( @@ -2912,7 +2913,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { sequenceNumberAction: Models.SequenceNumberActionType, blobSequenceNumber: number | undefined ): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(context.contextId); } public appendBlock( @@ -2924,7 +2925,7 @@ export default class SqlBlobMetadataStore implements IBlobMetadataStore { | Models.AppendPositionAccessConditions | undefined ): Promise { - throw new Error("Method not implemented."); + throw new NotImplementedinSQLError(context.contextId); } public async listUncommittedBlockPersistencyChunks( diff --git a/src/queue/errors/NotImplementedError.ts b/src/queue/errors/NotImplementedError.ts index 17e44cef5..84940ac79 100644 --- a/src/queue/errors/NotImplementedError.ts +++ b/src/queue/errors/NotImplementedError.ts @@ -10,7 +10,7 @@ import StorageError from "./StorageError"; export default class NotImplementedError extends StorageError { public constructor(requestID: string = "") { super( - 500, + 501, "APINotImplemented", "Current API is not implemented yet. Please vote your wanted features to https://github.com/azure/azurite/issues", requestID