Removed Fatalf
in order to prevent a huge amount of restarts i removed Fatalf and made it return normally I also made GetTime load the timezone once and just return the correct value as well as default to utc made the Auth function retry 3 times per account and send an error after that put time.Sleep into the correct loop in main.go initUpdate is in main now
This commit is contained in:
parent
1d57e8a867
commit
d2a84a8435
7 changed files with 62 additions and 38 deletions
|
|
@ -32,14 +32,14 @@ func Classes(cookies []*http.Cookie) {
|
||||||
g := getClasses{"2023-05-06 15:44:22.215292", "getKlassen", map[string]interface{}{}, "2.0"}
|
g := getClasses{"2023-05-06 15:44:22.215292", "getKlassen", map[string]interface{}{}, "2.0"}
|
||||||
ClassesJson, err := json.Marshal(g)
|
ClassesJson, err := json.Marshal(g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error marshaling login data: %v", err)
|
log.Printf("Error marshaling login data: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
classes := bytes.NewReader(ClassesJson)
|
classes := bytes.NewReader(ClassesJson)
|
||||||
|
|
||||||
prompt, err := http.NewRequest("POST", Url, classes)
|
prompt, err := http.NewRequest("POST", Url, classes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error creatingrequest: %v", err)
|
log.Printf("Error creatingrequest: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// log.Println("prompt without extra header or cookie ", prompt)
|
// log.Println("prompt without extra header or cookie ", prompt)
|
||||||
|
|
@ -72,15 +72,17 @@ func Classes(cookies []*http.Cookie) {
|
||||||
var Response ClassesResponse
|
var Response ClassesResponse
|
||||||
err = json.Unmarshal(response, &Response)
|
err = json.Unmarshal(response, &Response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error unmarshaling response: %v", err)
|
log.Printf("Error unmarshaling response: %v", err)
|
||||||
}
|
}
|
||||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
err = os.WriteFile("classes.json", data, 0o644)
|
err = os.WriteFile("classes.json", data, 0o644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
// log.Println("Updated Classes")//dont need log anymore
|
// log.Println("Updated Classes")//dont need log anymore
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,14 +35,14 @@ func Rooms(cookies []*http.Cookie) {
|
||||||
g := getRooms{"2023-05-06 15:44:22.215292", "getRooms", map[string]interface{}{}, "2.0"}
|
g := getRooms{"2023-05-06 15:44:22.215292", "getRooms", map[string]interface{}{}, "2.0"}
|
||||||
roomsJson, err := json.Marshal(g)
|
roomsJson, err := json.Marshal(g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error marshaling login data: %v", err)
|
log.Printf("Error marshaling login data: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
rooms := bytes.NewReader(roomsJson)
|
rooms := bytes.NewReader(roomsJson)
|
||||||
|
|
||||||
prompt, err := http.NewRequest("POST", Url, rooms)
|
prompt, err := http.NewRequest("POST", Url, rooms)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error creatingrequest: %v", err)
|
log.Printf("Error creatingrequest: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// log.Println("prompt without extra header or cookie ", prompt)
|
// log.Println("prompt without extra header or cookie ", prompt)
|
||||||
|
|
@ -75,16 +75,19 @@ func Rooms(cookies []*http.Cookie) {
|
||||||
var Response RoomsResponse
|
var Response RoomsResponse
|
||||||
err = json.Unmarshal(response, &Response)
|
err = json.Unmarshal(response, &Response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error unmarshaling response: %v", err)
|
log.Printf("Error unmarshaling response: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
err = os.WriteFile("rooms.json", data, 0o644)
|
err = os.WriteFile("rooms.json", data, 0o644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
// log.Println("Updated Rooms")//dont need log anymore
|
// log.Println("Updated Rooms")//dont need log anymore
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,14 @@ func Subjects(cookies []*http.Cookie) {
|
||||||
g := getSubjects{"2023-05-06 15:44:22.215292", "getSubjects", map[string]interface{}{}, "2.0"}
|
g := getSubjects{"2023-05-06 15:44:22.215292", "getSubjects", map[string]interface{}{}, "2.0"}
|
||||||
SubjectsJson, err := json.Marshal(g)
|
SubjectsJson, err := json.Marshal(g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error marshaling login data: %v", err)
|
log.Printf("Error marshaling login data: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
subjects := bytes.NewReader(SubjectsJson)
|
subjects := bytes.NewReader(SubjectsJson)
|
||||||
|
|
||||||
prompt, err := http.NewRequest("POST", Url, subjects)
|
prompt, err := http.NewRequest("POST", Url, subjects)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error creatingrequest: %v", err)
|
log.Printf("Error creatingrequest: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// log.Println("prompt without extra header or cookie ", prompt)
|
// log.Println("prompt without extra header or cookie ", prompt)
|
||||||
|
|
@ -72,15 +72,18 @@ func Subjects(cookies []*http.Cookie) {
|
||||||
var Response SubjectsResponse
|
var Response SubjectsResponse
|
||||||
err = json.Unmarshal(response, &Response)
|
err = json.Unmarshal(response, &Response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error unmarshaling response: %v", err)
|
log.Printf("Error unmarshaling response: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
err = os.WriteFile("subjects.json", data, 0o644)
|
err = os.WriteFile("subjects.json", data, 0o644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
// log.Println("Updated Subjects")//dont need log anymore
|
// log.Println("Updated Subjects")//dont need log anymore
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,14 @@ func Teachers(cookies []*http.Cookie) {
|
||||||
g := getTeachers{"2023-05-06 15:44:22.215292", "getTeachers", map[string]interface{}{}, "2.0"}
|
g := getTeachers{"2023-05-06 15:44:22.215292", "getTeachers", map[string]interface{}{}, "2.0"}
|
||||||
TeachersJson, err := json.Marshal(g)
|
TeachersJson, err := json.Marshal(g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error marshaling login data: %v", err)
|
log.Printf("Error marshaling login data: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
teachers := bytes.NewReader(TeachersJson)
|
teachers := bytes.NewReader(TeachersJson)
|
||||||
|
|
||||||
prompt, err := http.NewRequest("POST", Url, teachers)
|
prompt, err := http.NewRequest("POST", Url, teachers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error creatingrequest: %v", err)
|
log.Printf("Error creatingrequest: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// log.Println("prompt without extra header or cookie ", prompt)
|
// log.Println("prompt without extra header or cookie ", prompt)
|
||||||
|
|
@ -72,15 +72,18 @@ func Teachers(cookies []*http.Cookie) {
|
||||||
var Response TeachersResponse
|
var Response TeachersResponse
|
||||||
err = json.Unmarshal(response, &Response)
|
err = json.Unmarshal(response, &Response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error unmarshaling response: %v", err)
|
log.Printf("Error unmarshaling response: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
err = os.WriteFile("teachers.json", data, 0o644)
|
err = os.WriteFile("teachers.json", data, 0o644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Print(err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
// log.Println("Updated Teachers")//dont need log anymore
|
// log.Println("Updated Teachers")//dont need log anymore
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
)
|
)
|
||||||
|
|
@ -59,21 +60,29 @@ func Update(user, password, userID string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Auth(user, password, userID string) ([]*http.Cookie, error) {
|
func Auth(user, password, userID string) ([]*http.Cookie, error) {
|
||||||
l := Login{"2023-05-06 15:44:22.215292", "authenticate", Params{user, password, "WebUntis Test"}, "2.0"}
|
loginJSON, _ := json.Marshal(Login{
|
||||||
loginJSON, err := json.Marshal(l)
|
"2023-05-06 15:44:22.215292", "authenticate",
|
||||||
if err != nil {
|
Params{user, password, "WebUntis Test"},
|
||||||
return nil, err
|
"2.0",
|
||||||
}
|
})
|
||||||
login := bytes.NewReader(loginJSON)
|
|
||||||
if Url == "" {
|
if Url == "" {
|
||||||
Url = os.Getenv("URL")
|
Url = os.Getenv("URL")
|
||||||
}
|
}
|
||||||
LoginOut, err := http.Post(Url, "application/json", login)
|
|
||||||
|
var LoginOut *http.Response
|
||||||
|
var err error
|
||||||
|
for attempt := 1; attempt <= 3; attempt++ {
|
||||||
|
LoginOut, err = http.Post(Url, "application/json", bytes.NewReader(loginJSON))
|
||||||
|
if err == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
log.Printf("Auth attempt %d/3 failed for %s: %v", attempt, user, err)
|
||||||
|
time.Sleep(time.Duration(attempt*2) * time.Second)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer LoginOut.Body.Close()
|
defer LoginOut.Body.Close()
|
||||||
|
|
||||||
cookies := LoginOut.Cookies()
|
cookies := LoginOut.Cookies()
|
||||||
// log.Printf("Login successful for user: %s", user)//log not needed
|
// log.Printf("Login successful for user: %s", user)//log not needed
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,17 +8,21 @@ import (
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var Location *time.Location
|
||||||
locerr error
|
|
||||||
Location *time.Location
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetTime() time.Time {
|
func init() {
|
||||||
godotenv.Load("../.env")
|
godotenv.Load("../.env")
|
||||||
timezone := os.Getenv("LOCATION_ENV")
|
timezone := os.Getenv("LOCATION_ENV")
|
||||||
Location, locerr = time.LoadLocation(timezone)
|
if timezone == "" {
|
||||||
if locerr != nil {
|
timezone = "UTC"
|
||||||
log.Fatalf("Failed to load Timezone: %v", locerr)
|
|
||||||
}
|
}
|
||||||
|
loc, err := time.LoadLocation(timezone)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed to load timezone, set as UTC")
|
||||||
|
}
|
||||||
|
Location = loc
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetTime() time.Time {
|
||||||
return time.Now().In(Location)
|
return time.Now().In(Location)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
main.go
4
main.go
|
|
@ -101,10 +101,10 @@ func init() {
|
||||||
} else {
|
} else {
|
||||||
log.Println("No Discord webhook provided, Discord notifications will be disabled")
|
log.Println("No Discord webhook provided, Discord notifications will be disabled")
|
||||||
}
|
}
|
||||||
initUpdate()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
initUpdate()
|
||||||
go BotStart.Start()
|
go BotStart.Start()
|
||||||
scheduleTimetableUpdate()
|
scheduleTimetableUpdate()
|
||||||
sigChan := make(chan os.Signal, 1)
|
sigChan := make(chan os.Signal, 1)
|
||||||
|
|
@ -301,8 +301,8 @@ func scheduleTimetableUpdate() {
|
||||||
}
|
}
|
||||||
// Always update prevData
|
// Always update prevData
|
||||||
prevData[acc.UserID] = data
|
prevData[acc.UserID] = data
|
||||||
|
time.Sleep(3 * time.Second)
|
||||||
}
|
}
|
||||||
time.Sleep(3 * time.Second)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initial update
|
// Initial update
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue