diff options
author | Teddy Wing | 2017-03-11 10:49:45 +0100 |
---|---|---|
committer | Teddy Wing | 2017-03-11 10:49:45 +0100 |
commit | 94d099641cae95724045122de93c826fe054c919 (patch) | |
tree | a96ab6d9ffee1768a29711c5fe71b16fb830f515 | |
parent | d14b4bb9be46396843c346b468dada938364c25b (diff) | |
download | timetasker-94d099641cae95724045122de93c826fe054c919.tar.bz2 |
Get login working
Fill in the `Login` function to actually log in to Time Task. Pass
credentials in via test command flags.
Referenced https://gist.github.com/varver/f327ef9087ebf76aa4c4 for the
cookie setup.
-rw-r--r-- | timetask/http.go | 28 | ||||
-rw-r--r-- | timetask/http_test.go | 12 |
2 files changed, 36 insertions, 4 deletions
diff --git a/timetask/http.go b/timetask/http.go index ae2fdc4..28e8b10 100644 --- a/timetask/http.go +++ b/timetask/http.go @@ -1,11 +1,33 @@ package timetask import ( - // "mime/multipart" "net/http" + "net/http/cookiejar" + "net/url" + + "golang.org/x/net/publicsuffix" ) -func Login() (resp *http.Response, err error) { - resp, err = http.Get("https://duckduckgo.com") +func Login(username, password string) (resp *http.Response, err error) { + cookies, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) + if err != nil { + return nil, err + } + + client := http.Client{Jar: cookies} + resp, err = client.PostForm( + "https://af83.timetask.com/index.php", + url.Values{ + "module": {"people"}, + "action": {"loginsubmit"}, + "f_url": {"/"}, + "f_username": {username}, + "f_password": {password}, + }, + ) + if err != nil { + return resp, err + } + return resp, err } diff --git a/timetask/http_test.go b/timetask/http_test.go index 7adf2c4..e3dad9d 100644 --- a/timetask/http_test.go +++ b/timetask/http_test.go @@ -1,12 +1,22 @@ package timetask import ( + "flag" "io/ioutil" "testing" ) +var username, password string + +func init() { + flag.StringVar(&username, "username", "", "Username") + flag.StringVar(&password, "password", "", "Password") + flag.Parse() + +} + func TestLogin(t *testing.T) { - response, _ := Login() + response, _ := Login(username, password) defer response.Body.Close() body, _ := ioutil.ReadAll(response.Body) t.Log(response) |