Implémenter models.V1BucketReadResponse #133
3 changed files with 44 additions and 23 deletions
|
@ -107,11 +107,14 @@ func HandleV1BucketList(c echo.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func HandleV1BucketRead(c echo.Context) error {
|
func HandleV1BucketRead(c echo.Context) error {
|
||||||
|
var response models.V1BucketReadResponse
|
||||||
|
|
||||||
var cfg config.Config
|
var cfg config.Config
|
||||||
if err := viper.Unmarshal(&cfg); err != nil {
|
if err := viper.Unmarshal(&cfg); err != nil {
|
||||||
return c.JSON(http.StatusInternalServerError, map[string]string{
|
response.StatusCode = http.StatusInternalServerError
|
||||||
"error": err.Error(),
|
response.Error = err.Error()
|
||||||
})
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
bucket := c.Param("bucket")
|
bucket := c.Param("bucket")
|
||||||
|
@ -124,10 +127,11 @@ func HandleV1BucketRead(c echo.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !allowed {
|
if !allowed {
|
||||||
/*
|
/* TODO models.NotFoundResponse
|
||||||
return c.JSON(http.StatusBadRequest, map[string]string{
|
response.StatusCode = http.StatusNotFound
|
||||||
"message": "Bucket is not allowed in server.documents.buckets",
|
response.Message = "Not Found"
|
||||||
})
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
*/
|
*/
|
||||||
return c.JSON(http.StatusNotFound, map[string]string{"message": "Not Found"})
|
return c.JSON(http.StatusNotFound, map[string]string{"message": "Not Found"})
|
||||||
}
|
}
|
||||||
|
@ -138,35 +142,45 @@ func HandleV1BucketRead(c echo.Context) error {
|
||||||
|
|
||||||
mediaClient, err := media.NewMediaClientFromViper()
|
mediaClient, err := media.NewMediaClientFromViper()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSON(http.StatusInternalServerError, map[string]string{
|
response.StatusCode = http.StatusInternalServerError
|
||||||
"message": "Error during media.NewMediaClientFromViper()",
|
response.Message = "Error during media.NewMediaClientFromViper()"
|
||||||
"error": err.Error(),
|
response.Error = err.Error()
|
||||||
})
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
exists, err := mediaClient.MinioClient.BucketExists(ctx, bucket)
|
exists, err := mediaClient.MinioClient.BucketExists(ctx, bucket)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSON(http.StatusInternalServerError, "Error during minio#BucketExists")
|
response.StatusCode = http.StatusInternalServerError
|
||||||
|
response.Message = "Error during minio#BucketExists"
|
||||||
|
response.Error = err.Error()
|
||||||
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !exists {
|
if !exists {
|
||||||
|
// TODO models.NotFoundResponse
|
||||||
return c.JSON(http.StatusNotFound, map[string]string{"message": "Not Found"})
|
return c.JSON(http.StatusNotFound, map[string]string{"message": "Not Found"})
|
||||||
}
|
}
|
||||||
|
|
||||||
var keys []string
|
|
||||||
|
|
||||||
objectCh := mediaClient.MinioClient.ListObjects(ctx, bucket, minio.ListObjectsOptions{})
|
objectCh := mediaClient.MinioClient.ListObjects(ctx, bucket, minio.ListObjectsOptions{})
|
||||||
for object := range objectCh {
|
for object := range objectCh {
|
||||||
if object.Err != nil {
|
if object.Err != nil {
|
||||||
return c.JSON(http.StatusInternalServerError, map[string]string{
|
response.StatusCode = http.StatusInternalServerError
|
||||||
"message": "Error during minio#ListObjects",
|
response.Message = "Error during minio#ListObjects"
|
||||||
})
|
//TODO make sure this is safe
|
||||||
|
//response.Error = object.Err.Error()
|
||||||
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
keys = append(keys, object.Key)
|
response.Data.Keys = append(response.Data.Keys, object.Key)
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.JSON(http.StatusOK, keys)
|
response.StatusCode = http.StatusOK
|
||||||
|
response.Message = "V1BucketRead ok"
|
||||||
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleV1DocumentCreate permet d'ajouter un object dans un bucket, par multipart/form-data
|
// HandleV1DocumentCreate permet d'ajouter un object dans un bucket, par multipart/form-data
|
||||||
|
|
|
@ -52,3 +52,10 @@ type V1BucketListResponse struct {
|
||||||
Buckets map[string]string
|
Buckets map[string]string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type V1BucketReadResponse struct {
|
||||||
|
Response
|
||||||
|
Data struct {
|
||||||
|
Keys []string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -68,7 +68,6 @@ func HandleDocumentation(c echo.Context) error {
|
||||||
|
|
||||||
for bucket, displayName := range v1BucketListResponse.Data.Buckets {
|
for bucket, displayName := range v1BucketListResponse.Data.Buckets {
|
||||||
// TODO move call to dedicated API client method
|
// TODO move call to dedicated API client method
|
||||||
// TODO add Response type
|
|
||||||
content, err := client.Call(http.MethodGet, fmt.Sprintf("/v1/bucket/%s", bucket))
|
content, err := client.Call(http.MethodGet, fmt.Sprintf("/v1/bucket/%s", bucket))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.StatusCode = http.StatusInternalServerError
|
response.StatusCode = http.StatusInternalServerError
|
||||||
|
@ -78,9 +77,9 @@ func HandleDocumentation(c echo.Context) error {
|
||||||
return c.Render(response.StatusCode, "documentation-html", response)
|
return c.Render(response.StatusCode, "documentation-html", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
var documents []string
|
var v1BucketReadResponse models.V1BucketReadResponse
|
||||||
|
|
||||||
err = json.Unmarshal(content, &documents)
|
err = json.Unmarshal(content, &v1BucketReadResponse)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.StatusCode = http.StatusInternalServerError
|
response.StatusCode = http.StatusInternalServerError
|
||||||
response.Message = "Error during json.Unmarshal /v1/bucket/:bucket"
|
response.Message = "Error during json.Unmarshal /v1/bucket/:bucket"
|
||||||
|
@ -110,13 +109,14 @@ func HandleDocumentation(c echo.Context) error {
|
||||||
response.Data.Buckets = append(response.Data.Buckets, models.Bucket{
|
response.Data.Buckets = append(response.Data.Buckets, models.Bucket{
|
||||||
Name: bucket,
|
Name: bucket,
|
||||||
DisplayName: displayName,
|
DisplayName: displayName,
|
||||||
Documents: documents,
|
Documents: v1BucketReadResponse.Data.Keys,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.SliceStable(response.Data.Buckets, func(i, j int) bool { return response.Data.Buckets[i].Name < response.Data.Buckets[j].Name })
|
sort.SliceStable(response.Data.Buckets, func(i, j int) bool { return response.Data.Buckets[i].Name < response.Data.Buckets[j].Name })
|
||||||
|
|
||||||
response.StatusCode = http.StatusOK
|
response.StatusCode = http.StatusOK
|
||||||
|
//response.Message = "HandleDocumentation ok"
|
||||||
|
|
||||||
// TODO render .Message
|
// TODO render .Message
|
||||||
return c.Render(response.StatusCode, "documentation-html", response)
|
return c.Render(response.StatusCode, "documentation-html", response)
|
||||||
|
|
Loading…
Reference in a new issue