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"}
|
||||
ClassesJson, err := json.Marshal(g)
|
||||
if err != nil {
|
||||
log.Fatalf("Error marshaling login data: %v", err)
|
||||
log.Printf("Error marshaling login data: %v", err)
|
||||
return
|
||||
}
|
||||
classes := bytes.NewReader(ClassesJson)
|
||||
|
||||
prompt, err := http.NewRequest("POST", Url, classes)
|
||||
if err != nil {
|
||||
log.Fatalf("Error creatingrequest: %v", err)
|
||||
log.Printf("Error creatingrequest: %v", err)
|
||||
return
|
||||
}
|
||||
// log.Println("prompt without extra header or cookie ", prompt)
|
||||
|
|
@ -72,15 +72,17 @@ func Classes(cookies []*http.Cookie) {
|
|||
var Response ClassesResponse
|
||||
err = json.Unmarshal(response, &Response)
|
||||
if err != nil {
|
||||
log.Fatalf("Error unmarshaling response: %v", err)
|
||||
log.Printf("Error unmarshaling response: %v", err)
|
||||
}
|
||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
err = os.WriteFile("classes.json", data, 0o644)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
// 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"}
|
||||
roomsJson, err := json.Marshal(g)
|
||||
if err != nil {
|
||||
log.Fatalf("Error marshaling login data: %v", err)
|
||||
log.Printf("Error marshaling login data: %v", err)
|
||||
return
|
||||
}
|
||||
rooms := bytes.NewReader(roomsJson)
|
||||
|
||||
prompt, err := http.NewRequest("POST", Url, rooms)
|
||||
if err != nil {
|
||||
log.Fatalf("Error creatingrequest: %v", err)
|
||||
log.Printf("Error creatingrequest: %v", err)
|
||||
return
|
||||
}
|
||||
// log.Println("prompt without extra header or cookie ", prompt)
|
||||
|
|
@ -75,16 +75,19 @@ func Rooms(cookies []*http.Cookie) {
|
|||
var Response RoomsResponse
|
||||
err = json.Unmarshal(response, &Response)
|
||||
if err != nil {
|
||||
log.Fatalf("Error unmarshaling response: %v", err)
|
||||
log.Printf("Error unmarshaling response: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
err = os.WriteFile("rooms.json", data, 0o644)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
// 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"}
|
||||
SubjectsJson, err := json.Marshal(g)
|
||||
if err != nil {
|
||||
log.Fatalf("Error marshaling login data: %v", err)
|
||||
log.Printf("Error marshaling login data: %v", err)
|
||||
return
|
||||
}
|
||||
subjects := bytes.NewReader(SubjectsJson)
|
||||
|
||||
prompt, err := http.NewRequest("POST", Url, subjects)
|
||||
if err != nil {
|
||||
log.Fatalf("Error creatingrequest: %v", err)
|
||||
log.Printf("Error creatingrequest: %v", err)
|
||||
return
|
||||
}
|
||||
// log.Println("prompt without extra header or cookie ", prompt)
|
||||
|
|
@ -72,15 +72,18 @@ func Subjects(cookies []*http.Cookie) {
|
|||
var Response SubjectsResponse
|
||||
err = json.Unmarshal(response, &Response)
|
||||
if err != nil {
|
||||
log.Fatalf("Error unmarshaling response: %v", err)
|
||||
log.Printf("Error unmarshaling response: %v", err)
|
||||
return
|
||||
}
|
||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
err = os.WriteFile("subjects.json", data, 0o644)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
// 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"}
|
||||
TeachersJson, err := json.Marshal(g)
|
||||
if err != nil {
|
||||
log.Fatalf("Error marshaling login data: %v", err)
|
||||
log.Printf("Error marshaling login data: %v", err)
|
||||
return
|
||||
}
|
||||
teachers := bytes.NewReader(TeachersJson)
|
||||
|
||||
prompt, err := http.NewRequest("POST", Url, teachers)
|
||||
if err != nil {
|
||||
log.Fatalf("Error creatingrequest: %v", err)
|
||||
log.Printf("Error creatingrequest: %v", err)
|
||||
return
|
||||
}
|
||||
// log.Println("prompt without extra header or cookie ", prompt)
|
||||
|
|
@ -72,15 +72,18 @@ func Teachers(cookies []*http.Cookie) {
|
|||
var Response TeachersResponse
|
||||
err = json.Unmarshal(response, &Response)
|
||||
if err != nil {
|
||||
log.Fatalf("Error unmarshaling response: %v", err)
|
||||
log.Printf("Error unmarshaling response: %v", err)
|
||||
return
|
||||
}
|
||||
data, err := json.MarshalIndent(Response.Result, "", " ")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
err = os.WriteFile("teachers.json", data, 0o644)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
// log.Println("Updated Teachers")//dont need log anymore
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
|
@ -59,21 +60,29 @@ func Update(user, password, userID string) {
|
|||
}
|
||||
|
||||
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, err := json.Marshal(l)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
login := bytes.NewReader(loginJSON)
|
||||
loginJSON, _ := json.Marshal(Login{
|
||||
"2023-05-06 15:44:22.215292", "authenticate",
|
||||
Params{user, password, "WebUntis Test"},
|
||||
"2.0",
|
||||
})
|
||||
if 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 {
|
||||
return nil, err
|
||||
}
|
||||
defer LoginOut.Body.Close()
|
||||
|
||||
cookies := LoginOut.Cookies()
|
||||
// log.Printf("Login successful for user: %s", user)//log not needed
|
||||
|
||||
|
|
|
|||
|
|
@ -8,17 +8,21 @@ import (
|
|||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
var (
|
||||
locerr error
|
||||
Location *time.Location
|
||||
)
|
||||
var Location *time.Location
|
||||
|
||||
func GetTime() time.Time {
|
||||
func init() {
|
||||
godotenv.Load("../.env")
|
||||
timezone := os.Getenv("LOCATION_ENV")
|
||||
Location, locerr = time.LoadLocation(timezone)
|
||||
if locerr != nil {
|
||||
log.Fatalf("Failed to load Timezone: %v", locerr)
|
||||
if timezone == "" {
|
||||
timezone = "UTC"
|
||||
}
|
||||
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)
|
||||
}
|
||||
|
|
|
|||
4
main.go
4
main.go
|
|
@ -101,10 +101,10 @@ func init() {
|
|||
} else {
|
||||
log.Println("No Discord webhook provided, Discord notifications will be disabled")
|
||||
}
|
||||
initUpdate()
|
||||
}
|
||||
|
||||
func main() {
|
||||
initUpdate()
|
||||
go BotStart.Start()
|
||||
scheduleTimetableUpdate()
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
|
|
@ -301,9 +301,9 @@ func scheduleTimetableUpdate() {
|
|||
}
|
||||
// Always update prevData
|
||||
prevData[acc.UserID] = data
|
||||
}
|
||||
time.Sleep(3 * time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
// Initial update
|
||||
updateAllUsers()
|
||||
|
|
|
|||
Loading…
Reference in a new issue