|
|
|
@ -67,6 +67,15 @@ func parseNamespaceInput(namespace string) ([]string, error) { |
|
|
|
return s3tables.ParseNamespace(namespace) |
|
|
|
} |
|
|
|
|
|
|
|
func (s *AdminServer) parseNamespaceFromGin(c *gin.Context, namespace string) ([]string, bool) { |
|
|
|
parts, err := parseNamespaceInput(namespace) |
|
|
|
if err != nil { |
|
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
return nil, false |
|
|
|
} |
|
|
|
return parts, true |
|
|
|
} |
|
|
|
|
|
|
|
func newS3TablesManager() *s3tables.Manager { |
|
|
|
manager := s3tables.NewManager() |
|
|
|
manager.SetAccountID(s3_constants.AccountAdminId) |
|
|
|
@ -698,9 +707,8 @@ func (s *AdminServer) CreateS3TablesNamespace(c *gin.Context) { |
|
|
|
c.JSON(400, gin.H{"error": "bucket_arn and name are required"}) |
|
|
|
return |
|
|
|
} |
|
|
|
namespaceParts, err := parseNamespaceInput(req.Name) |
|
|
|
if err != nil { |
|
|
|
c.JSON(400, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
namespaceParts, ok := s.parseNamespaceFromGin(c, req.Name) |
|
|
|
if !ok { |
|
|
|
return |
|
|
|
} |
|
|
|
createReq := &s3tables.CreateNamespaceRequest{TableBucketARN: req.BucketARN, Namespace: namespaceParts} |
|
|
|
@ -722,9 +730,8 @@ func (s *AdminServer) DeleteS3TablesNamespace(c *gin.Context) { |
|
|
|
c.JSON(400, gin.H{"error": "bucket and name query parameters are required"}) |
|
|
|
return |
|
|
|
} |
|
|
|
namespaceParts, err := parseNamespaceInput(namespace) |
|
|
|
if err != nil { |
|
|
|
c.JSON(400, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
namespaceParts, ok := s.parseNamespaceFromGin(c, namespace) |
|
|
|
if !ok { |
|
|
|
return |
|
|
|
} |
|
|
|
req := &s3tables.DeleteNamespaceRequest{TableBucketARN: bucketArn, Namespace: namespaceParts} |
|
|
|
@ -767,9 +774,8 @@ func (s *AdminServer) CreateS3TablesTable(c *gin.Context) { |
|
|
|
c.JSON(400, gin.H{"error": "bucket_arn, namespace, and name are required"}) |
|
|
|
return |
|
|
|
} |
|
|
|
namespaceParts, err := parseNamespaceInput(req.Namespace) |
|
|
|
if err != nil { |
|
|
|
c.JSON(400, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
namespaceParts, ok := s.parseNamespaceFromGin(c, req.Namespace) |
|
|
|
if !ok { |
|
|
|
return |
|
|
|
} |
|
|
|
format := req.Format |
|
|
|
@ -807,9 +813,8 @@ func (s *AdminServer) DeleteS3TablesTable(c *gin.Context) { |
|
|
|
c.JSON(400, gin.H{"error": "bucket, namespace, and name query parameters are required"}) |
|
|
|
return |
|
|
|
} |
|
|
|
namespaceParts, err := parseNamespaceInput(namespace) |
|
|
|
if err != nil { |
|
|
|
c.JSON(400, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
namespaceParts, ok := s.parseNamespaceFromGin(c, namespace) |
|
|
|
if !ok { |
|
|
|
return |
|
|
|
} |
|
|
|
req := &s3tables.DeleteTableRequest{TableBucketARN: bucketArn, Namespace: namespaceParts, Name: name, VersionToken: version} |
|
|
|
@ -885,9 +890,8 @@ func (s *AdminServer) PutS3TablesTablePolicy(c *gin.Context) { |
|
|
|
c.JSON(400, gin.H{"error": "bucket_arn, namespace, name, and policy are required"}) |
|
|
|
return |
|
|
|
} |
|
|
|
namespaceParts, err := parseNamespaceInput(req.Namespace) |
|
|
|
if err != nil { |
|
|
|
c.JSON(400, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
namespaceParts, ok := s.parseNamespaceFromGin(c, req.Namespace) |
|
|
|
if !ok { |
|
|
|
return |
|
|
|
} |
|
|
|
putReq := &s3tables.PutTablePolicyRequest{TableBucketARN: req.BucketARN, Namespace: namespaceParts, Name: req.Name, ResourcePolicy: req.Policy} |
|
|
|
@ -906,9 +910,8 @@ func (s *AdminServer) GetS3TablesTablePolicy(c *gin.Context) { |
|
|
|
c.JSON(400, gin.H{"error": "bucket, namespace, and name query parameters are required"}) |
|
|
|
return |
|
|
|
} |
|
|
|
namespaceParts, err := parseNamespaceInput(namespace) |
|
|
|
if err != nil { |
|
|
|
c.JSON(400, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
namespaceParts, ok := s.parseNamespaceFromGin(c, namespace) |
|
|
|
if !ok { |
|
|
|
return |
|
|
|
} |
|
|
|
getReq := &s3tables.GetTablePolicyRequest{TableBucketARN: bucketArn, Namespace: namespaceParts, Name: name} |
|
|
|
@ -928,9 +931,8 @@ func (s *AdminServer) DeleteS3TablesTablePolicy(c *gin.Context) { |
|
|
|
c.JSON(400, gin.H{"error": "bucket, namespace, and name query parameters are required"}) |
|
|
|
return |
|
|
|
} |
|
|
|
namespaceParts, err := parseNamespaceInput(namespace) |
|
|
|
if err != nil { |
|
|
|
c.JSON(400, gin.H{"error": "Invalid namespace: " + err.Error()}) |
|
|
|
namespaceParts, ok := s.parseNamespaceFromGin(c, namespace) |
|
|
|
if !ok { |
|
|
|
return |
|
|
|
} |
|
|
|
deleteReq := &s3tables.DeleteTablePolicyRequest{TableBucketARN: bucketArn, Namespace: namespaceParts, Name: name} |
|
|
|
|