Skip to content

Commit ea5aff5

Browse files
committed
add encoded filename as part of delete url for tooling
1 parent 2b9de49 commit ea5aff5

File tree

8 files changed

+55
-26
lines changed

8 files changed

+55
-26
lines changed

portal-ui/src/api/consoleApi.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2092,7 +2092,7 @@ export class Api<
20922092
deleteObject: (
20932093
bucketName: string,
20942094
query: {
2095-
path: string;
2095+
prefix: string;
20962096
version_id?: string;
20972097
recursive?: boolean;
20982098
all_versions?: boolean;

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteMultipleObjects.tsx

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import { hasPermission } from "../../../../../../common/SecureComponent";
2525
import { IAM_SCOPES } from "../../../../../../common/SecureComponent/permissions";
2626
import { useSelector } from "react-redux";
2727
import { BucketVersioningResponse } from "api/consoleApi";
28+
import { api } from "../../../../../../api";
29+
import { encodeURLString } from "../../../../../../common/utils";
2830

2931
interface IDeleteObjectProps {
3032
closeDeleteModalAndRefresh: (refresh: boolean) => void;
@@ -86,13 +88,37 @@ const DeleteObject = ({
8688
}
8789

8890
if (toSend) {
89-
invokeDeleteApi(
90-
"POST",
91-
`/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=${deleteVersions}${
92-
bypassGovernance ? "&bypass=true" : ""
93-
}`,
94-
toSend,
95-
);
91+
if (selectedObjects.length === 1) {
92+
const firstObject = selectedObjects[0];
93+
api.buckets
94+
.deleteObject(selectedBucket, {
95+
prefix: encodeURLString(firstObject),
96+
all_versions: deleteVersions,
97+
bypass: bypassGovernance,
98+
recursive: firstObject.endsWith("/"), //if it is just a prefix
99+
})
100+
.then(onDelSuccess)
101+
.catch((err) => {
102+
dispatch(
103+
setErrorSnackMessage({
104+
errorMessage: `Could not delete object. ${err.statusText}. ${
105+
retentionConfig
106+
? "Please check retention mode and if object is WORM protected."
107+
: ""
108+
}`,
109+
detailedError: "",
110+
}),
111+
);
112+
});
113+
} else {
114+
invokeDeleteApi(
115+
"POST",
116+
`/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=${deleteVersions}${
117+
bypassGovernance ? "&bypass=true" : ""
118+
}`,
119+
toSend,
120+
);
121+
}
96122
}
97123
};
98124

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const DeleteNonCurrentVersions = ({
5959
if (deleteLoading) {
6060
api.buckets
6161
.deleteObject(selectedBucket, {
62-
path: selectedObject,
62+
prefix: selectedObject,
6363
non_current_versions: true,
6464
bypass: bypassGovernance,
6565
})

restapi/embedded_spec.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

restapi/operations/object/delete_object_parameters.go

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

restapi/operations/object/delete_object_urlbuilder.go

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

restapi/user_objects.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,16 @@ func registerObjectsHandlers(api *operations.ConsoleAPI) {
6464
})
6565
// delete object
6666
api.ObjectDeleteObjectHandler = objectApi.DeleteObjectHandlerFunc(func(params objectApi.DeleteObjectParams, session *models.Principal) middleware.Responder {
67+
fmt.Println("ObjectDeleteObjectHandler", params.Prefix)
6768
if err := getDeleteObjectResponse(session, params); err != nil {
6869
return objectApi.NewDeleteObjectDefault(err.Code).WithPayload(err.APIError)
6970
}
7071
return objectApi.NewDeleteObjectOK()
7172
})
7273
// delete multiple objects
7374
api.ObjectDeleteMultipleObjectsHandler = objectApi.DeleteMultipleObjectsHandlerFunc(func(params objectApi.DeleteMultipleObjectsParams, session *models.Principal) middleware.Responder {
75+
fmt.Println("ObjectDeleteMultipleObjectsHandler", params)
76+
7477
if err := getDeleteMultiplePathsResponse(session, params); err != nil {
7578
return objectApi.NewDeleteMultipleObjectsDefault(err.Code).WithPayload(err.APIError)
7679
}
@@ -765,8 +768,8 @@ func getDeleteObjectResponse(session *models.Principal, params objectApi.DeleteO
765768
ctx, cancel := context.WithCancel(params.HTTPRequest.Context())
766769
defer cancel()
767770
var prefix string
768-
if params.Path != "" {
769-
encodedPrefix := SanitizeEncodedPrefix(params.Path)
771+
if params.Prefix != "" {
772+
encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
770773
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
771774
if err != nil {
772775
return ErrorWithContext(ctx, err)

swagger.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ paths:
339339
in: path
340340
required: true
341341
type: string
342-
- name: path
342+
- name: prefix
343343
in: query
344344
required: true
345345
type: string

0 commit comments

Comments
 (0)