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  } | 
