go-pb-jubilee/main.go

150 lines
4.2 KiB
Go
Raw Normal View History

2024-08-27 23:24:33 +00:00
package main
import (
"fmt"
"github.com/labstack/echo/v5"
"jubilee-server/fsexplore"
"jubilee-server/geocode"
"jubilee-server/structs"
"jubilee-server/utils"
"jubilee-server/weather"
"log"
"net/http"
"os"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"github.com/pocketbase/pocketbase/core"
)
func main() {
app := pocketbase.New()
// serves static files from the provided public dir (if exists)
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
e.Router.GET("/*", apis.StaticDirectoryHandler(os.DirFS("./pb_public"), false))
e.Router.GET("/geocode/:latitude/:longitude", func(c echo.Context) error {
apis.ActivityLogger(app)
return geocodeHandler(c, app)
})
e.Router.GET("/weather/:latitude/:longitude", func(c echo.Context) error {
apis.ActivityLogger(app)
return forecastHandler(c, app)
})
e.Router.GET("/weatheralert/:latitude/:longitude", func(c echo.Context) error {
apis.ActivityLogger(app)
return weatherAlertHandler(c, app)
})
e.Router.GET("/fsexplore/:latitude/:longitude/:soqval/:soqtype/:limit", func(c echo.Context) error {
apis.ActivityLogger(app)
return fsExploreHandler(c, app)
})
e.Router.GET("/nearbydetail/:fsqid", func(c echo.Context) error {
apis.ActivityLogger(app)
return fsNearbyDetailHandler(c, app)
})
return nil
})
if err := app.Start(); err != nil {
log.Fatal(err)
}
}
func geocodeHandler(c echo.Context, app *pocketbase.PocketBase) error {
params := c.PathParams()
fmt.Printf("$$:geocodeHandler")
fmt.Printf("-- %+v\n", params)
log.Printf("Latitude: %s", c.PathParam("latitude"))
log.Printf("Longitude: %s", c.PathParam("longitude"))
latlong := new(structs.LatLong)
latlong = utils.LLfromStrings64(c.PathParam("latitude"), c.PathParam("longitude"))
address := geocode.Geocode(app, *latlong)
return c.JSON(http.StatusOK, address)
}
func forecastHandler(c echo.Context, app *pocketbase.PocketBase) error {
params := c.PathParams()
fmt.Printf("$$:forecastHandler")
fmt.Printf("-- %+v\n", params)
log.Printf("Latitude: %s", c.PathParam("latitude"))
log.Printf("Longitude: %s", c.PathParam("longitude"))
latlong := new(structs.LatLong)
latlong = utils.LLfromStrings64(c.PathParam("latitude"), c.PathParam("longitude"))
returnJson := weather.GetOpenWeather(app, *latlong)
c.Response().Header().Set("Cache-Control", "max-age=600, must-revalidate")
return c.String(http.StatusOK, returnJson)
}
func weatherAlertHandler(c echo.Context, app *pocketbase.PocketBase) error {
params := c.PathParams()
fmt.Printf("$$:WeatherAlertHandler")
fmt.Printf("-- %+v\n", params)
log.Printf("Latitude: %s", c.PathParam("latitude"))
log.Printf("Longitude: %s", c.PathParam("longitude"))
latlong := new(structs.LatLong)
latlong = utils.LLfromStrings64(c.PathParam("latitude"), c.PathParam("longitude"))
returnJson := weather.GetPirateForecast(app, *latlong)
c.Response().Header().Set("Cache-Control", "max-age=600, must-revalidate")
return c.String(http.StatusOK, returnJson)
}
func fsExploreHandler(c echo.Context, app *pocketbase.PocketBase) error {
params := c.PathParams()
fmt.Printf("$$:fsExploreHandler")
fmt.Printf("-- %+v\n", params)
log.Printf("Latitude: %s", c.PathParam("latitude"))
log.Printf("Longitude: %s", c.PathParam("longitude"))
log.Printf("Soqval: %s", c.PathParam("soqval"))
log.Printf("Soqtype: %s", c.PathParam("soqtype"))
log.Printf("Limit: %s", c.PathParam("Limit"))
latlong := new(structs.LatLong)
latlong = utils.LLfromStrings64(c.PathParam("latitude"), c.PathParam("longitude"))
log.Printf("latlong: %s", latlong)
returnJson := fsexplore.FsRequest(*latlong, c.PathParam("soqval"), c.PathParam("soqtype"), c.PathParam("limit"))
c.Response().Header().Set("Cache-Control", "max-age=600, must-revalidate")
return c.String(http.StatusOK, returnJson)
}
func fsNearbyDetailHandler(c echo.Context, app *pocketbase.PocketBase) error {
params := c.PathParams()
fmt.Printf("$$:fsNearbyDetailHandler")
fmt.Printf("-- %+v\n", params)
log.Printf("fsqid: %s", c.PathParam("fsqid"))
returnJson := fsexplore.FsRequestDetails(app, c.PathParam("fsqid"))
c.Response().Header().Set("Cache-Control", "max-age=600, must-revalidate")
return c.String(http.StatusOK, returnJson)
}