Add a wheel of fortune and fix json errors
This commit is contained in:
parent
626b3827d2
commit
162d1cc00c
6 changed files with 60 additions and 22 deletions
|
@ -5,7 +5,7 @@ WORKDIR /app
|
||||||
RUN apk add --no-cache bash wget
|
RUN apk add --no-cache bash wget
|
||||||
RUN ./generate-spaceapi-types.sh
|
RUN ./generate-spaceapi-types.sh
|
||||||
|
|
||||||
RUN GOOS=linux go build -o oko-spaceapi cmd/server.go
|
RUN GOOS=linux go build -o oko-spaceapi cmd/cmd.go
|
||||||
|
|
||||||
FROM alpine
|
FROM alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
9
cmd/cmd.go
Normal file
9
cmd/cmd.go
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "git.okoyono.de/oko-intern/okospaceapi/pkg/api"
|
||||||
|
|
||||||
|
//go:generate ../generate-spaceapi-types.sh
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
api.StartServer()
|
||||||
|
}
|
2
go.mod
2
go.mod
|
@ -1,3 +1,3 @@
|
||||||
module git.okoyono.de/oko-intern/okospaceapi
|
module git.okoyono.de/oko-intern/okospaceapi
|
||||||
|
|
||||||
go 1.21.1
|
go 1.21.6
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
package main
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"git.okoyono.de/oko-intern/okospaceapi/pkg/location"
|
||||||
"git.okoyono.de/oko-intern/okospaceapi/pkg/spaceapi"
|
"git.okoyono.de/oko-intern/okospaceapi/pkg/spaceapi"
|
||||||
"net/http"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate ../generate-spaceapi-types.sh
|
func BuildDefinition() []byte {
|
||||||
|
|
||||||
func main() {
|
|
||||||
definition := spaceapi.Root{
|
definition := spaceapi.Root{
|
||||||
// TODO: Fill up with stuff
|
|
||||||
ApiCompatibility: []string{"14"},
|
ApiCompatibility: []string{"14"},
|
||||||
Space: "økoyono",
|
Space: "økoyono",
|
||||||
Url: "https://okoyono.de/",
|
Url: "https://okoyono.de/",
|
||||||
|
@ -19,8 +17,6 @@ func main() {
|
||||||
Matrix: "#public:matrix.okoyono.de",
|
Matrix: "#public:matrix.okoyono.de",
|
||||||
},
|
},
|
||||||
Location: &spaceapi.Location{
|
Location: &spaceapi.Location{
|
||||||
Lat: 27.987850, // Latitude and Longitude of Mount Everest :)
|
|
||||||
Lon: 86.925026,
|
|
||||||
Timezone: "Europe/Berlin",
|
Timezone: "Europe/Berlin",
|
||||||
},
|
},
|
||||||
Logo: "https://okoyono.de/images/ant.svg",
|
Logo: "https://okoyono.de/images/ant.svg",
|
||||||
|
@ -45,7 +41,6 @@ func main() {
|
||||||
Name: "searxng",
|
Name: "searxng",
|
||||||
Url: "https://search.okoyono.de",
|
Url: "https://search.okoyono.de",
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
Projects: []string{
|
Projects: []string{
|
||||||
"https://buchdesmonats.okoyono.de/",
|
"https://buchdesmonats.okoyono.de/",
|
||||||
|
@ -71,19 +66,16 @@ func main() {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
json, err := definition.MarshalJSON()
|
// Random location
|
||||||
|
randomLocation := location.SpinThatWheel()
|
||||||
|
definition.Location.Lat = randomLocation.Latitude
|
||||||
|
definition.Location.Lon = randomLocation.Longitude
|
||||||
|
definition.Location.Address = randomLocation.Name + ", Germany"
|
||||||
|
|
||||||
|
jsonString, err := json.Marshal(definition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return jsonString
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
_, err := w.Write(json)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
17
pkg/api/server.go
Normal file
17
pkg/api/server.go
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
package api
|
||||||
|
|
||||||
|
import "net/http"
|
||||||
|
|
||||||
|
func StartServer() {
|
||||||
|
err := http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
_, err := w.Write(BuildDefinition())
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
20
pkg/location/wheel_of_fortune.go
Normal file
20
pkg/location/wheel_of_fortune.go
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
package location
|
||||||
|
|
||||||
|
import "math/rand"
|
||||||
|
|
||||||
|
type Place struct {
|
||||||
|
Latitude float64
|
||||||
|
Longitude float64
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
func SpinThatWheel() Place {
|
||||||
|
// Cool places to be in Germany :)
|
||||||
|
places := []Place{
|
||||||
|
{Latitude: 48.858370, Longitude: 2.294481, Name: "Eifeltower"},
|
||||||
|
{Latitude: 27.987850, Longitude: 86.925026, Name: "Mount Everest"},
|
||||||
|
}
|
||||||
|
|
||||||
|
pick := rand.Int() % len(places)
|
||||||
|
return places[pick]
|
||||||
|
}
|
Loading…
Reference in a new issue