Я пишу API на ходу, который может создать организацию с правилами политик по умолчанию.
Я хочу использовать внешний файл конфигурации YAML для включения некоторых политик в мой API (я фактически помещаю политики в свой код в функцию, которая создает мою организацию сущностей):
policy.yml
- role: "admin"
organisationid: organisation.ID
policies:
[{Object: "/*", Action: "*"}]
- role: "user"
organisationid: organisation.ID
policies:
[{Object: "/me", Action: "GET"},
{Object: "/organisations", Action: "GET"},
{Object: "/acl/roles", Action: "GET"}]
Я извлекаю его, используя go-yaml lib, и ожидаемый результат должен быть:
[{admin organisation.ID [{/* *}]} {user organisation.ID [{/me GET} {/organisations GET} {/acl/roles GET}]}]
Но когда я извлекаю его в виде структуры:
// OrganisationRole ...
type OrganisationRoleNoPolicy struct {
Role string `json:"role"`
OrganisationID string `json:"organisation"`
Policies []map[string]string `json:"policies"`
}
func extractYaml() (config []OrganisationRoleNoPolicy) {
filename := "policy.yml"
source, err := ioutil.ReadFile(filename)
if err != nil {
panic(err)
}
err = yaml.Unmarshal(source, &config)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("--- config:\n%v\n\n", config)
return
}
Я получаю это:
[{admin organisation.ID [map[Object:/* Action:*]]} {user organisation.ID [map[Object:/me Action:GET] map[Object:/organisations Action:GET] map[Object:/acl/roles Action:GET]]}]
Может быть, я не совсем понимаю, как использовать или правильно писать YAML, поэтому, ребята, не могли бы вы помочь мне понять, как отобразить его, чтобы получить ожидаемый результат.