Skip to content

Commit ed1c009

Browse files
author
Katrina Owen
authored
Merge pull request #819 from exercism/download-request-query-params
Extract helper for download request query params
2 parents 0ae6180 + 7513bcb commit ed1c009

File tree

1 file changed

+34
-26
lines changed

1 file changed

+34
-26
lines changed

cmd/download.go

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,6 @@ func runDownload(cfg config.Config, flags *pflag.FlagSet, args []string) error {
5454
return err
5555
}
5656

57-
track, err := flags.GetString("track")
58-
if err != nil {
59-
return err
60-
}
61-
62-
team, err := flags.GetString("team")
63-
if err != nil {
64-
return err
65-
}
66-
6757
identifier, err := downloadIdentifier(flags)
6858
if err != nil {
6959
return err
@@ -80,25 +70,10 @@ func runDownload(cfg config.Config, flags *pflag.FlagSet, args []string) error {
8070
return err
8171
}
8272

83-
uuid, err := flags.GetString("uuid")
73+
req, err = addQueryToDownloadRequest(flags, req)
8474
if err != nil {
8575
return err
8676
}
87-
slug, err := flags.GetString("exercise")
88-
if err != nil {
89-
return err
90-
}
91-
if uuid == "" {
92-
q := req.URL.Query()
93-
q.Add("exercise_id", slug)
94-
if track != "" {
95-
q.Add("track_id", track)
96-
}
97-
if team != "" {
98-
q.Add("team_id", team)
99-
}
100-
req.URL.RawQuery = q.Encode()
101-
}
10277

10378
res, err := client.Do(req)
10479
if err != nil {
@@ -269,6 +244,39 @@ func downloadIdentifier(flags *pflag.FlagSet) (string, error) {
269244
return identifier, nil
270245
}
271246

247+
func addQueryToDownloadRequest(flags *pflag.FlagSet, req *http.Request) (*http.Request, error) {
248+
uuid, err := flags.GetString("uuid")
249+
if err != nil {
250+
return req, err
251+
}
252+
slug, err := flags.GetString("exercise")
253+
if err != nil {
254+
return req, err
255+
}
256+
track, err := flags.GetString("track")
257+
if err != nil {
258+
return req, err
259+
}
260+
261+
team, err := flags.GetString("team")
262+
if err != nil {
263+
return req, err
264+
}
265+
266+
if uuid == "" {
267+
q := req.URL.Query()
268+
q.Add("exercise_id", slug)
269+
if track != "" {
270+
q.Add("track_id", track)
271+
}
272+
if team != "" {
273+
q.Add("team_id", team)
274+
}
275+
req.URL.RawQuery = q.Encode()
276+
}
277+
return req, nil
278+
}
279+
272280
func setupDownloadFlags(flags *pflag.FlagSet) {
273281
flags.StringP("uuid", "u", "", "the solution UUID")
274282
flags.StringP("track", "t", "", "the track ID")

0 commit comments

Comments
 (0)