From 6fe8b7a7f84883cdbe1f2807a96be6571a11d2b1 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 2 Jan 2020 17:11:19 +0200 Subject: Refactor: move config file parsing to its own func --- ickadmin.go | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/ickadmin.go b/ickadmin.go index b61bc18..e4d4fe6 100644 --- a/ickadmin.go +++ b/ickadmin.go @@ -18,6 +18,12 @@ type jwt struct { Access_token string } +type config struct { + idp string + id string + secret string +} + func main() { var config string @@ -29,29 +35,24 @@ func main() { os.Exit(1) } - cfg, err := ini.Load(config) + cfg, err := get_creds(config) if err != nil { - fmt.Fprintf(os.Stderr, "reading %s: %v\n", config, err) os.Exit(1) } - idp := cfg.Section("").Key("idp").String() - id := cfg.Section("").Key("id").String() - secret := cfg.Section("").Key("secret").String() - data := url.Values{} data.Add("grant_type", "client_credentials") data.Add("scope", "uapi_projects_get") client := &http.Client{} - req, err := http.NewRequest("POST", idp, strings.NewReader(data.Encode())) - req.SetBasicAuth(id, secret) + req, err := http.NewRequest("POST", cfg.idp, strings.NewReader(data.Encode())) + req.SetBasicAuth(cfg.id, cfg.secret) req.Header.Add("Content-Type", "application/x-www-form-urlencoded") req.Header.Add("Content-Length", strconv.Itoa(len(data.Encode()))) resp, err := client.Do(req) if err != nil { - fmt.Fprintf(os.Stderr, "POST %s: %v\n", idp, err) + fmt.Fprintf(os.Stderr, "POST %s: %v\n", cfg.idp, err) os.Exit(1) } @@ -62,3 +63,21 @@ func main() { json.Unmarshal([]byte(s), &res) fmt.Fprintf(os.Stdout, "%s\n", res.Access_token) } + +func NewConfig(idp string, id string, secret string) *config { + new := config{ idp: idp, id: id, secret: secret } + return &new +} + +func get_creds(filename string) (*config, error) { + cfg, err := ini.Load(filename) + if err != nil { + fmt.Fprintf(os.Stderr, "reading config %s: %v\n", filename, err) + return nil, err + } + + idp := cfg.Section("").Key("idp").String() + id := cfg.Section("").Key("id").String() + secret := cfg.Section("").Key("secret").String() + return NewConfig(idp, id, secret), nil +} -- cgit v1.2.1