go routines /handlers/application/journeys

This commit is contained in:
root 2023-04-20 15:28:27 +03:00
parent 46a72e1aef
commit c34d08ff70
1 changed files with 87 additions and 70 deletions

View File

@ -27,7 +27,14 @@ var Arrive any
func (h *ApplicationHandler) JourneysSearch(w http.ResponseWriter, r *http.Request) { func (h *ApplicationHandler) JourneysSearch(w http.ResponseWriter, r *http.Request) {
r.ParseForm() r.ParseForm()
var (
journeys_results *navitia.JourneyResults
carpool_results any
vehicle_results []any
)
vehiclech := make(chan []any, 1)
navitiaCh := make(chan *navitia.JourneyResults, 1)
carpoolCh := make(chan any, 1)
locTime, errTime := time.LoadLocation("Europe/Paris") locTime, errTime := time.LoadLocation("Europe/Paris")
if errTime != nil { if errTime != nil {
fmt.Println("Loading timezone location Europe/Paris error : ") fmt.Println("Loading timezone location Europe/Paris error : ")
@ -70,7 +77,8 @@ func (h *ApplicationHandler) JourneysSearch(w http.ResponseWriter, r *http.Reque
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
journeysRequest := func() {
//TODO make it a library //TODO make it a library
session, _ := navitia.NewCustom( session, _ := navitia.NewCustom(
h.config.GetString("services.navitia.api_key"), h.config.GetString("services.navitia.api_key"),
@ -79,6 +87,7 @@ func (h *ApplicationHandler) JourneysSearch(w http.ResponseWriter, r *http.Reque
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
navitiaCh <- nil
return return
} }
@ -95,13 +104,12 @@ func (h *ApplicationHandler) JourneysSearch(w http.ResponseWriter, r *http.Reque
// w.WriteHeader(http.StatusBadRequest) // w.WriteHeader(http.StatusBadRequest)
// return // return
} }
navitiaCh <- journeys
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//CARPOOL //CARPOOL
// carpoolrequest := fmt.Sprintf( carpoolRequest := func() {
// "https://api.rdex.ridygo.fr/journeys.json?p[driver][state]=1&frequency=punctual&p[passenger][state]=0&p[from][latitude]=%f&p[from][longitude]=%f&p[to][latitude]=%f&p[to][longitude]=%f&p[outward][mindate]=%s&p[outward][maxdate]=%s",
// departuregeo.Geometry.Point[1], departuregeo.Geometry.Point[0],
// destinationgeo.Geometry.Point[1], destinationgeo.Geometry.Point[0],
// departuredatetime.Format("2006-01-02"), departuredatetime.Add(24*time.Hour).Format("2006-01-02"))
carpoolrequest := "https://api.rdex.ridygo.fr/journeys.json" carpoolrequest := "https://api.rdex.ridygo.fr/journeys.json"
client := &http.Client{} client := &http.Client{}
@ -134,9 +142,11 @@ func (h *ApplicationHandler) JourneysSearch(w http.ResponseWriter, r *http.Reque
} else { } else {
carpoolresults = []any{} carpoolresults = []any{}
} }
carpoolCh <- carpoolresults
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vehicles // Vehicles
vehicleRequest := func() {
vehiclerequest := &fleets.GetVehiclesRequest{ vehiclerequest := &fleets.GetVehiclesRequest{
Namespaces: []string{"parcoursmob"}, Namespaces: []string{"parcoursmob"},
} }
@ -145,16 +155,23 @@ func (h *ApplicationHandler) JourneysSearch(w http.ResponseWriter, r *http.Reque
fmt.Println(err) fmt.Println(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
} }
for _, vehicle := range vehicleresp.Vehicles { for _, vehicle := range vehicleresp.Vehicles {
v := vehicle.ToStorageType() v := vehicle.ToStorageType()
if v.Free(departuredatetime.Add(-24*time.Hour), departuredatetime.Add(168*time.Hour)) { if v.Free(departuredatetime.Add(-24*time.Hour), departuredatetime.Add(168*time.Hour)) {
vehicles = append(vehicles, v) vehicles = append(vehicles, v)
} }
} }
vehiclech <- vehicles
}
go journeysRequest()
go carpoolRequest()
go vehicleRequest()
carpool_results = <-carpoolCh
journeys_results = <-navitiaCh
vehicle_results = <-vehiclech
} }
h.Renderer.JourneysSearch(w, r, carpoolresults, journeys, vehicles, searched, departuregeo, destinationgeo, departuredate, departuretime) h.Renderer.JourneysSearch(w, r, carpool_results, journeys_results, vehicle_results, searched, departuregeo, destinationgeo, departuredate, departuretime)
} }
type GroupsModule []groupstorage.Group type GroupsModule []groupstorage.Group