diff options
| -rw-r--r-- | main.go | 10 | ||||
| -rw-r--r-- | timetask/http.go | 36 | 
2 files changed, 46 insertions, 0 deletions
| @@ -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 +} | 
