✨ Able to list destinations
This commit is contained in:
		@@ -7,6 +7,8 @@ const (
 | 
			
		||||
 | 
			
		||||
type BaseDestination struct {
 | 
			
		||||
	Type        string `json:"type"`
 | 
			
		||||
	Label       string `json:"label"`
 | 
			
		||||
	LabelRegion string `json:"label_region"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type LocalDestination struct {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								pkg/internal/server/api/destinations.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								pkg/internal/server/api/destinations.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	jsoniter "github.com/json-iterator/go"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func listDestination(c *fiber.Ctx) error {
 | 
			
		||||
	var destinations []models.LocalDestination
 | 
			
		||||
	for _, value := range viper.GetStringSlice("destinations") {
 | 
			
		||||
		var parsed models.LocalDestination
 | 
			
		||||
		raw, _ := jsoniter.Marshal(value)
 | 
			
		||||
		_ = jsoniter.Unmarshal(raw, &parsed)
 | 
			
		||||
		destinations = append(destinations, parsed)
 | 
			
		||||
	}
 | 
			
		||||
	return c.JSON(destinations)
 | 
			
		||||
}
 | 
			
		||||
@@ -6,10 +6,10 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func MapAPIs(app *fiber.App, baseURL string) {
 | 
			
		||||
	app.Get("/.well-known/destinations", getDestinations)
 | 
			
		||||
 | 
			
		||||
	api := app.Group(baseURL).Name("API")
 | 
			
		||||
	{
 | 
			
		||||
		api.Get("/destinations", listDestination)
 | 
			
		||||
 | 
			
		||||
		boost := api.Group("/boosts").Name("Boosts API")
 | 
			
		||||
		{
 | 
			
		||||
			boost.Get("/", listBoostByUser)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func getDestinations(c *fiber.Ctx) error {
 | 
			
		||||
	var data []string
 | 
			
		||||
	for key := range viper.GetStringMap("destinations") {
 | 
			
		||||
		data = append(data, key)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return c.JSON(fiber.Map{
 | 
			
		||||
		"data":      data,
 | 
			
		||||
		"preferred": viper.GetString("preferred_destination"),
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user