aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_bucket_handlers.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/s3api/s3api_bucket_handlers.go')
-rw-r--r--weed/s3api/s3api_bucket_handlers.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/weed/s3api/s3api_bucket_handlers.go b/weed/s3api/s3api_bucket_handlers.go
index de77da7c8..ef62d08d9 100644
--- a/weed/s3api/s3api_bucket_handlers.go
+++ b/weed/s3api/s3api_bucket_handlers.go
@@ -136,3 +136,31 @@ func (s3a *S3ApiServer) DeleteBucketHandler(w http.ResponseWriter, r *http.Reque
writeResponse(w, http.StatusNoContent, nil, mimeNone)
}
+
+func (s3a *S3ApiServer) HeadBucketHandler(w http.ResponseWriter, r *http.Request) {
+
+ vars := mux.Vars(r)
+ bucket := vars["bucket"]
+
+ err := s3a.withFilerClient(func(client filer_pb.SeaweedFilerClient) error {
+
+ request := &filer_pb.LookupDirectoryEntryRequest{
+ Directory: s3a.option.BucketsPath,
+ Name: bucket,
+ }
+
+ glog.V(1).Infof("lookup bucket: %v", request)
+ if _, err := client.LookupDirectoryEntry(context.Background(), request); err != nil {
+ return fmt.Errorf("lookup bucket %s/%s: %v", s3a.option.BucketsPath, bucket, err)
+ }
+
+ return nil
+ })
+
+ if err != nil {
+ writeErrorResponse(w, ErrNoSuchBucket, r.URL)
+ return
+ }
+
+ writeSuccessResponseEmpty(w)
+}