diff options
author | Lars Wirzenius <lwirzenius@wikimedia.org> | 2020-01-02 17:11:19 +0200 |
---|---|---|
committer | Lars Wirzenius <lwirzenius@wikimedia.org> | 2020-01-02 17:11:19 +0200 |
commit | 6fe8b7a7f84883cdbe1f2807a96be6571a11d2b1 (patch) | |
tree | b70ee7ebf627f4dc5f6037add9e1d4b6674fc4aa | |
parent | 8d6a38a706e9b2e602a6411d0fb3395f484aa9a7 (diff) | |
download | ickadmin-6fe8b7a7f84883cdbe1f2807a96be6571a11d2b1.tar.gz |
Refactor: move config file parsing to its own func
-rw-r--r-- | ickadmin.go | 37 |
1 files 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 +} |