Skip to content

Commit

Permalink
Merge pull request #43 from harshavardhana/pr_out_list_buckets_respon…
Browse files Browse the repository at this point in the history
…se_should_be_nested_xml_buckets
  • Loading branch information
Harshavardhana committed Jan 23, 2015
2 parents d482c39 + 132e661 commit 3e11e9a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
4 changes: 3 additions & 1 deletion pkg/webapi/minioapi/definitions.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ type ObjectListResponse struct {
type BucketListResponse struct {
XMLName xml.Name `xml:"ListAllMyBucketsResult"`
Owner Owner
Buckets []Bucket `xml:"Buckets",innerxml`
Buckets struct {
Bucket []*Bucket
} `xml:"Buckets",innerxml` // Buckets are nested
}

type Bucket struct {
Expand Down
27 changes: 15 additions & 12 deletions pkg/webapi/minioapi/minioapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,12 @@ func (server *minioApi) listBucketsHandler(w http.ResponseWriter, req *http.Requ
if ok == false {
prefix = ""
}

contentType := "xml"
if req.Header["Accept"][0] == "application/json" {
contentType = "json"
if _, ok := req.Header["Accept"]; ok {
if req.Header["Accept"][0] == "application/json" {
contentType = "json"
}
}
buckets := server.storage.ListBuckets(prefix)
response := generateBucketsListResult(buckets)
Expand All @@ -128,13 +131,11 @@ func (server *minioApi) listBucketsHandler(w http.ResponseWriter, req *http.Requ
w.Header().Set("Content-Type", "application/json")
encoder = json.NewEncoder(&bytesBuffer)
} else {
w.Header().Set("Content-Type", "application/xml")
w.Header().Set("Content-Type", `xml version="1.0" encoding="UTF-8"`)
encoder = xml.NewEncoder(&bytesBuffer)
}
encoder.Encode(response)

w.Write(bytesBuffer.Bytes())

}

func (server *minioApi) listObjectsHandler(w http.ResponseWriter, req *http.Request) {
Expand All @@ -157,8 +158,10 @@ func (server *minioApi) listObjectsHandler(w http.ResponseWriter, req *http.Requ

contentType := "xml"

if req.Header["Accept"][0] == "application/json" {
contentType = "json"
if _, ok := req.Header["Accept"]; ok {
if req.Header["Accept"][0] == "application/json" {
contentType = "json"
}
}

objects := server.storage.ListObjects(bucket, prefix, 1000)
Expand All @@ -170,7 +173,7 @@ func (server *minioApi) listObjectsHandler(w http.ResponseWriter, req *http.Requ
w.Header().Set("Content-Type", "application/json")
encoder = json.NewEncoder(&bytesBuffer)
} else {
w.Header().Set("Content-Type", "application/xml")
w.Header().Set("Content-Type", `xml version="1.0" encoding="UTF-8"`)
encoder = xml.NewEncoder(&bytesBuffer)
}
encoder.Encode(response)
Expand Down Expand Up @@ -202,25 +205,25 @@ func (server *minioApi) putBucketHandler(w http.ResponseWriter, req *http.Reques
}

func generateBucketsListResult(buckets []mstorage.BucketMetadata) (data BucketListResponse) {
listbuckets := []Bucket{}
var listbuckets []*Bucket

owner := Owner{
ID: "minio",
DisplayName: "minio",
}

for _, bucket := range buckets {
listbucket := Bucket{
listbucket := &Bucket{
Name: bucket.Name,
CreationDate: formatDate(bucket.Created),
}
listbuckets = append(listbuckets, listbucket)
}

data = BucketListResponse{
Owner: owner,
Buckets: listbuckets,
Owner: owner,
}
data.Buckets.Bucket = listbuckets
return
}

Expand Down

0 comments on commit 3e11e9a

Please sign in to comment.