toutmonenfant/main.go

184 lines
3.6 KiB
Go
Raw Normal View History

2021-09-03 20:31:55 +00:00
package main
import (
2022-01-11 23:26:04 +00:00
"bytes"
"encoding/json"
2021-09-03 20:31:55 +00:00
"fmt"
"log"
"net/http"
2022-01-11 23:26:04 +00:00
"net/http/cookiejar"
"net/http/httputil"
2021-09-03 20:31:55 +00:00
"os"
2022-01-11 23:26:04 +00:00
"time"
2021-09-03 20:31:55 +00:00
)
2022-01-11 23:26:04 +00:00
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
2021-09-03 20:31:55 +00:00
2022-01-11 23:26:04 +00:00
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)
2021-09-03 20:31:55 +00:00
if err != nil {
log.Fatal(err)
}
2022-01-11 23:26:04 +00:00
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())
}
2021-09-03 20:31:55 +00:00
defer res.Body.Close()
2022-01-11 23:26:04 +00:00
/*
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)
2021-09-03 20:31:55 +00:00
}
2022-01-11 23:26:04 +00:00
callPost(emailUrl, jsonEmailPayload)
// signin
signinUrl := "https://www.toutemonannee.com/connect/signin"
signinPayload := signin{
Email: email,
Password: password,
Student: 0,
}
jsonSigninPayload, err := json.Marshal(signinPayload)
2021-09-03 20:31:55 +00:00
if err != nil {
log.Fatal(err)
}
2022-01-11 23:26:04 +00:00
callPost(signinUrl, jsonSigninPayload)
// get json
blogposturl := "https://www.toutemonannee.com/journal/" + schoolid + "/posts/list?page=1&publishedDateOrder=1"
2021-09-03 20:31:55 +00:00
2022-01-11 23:26:04 +00:00
callGet(blogposturl)
2021-09-03 20:31:55 +00:00
}
func main() {
2022-01-11 23:26:04 +00:00
schoolid, ok := os.LookupEnv("TOUTMONENFANTID")
email := os.LookupEnv("TOUTMONENFANTEMAIL")
password := os.LookupEnv("TOUTMONENFANTPASSWORD")
2021-09-03 20:31:55 +00:00
if ok {
2022-01-11 23:26:04 +00:00
toutmonlogin(schoolid, email, password)
2021-09-03 20:31:55 +00:00
} else {
2022-01-11 23:26:04 +00:00
fmt.Printf("TOUTMONENFANTID var is undefined")
2021-09-03 20:31:55 +00:00
}
2022-01-11 23:26:04 +00:00
2021-09-03 20:31:55 +00:00
}