From 789af541210d2812f7ff0daa7e00b6df681554dc Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 15 Aug 2023 15:50:40 -0400 Subject: [PATCH 1/4] [BREAKING] Change Config.Server.Documents type []string -> map[string]string Add DisplayName object to use in documentation-html render --- cmd/server.go | 21 ++++++++++++++------- config/config.go | 14 +++++++------- examples/config/agecem-org.yaml | 6 ++++-- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/cmd/server.go b/cmd/server.go index 5173374..499e7ba 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -96,7 +96,12 @@ func init() { viper.BindPFlag("server.documents.use_ssl", serverCmd.Flags().Lookup("server-documents-use-ssl")) // server.documents.buckets - --server-documents-buckets - serverCmd.Flags().StringSlice("server-documents-buckets", []string{"proces-verbaux", "politiques-et-reglements"}, "Buckets that are allowed to be accessed by the API (config: server.documents.buckets)") + serverCmd.Flags().StringToString("server-documents-buckets", map[string]string{ + "proces-verbaux": "Procès-verbaux", + "politiques": "Politiques", + "reglements": "Règlements", + "formulaires": "Formulaires", + }, "Buckets that are allowed to be accessed by the API (config: server.documents.buckets)") viper.BindPFlag("server.documents.buckets", serverCmd.Flags().Lookup("server-documents-buckets")) // server.api.auth - --server-api-auth @@ -293,7 +298,7 @@ func handleDocumentation(c echo.Context) error { return c.Render(http.StatusInternalServerError, "documentation-html", nil) } - var buckets []string + var buckets map[string]string err = json.Unmarshal(result, &buckets) if err != nil { @@ -301,13 +306,14 @@ func handleDocumentation(c echo.Context) error { } type Bucket struct { - Name string - Documents []string + Name string + DisplayName string + Documents []string } var data []Bucket - for _, bucket := range buckets { + for bucket, displayName := range buckets { content, err := client.Call(http.MethodGet, fmt.Sprintf("/v1/bucket/%s", bucket)) if err != nil { return c.Render(http.StatusInternalServerError, "documentation-html", nil) @@ -339,8 +345,9 @@ func handleDocumentation(c echo.Context) error { */ data = append(data, Bucket{ - Name: bucket, - Documents: documents, + Name: bucket, + DisplayName: displayName, + Documents: documents, }) } diff --git a/config/config.go b/config/config.go index d2d637a..26f1a95 100644 --- a/config/config.go +++ b/config/config.go @@ -28,13 +28,13 @@ type Config struct { Protocol string `mapstructure:"protocol"` } `mapstructure:"api"` Documents struct { - AccessKeyId string `mapstructure:"access_key_id"` - Buckets []string `mapstructure:"buckets"` - Endpoint string `mapstructure:"endpoint"` - SecretAccessKey string `mapstructure:"secret_access_key"` - UseSSL bool `mapstructure:"use_ssl"` - KeyId string `mapstructure:"keyid"` - KeyValue string `mapstructure:"keyvalue"` + AccessKeyId string `mapstructure:"access_key_id"` + Buckets map[string]string `mapstructure:"buckets"` + Endpoint string `mapstructure:"endpoint"` + SecretAccessKey string `mapstructure:"secret_access_key"` + UseSSL bool `mapstructure:"use_ssl"` + KeyId string `mapstructure:"keyid"` + KeyValue string `mapstructure:"keyvalue"` } `mapstructure:"documents"` Port int `mapstructure:"port"` } `mapstructure:"server"` diff --git a/examples/config/agecem-org.yaml b/examples/config/agecem-org.yaml index 55a2535..5d77cf5 100644 --- a/examples/config/agecem-org.yaml +++ b/examples/config/agecem-org.yaml @@ -35,8 +35,10 @@ server: # # Also used to specify which buckets are to be created on receiving a POST request on /v1/seed buckets: - - 'proces-verbaux' - - 'politiques-et-reglements' + 'proces-verbaux': 'Procès-verbaux' + 'politiques': 'Politiques' + 'reglements': 'Règlements' + 'formulaires': 'Formulaires' api: # Enable or disable key auth on /v1 routes From 0a6008189c3fe74b0dc66b64c0b219a2c5a67801 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 15 Aug 2023 15:51:42 -0400 Subject: [PATCH 2/4] Fix mediaclient usage of map[string]string buckets --- media/media.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/media/media.go b/media/media.go index 8f22e8f..b5cb765 100644 --- a/media/media.go +++ b/media/media.go @@ -58,7 +58,7 @@ func (m *MediaClient) Seed() ([]string, error) { var new_buckets []string - for _, bucket := range cfg.Server.Documents.Buckets { + for bucket := range cfg.Server.Documents.Buckets { exists, err := m.MinioClient.BucketExists(context.Background(), bucket) if err != nil { return new_buckets, err From 9bcf49b5e9775e81c1c21bfc1d2b32314e843c57 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 15 Aug 2023 15:52:03 -0400 Subject: [PATCH 3/4] Fix serverhandlers usage of map[string]string buckets --- serverhandlers/serverhandlers.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/serverhandlers/serverhandlers.go b/serverhandlers/serverhandlers.go index eb688b5..6aca6d1 100644 --- a/serverhandlers/serverhandlers.go +++ b/serverhandlers/serverhandlers.go @@ -72,16 +72,16 @@ func HandleV1BucketList(c echo.Context) error { }) } - var buckets []string + var buckets = make(map[string]string) - for _, bucket_name := range cfg.Server.Documents.Buckets { + for bucket_name, bucket_display_name := range cfg.Server.Documents.Buckets { exists, err := mediaClient.MinioClient.BucketExists(context.Background(), bucket_name) if err != nil { return c.JSON(http.StatusInternalServerError, "Error during minio#BucketExists") } if exists { - buckets = append(buckets, bucket_name) + buckets[bucket_name] = bucket_display_name } } @@ -99,7 +99,7 @@ func HandleV1BucketRead(c echo.Context) error { bucket := c.Param("bucket") allowed := false - for _, bucket_allowed := range cfg.Server.Documents.Buckets { + for bucket_allowed := range cfg.Server.Documents.Buckets { if bucket == bucket_allowed { allowed = true } @@ -171,7 +171,7 @@ func HandleV1DocumentCreate(c echo.Context) error { } allowed := false - for _, bucket_allowed := range cfg.Server.Documents.Buckets { + for bucket_allowed := range cfg.Server.Documents.Buckets { if bucket == bucket_allowed { allowed = true } @@ -240,7 +240,7 @@ func HandleV1DocumentRead(c echo.Context) error { document := c.Param("document") allowed := false - for _, bucket_allowed := range cfg.Server.Documents.Buckets { + for bucket_allowed := range cfg.Server.Documents.Buckets { if bucket == bucket_allowed { allowed = true } @@ -317,7 +317,7 @@ func HandleV1DocumentDelete(c echo.Context) error { document := c.Param("document") allowed := false - for _, bucket_allowed := range cfg.Server.Documents.Buckets { + for bucket_allowed := range cfg.Server.Documents.Buckets { if bucket == bucket_allowed { allowed = true } From 58d7c7890bab8ee08fcc6524dcc1d198ef567c27 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 15 Aug 2023 15:58:12 -0400 Subject: [PATCH 4/4] Utiliser Bucket.DisplayName dans documentation-html --- templates/html/documentation.gohtml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/html/documentation.gohtml b/templates/html/documentation.gohtml index 2faaa88..ab846ed 100644 --- a/templates/html/documentation.gohtml +++ b/templates/html/documentation.gohtml @@ -12,8 +12,9 @@

{{ range . }} {{ $bucket_name := .Name }} + {{ $bucket_display_name := .DisplayName }}

- {{ $bucket_name }} + {{ $bucket_display_name }}
    {{ range .Documents }}