diff options
author | Teddy Wing | 2017-06-04 00:26:03 +0200 |
---|---|---|
committer | Teddy Wing | 2017-06-04 00:26:03 +0200 |
commit | 34fb8b7b98076b65b05efc2bbaff013fbbbf5116 (patch) | |
tree | eae64bb174ff4b708f2ba701168acac373079020 /timetask/http.go | |
parent | f8821fa88888491bf49d8cd626f7a011665c6066 (diff) | |
parent | 6a62cc9aef3684ef0bd72e6ab79157a699b01c72 (diff) | |
download | timetasker-34fb8b7b98076b65b05efc2bbaff013fbbbf5116.tar.bz2 |
Merge branch 'command-to-get-module-ids-of-project' into timetasker-daily
Diffstat (limited to 'timetask/http.go')
-rw-r--r-- | timetask/http.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/timetask/http.go b/timetask/http.go index 8c41b4f..575ceae 100644 --- a/timetask/http.go +++ b/timetask/http.go @@ -1,6 +1,9 @@ package timetask import ( + "bytes" + "fmt" + "io/ioutil" "net/http" "net/http/cookiejar" "net/url" @@ -126,3 +129,51 @@ 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) + + modules, err := ModuleParseXML(response_body) + if err != nil { + return "", err + } + + var module_buf bytes.Buffer + module_buf.WriteString("ID\tModule\n") + for _, module := range modules { + module_buf.WriteString( + fmt.Sprintf("%d\t%s\n", module.ID, module.Name), + ) + } + + return module_buf.String(), nil +} |