Browse Source

Feat(booking-job): Handle lagging timeout with passenger details

master
Samuel Pua 3 years ago
parent
commit
ddc06c0c93
  1. 22
      backend/internal/ktmtrainbot/backgroundbookingjob.go

22
backend/internal/ktmtrainbot/backgroundbookingjob.go

@ -264,8 +264,20 @@ func (env *Env) startBooking(job *Booking, username string, password string, cre
default: default:
} }
passthroughLaggingPage := false
for !passthroughLaggingPage {
filledPassengerDetailContext, filledPassengerDetails := context.WithTimeout(context.Background(), 15*time.Second)
go func() {
page = fillPassengerDetails(page, name, gender, passport, passportExpiry, contact) page = fillPassengerDetails(page, name, gender, passport, passportExpiry, contact)
log.Println("Passenger details filled.") log.Println("Passenger details filled.")
filledPassengerDetails()
}()
<-filledPassengerDetailContext.Done()
passthroughLaggingPage = chooseAndMakePayment(timerCtx, creditCardType, creditCard, creditCardCVV, creditCardExpiry, browser, page)
// Exits if context cancelled // Exits if context cancelled
select { select {
@ -274,8 +286,7 @@ func (env *Env) startBooking(job *Booking, username string, password string, cre
return false return false
default: default:
} }
paymentSucceed := chooseAndMakePayment(timerCtx, creditCardType, creditCard, creditCardCVV, creditCardExpiry, browser, page)
}
// // Start debug screenshots // // Start debug screenshots
// debugScreenshotCtx, cancelDebugScreenshot := context.WithCancel(context.Background()) // debugScreenshotCtx, cancelDebugScreenshot := context.WithCancel(context.Background())
@ -284,11 +295,6 @@ func (env *Env) startBooking(job *Booking, username string, password string, cre
// // Defer done with debug screenshot // // Defer done with debug screenshot
// defer cancelDebugScreenshot() // defer cancelDebugScreenshot()
if !paymentSucceed {
log.Println("Payment failed.")
return false
}
time.Sleep(10 * time.Second) time.Sleep(10 * time.Second)
_ = page _ = page
@ -310,7 +316,6 @@ func chooseAndMakePayment(timerCtx context.Context, creditCardType, creditCard,
if r := recover(); r != nil { if r := recover(); r != nil {
log.Println("Recovering from chooseAndMakePayment panic...") log.Println("Recovering from chooseAndMakePayment panic...")
cancelRefresh() cancelRefresh()
chooseAndMakePayment(timerCtx, creditCardType, creditCard, creditCardCVV, creditCardExpiry, browser, page)
} }
}() }()
@ -642,6 +647,7 @@ func triggerFuturePageRefresh(page *rod.Page) func() {
case <-time.After(540 * time.Second): case <-time.After(540 * time.Second):
log.Println("Reloading page") log.Println("Reloading page")
page.MustReload() page.MustReload()
page.MustWaitLoad()
} }
}() }()
return cancelFunc return cancelFunc

Loading…
Cancel
Save