diff options
-rw-r--r-- | main.go | 23 | ||||
-rw-r--r-- | timetask/http.go | 35 |
2 files changed, 48 insertions, 10 deletions
@@ -5,6 +5,7 @@ import ( // "io/ioutil" "log" // "os" + "time" "github.com/teddywing/timetasker/timetask" @@ -25,6 +26,28 @@ var config Config func main() { loadConfig() + resp, client, err := timetask.Login( + config.Auth.Username, + config.Auth.PasswordCmd, + ) + if err != nil { + log.Fatalln(err) + } + log.Printf("%+v\n", resp) + + time_entry := timetask.NewTimeEntry( + config.Profile, + config.Projects["example"], + time.Now(), + 7, + "timetasker test", + ) + resp, err = timetask.SubmitTimeEntry(*client, time_entry) + if err != nil { + log.Fatalln(err) + } + log.Printf("%+v\n", resp) + // if len(os.Args) == 1 { // fmt.Println("Not enough arguments") // os.Exit(1) diff --git a/timetask/http.go b/timetask/http.go index 4f52565..cb91257 100644 --- a/timetask/http.go +++ b/timetask/http.go @@ -12,15 +12,21 @@ import ( "golang.org/x/net/publicsuffix" ) -func Login(username, password string) (resp *http.Response, err error) { +var baseURL string = "https://af83.timetask.com/index.php" + +func Login(username, password string) ( + resp *http.Response, + client *http.Client, + err error, +) { cookies, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) if err != nil { - return nil, err + return nil, nil, err } - client := http.Client{Jar: cookies} + client = &http.Client{Jar: cookies} resp, err = client.PostForm( - "https://af83.timetask.com/index.php", + baseURL, url.Values{ "module": {"people"}, "action": {"loginsubmit"}, @@ -30,21 +36,30 @@ func Login(username, password string) (resp *http.Response, err error) { }, ) if err != nil { - return resp, err + return resp, client, err } - return resp, err + return resp, client, err } func SubmitTimeEntry( + client http.Client, time_entry TimeEntry, ) (resp *http.Response, err error) { - v := buildSubmissionParams(time_entry) + values := buildSubmissionParams(time_entry) - v.Set("module", "time") - v.Set("action", "submitmultipletime") + values.Set("module", "time") + values.Set("action", "submitmultipletime") + + resp, err = client.PostForm( + baseURL, + values, + ) + if err != nil { + return resp, err + } - return nil, nil + return resp, nil } |