summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lwirzenius@wikimedia.org>2020-01-02 17:11:19 +0200
committerLars Wirzenius <lwirzenius@wikimedia.org>2020-01-02 17:11:19 +0200
commit6fe8b7a7f84883cdbe1f2807a96be6571a11d2b1 (patch)
treeb70ee7ebf627f4dc5f6037add9e1d4b6674fc4aa
parent8d6a38a706e9b2e602a6411d0fb3395f484aa9a7 (diff)
downloadickadmin-6fe8b7a7f84883cdbe1f2807a96be6571a11d2b1.tar.gz
Refactor: move config file parsing to its own func
-rw-r--r--ickadmin.go37
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
+}