184 lines
3.6 KiB
Go
184 lines
3.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"net/http/cookiejar"
|
|
"net/http/httputil"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
type username struct {
|
|
Email string `json:"username"`
|
|
}
|
|
|
|
type signin struct {
|
|
Email string `json:"username"`
|
|
Password string `json:"password"`
|
|
Student int `json:"student"`
|
|
}
|
|
|
|
var client http.Client
|
|
|
|
func init() {
|
|
jar, err := cookiejar.New(nil)
|
|
if err != nil {
|
|
log.Fatalf("Got error while creating cookie jar %s", err.Error())
|
|
}
|
|
|
|
client = http.Client{
|
|
Jar: jar,
|
|
Timeout: time.Second * 10,
|
|
}
|
|
}
|
|
|
|
func callGet(url string) error {
|
|
method := "GET"
|
|
req, err := http.NewRequest(method, url, nil)
|
|
if err != nil {
|
|
return fmt.Errorf("Got error %s", err.Error())
|
|
}
|
|
|
|
req.Header.Set("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0")
|
|
res, err := client.Do(req)
|
|
if err != nil {
|
|
return fmt.Errorf("Got error %s", err.Error())
|
|
}
|
|
defer res.Body.Close()
|
|
/*
|
|
fmt.Printf("=====\n\nStatuscode: %s %d\n========\n\n", url, res.StatusCode)
|
|
|
|
body, err := ioutil.ReadAll(res.Body)
|
|
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Println(string(body))
|
|
fmt.Printf("=====\n\n")
|
|
for name, values := range res.Header {
|
|
// Loop over all values for the name.
|
|
for _, value := range values {
|
|
fmt.Println(name, value)
|
|
}
|
|
}
|
|
*/
|
|
|
|
dump, err := httputil.DumpRequestOut(req, true)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("%q", dump)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
func callPost(url string, payload []byte) error {
|
|
method := "POST"
|
|
|
|
req, err := http.NewRequest(method, url, bytes.NewBuffer(payload))
|
|
if err != nil {
|
|
return fmt.Errorf("Got error %s", err.Error())
|
|
}
|
|
|
|
// assume all POST is JSON
|
|
req.Header.Set("content-type", "application/json; charset=UTF-8")
|
|
req.Header.Set("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0")
|
|
dump, err := httputil.DumpRequestOut(req, true)
|
|
|
|
res, err := client.Do(req)
|
|
if err != nil {
|
|
return fmt.Errorf("Got error %s", err.Error())
|
|
}
|
|
defer res.Body.Close()
|
|
/*
|
|
fmt.Printf("=====\n\nStatuscode: %s %d\n========\n\n", url, res.StatusCode)
|
|
|
|
body, err := ioutil.ReadAll(res.Body)
|
|
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Println(string(body))
|
|
fmt.Printf("=====\n\n")
|
|
|
|
for name, values := range res.Header {
|
|
// Loop over all values for the name.
|
|
for _, value := range values {
|
|
fmt.Println(name, value)
|
|
}
|
|
}
|
|
*/
|
|
fmt.Printf("=DumpRequestOut====\n\n")
|
|
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("%s", dump)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
func toutmonlogin(schoolid string, email string, password string) {
|
|
|
|
// get all cookie first
|
|
loginUrl := "https://www.toutemonannee.com/connect"
|
|
callGet(loginUrl)
|
|
|
|
// email-username
|
|
emailUrl := "https://www.toutemonannee.com/connect/check-email-username"
|
|
emailPayload := username{
|
|
Email: email,
|
|
}
|
|
|
|
jsonEmailPayload, err := json.Marshal(emailPayload)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
callPost(emailUrl, jsonEmailPayload)
|
|
|
|
// signin
|
|
signinUrl := "https://www.toutemonannee.com/connect/signin"
|
|
signinPayload := signin{
|
|
Email: email,
|
|
Password: password,
|
|
Student: 0,
|
|
}
|
|
|
|
jsonSigninPayload, err := json.Marshal(signinPayload)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
callPost(signinUrl, jsonSigninPayload)
|
|
|
|
// get json
|
|
blogposturl := "https://www.toutemonannee.com/journal/" + schoolid + "/posts/list?page=1&publishedDateOrder=1"
|
|
|
|
callGet(blogposturl)
|
|
|
|
}
|
|
|
|
func main() {
|
|
|
|
schoolid, ok := os.LookupEnv("TOUTMONENFANTID")
|
|
email := os.LookupEnv("TOUTMONENFANTEMAIL")
|
|
password := os.LookupEnv("TOUTMONENFANTPASSWORD")
|
|
if ok {
|
|
toutmonlogin(schoolid, email, password)
|
|
} else {
|
|
fmt.Printf("TOUTMONENFANTID var is undefined")
|
|
}
|
|
|
|
}
|