aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main.go10
-rw-r--r--timetask/http.go36
2 files changed, 46 insertions, 0 deletions
diff --git a/main.go b/main.go
index 861dc8b..1521821 100644
--- a/main.go
+++ b/main.go
@@ -42,6 +42,7 @@ func main() {
)
write_config := kingpin.Flag("write-config", write_config_description).
Bool()
+ list_modules := kingpin.Flag("list-modules", "List sprints with IDs").Bool()
kingpin.Version(VERSION)
kingpin.Parse()
@@ -108,6 +109,15 @@ func main() {
os.Exit(1)
}
+ // List modules
+ if *list_modules {
+ modules, err := timetask.RequestModules(*client, time_entry)
+ kingpin.FatalIfError(err, "could not retrieve sprints")
+ fmt.Println(modules)
+
+ os.Exit(0)
+ }
+
resp, err = timetask.SubmitTimeEntry(*client, time_entry)
kingpin.FatalIfError(err, "time entry submission request failed")
diff --git a/timetask/http.go b/timetask/http.go
index 8c41b4f..3ff6f4f 100644
--- a/timetask/http.go
+++ b/timetask/http.go
@@ -1,6 +1,7 @@
package timetask
import (
+ "io/ioutil"
"net/http"
"net/http/cookiejar"
"net/url"
@@ -126,3 +127,38 @@ func buildSubmissionParams(time_entry TimeEntry) url.Values {
return v
}
+
+func RequestModules(
+ client http.Client,
+ time_entry TimeEntry,
+) (string, error) {
+ params := url.Values{
+ "module": {"projects"},
+ "action": {"listmodulesxref"},
+ "f_ID": {strconv.Itoa(time_entry.Project)},
+ "f_active": {"t"},
+ "f_clientID": {strconv.Itoa(time_entry.Client)},
+ "f_personID": {strconv.Itoa(time_entry.PersonID)},
+ "f_milestoneID": {""},
+ }
+ modules_url, err := url.Parse(baseURL)
+ if err != nil {
+ return "", err
+ }
+
+ modules_url.RawQuery = params.Encode()
+
+ resp, err := client.Get(modules_url.String())
+ if err != nil {
+ return "", err
+ }
+
+ defer resp.Body.Close()
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return "", err
+ }
+ response_body := string(body)
+
+ return response_body, nil
+}