Files
old-svijetlastrana/server/router/placesroute/controller.go
2018-04-25 13:16:36 +02:00

56 lines
1.2 KiB
Go

package placesroute
import (
"sync"
"bitbucket.org/nemt/nemt-portal-api/application/applicationservice"
"bitbucket.org/nemt/nemt-portal-api/infra/config"
"bitbucket.org/nemt/nemt-portal-api/server/router/routeutils"
"github.com/labstack/echo"
"golang.org/x/net/context"
"googlemaps.github.io/maps"
)
var (
instance *controller
once sync.Once
)
type controller struct {
cfg *config.Config
svc *applicationservice.Service
maps *maps.Client
}
func controllerInstance(cfg *config.Config, svc *applicationservice.Service) *controller {
once.Do(func() {
c, _ := maps.NewClient(maps.WithClientIDAndSignature("gme-bluecrossandblue1", "msqgD-jdqCyR0M_1u5C1HION5iI="))
instance = &controller{
cfg: cfg,
svc: svc,
maps: c,
}
})
return instance
}
func (c *controller) handle(ctx echo.Context) error {
name, err := routeutils.GetAndValidateStringQueryParam(ctx, "name", "name is mandatory")
if err != nil {
return err
}
req := maps.PlaceAutocompleteRequest{
Input: name,
Language: "en",
}
resp, err := c.maps.PlaceAutocomplete(context.Background(), &req)
if err != nil {
return routeutils.HandleAPIError(ctx, err)
}
return routeutils.ResponseAPIOK(ctx, resp)
}