woah
This commit is contained in:
parent
8b06cc1c2e
commit
0069aeaa24
4
Makefile
Normal file
4
Makefile
Normal file
@ -0,0 +1,4 @@
|
||||
.PHONY: run
|
||||
run:
|
||||
@echo "Running the API"
|
||||
go run cmd/api/*.go
|
||||
@ -16,7 +16,7 @@ func home(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
fmt.Println(r.URL.Path)
|
||||
|
||||
ts, err := template.ParseFiles("../../ui/html/home.page.tmpl", "../../ui/html/base.layout.tmpl")
|
||||
ts, err := template.ParseFiles("ui/html/home.page.tmpl", "ui/html/base.layout.tmpl")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
http.Error(w, "Internal Server Error", 500)
|
||||
12
cmd/api/healthcheck.go
Normal file
12
cmd/api/healthcheck.go
Normal file
@ -0,0 +1,12 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func (app *application) healthcheckHandler(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprintln(w, "status: available")
|
||||
fmt.Fprintf(w, "environment: %s\n", app.config.env)
|
||||
fmt.Fprintf(w, "version: %s\n", version)
|
||||
}
|
||||
@ -12,6 +12,24 @@ import (
|
||||
"github.com/jackc/pgx/v5"
|
||||
)
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
const version = "1.0.0"
|
||||
|
||||
type config struct {
|
||||
port int
|
||||
env string
|
||||
}
|
||||
|
||||
type application struct {
|
||||
config config
|
||||
logger *log.Logger
|
||||
}
|
||||
|
||||
type Message struct {
|
||||
Type string `json:"type"`
|
||||
Timestamp string `json:"timestamp"`
|
||||
@ -25,10 +43,23 @@ var upgrader = websocket.Upgrader{
|
||||
}
|
||||
|
||||
func main() {
|
||||
addr := flag.String("addr", ":8443", "HTTP network address")
|
||||
|
||||
|
||||
var cfg config
|
||||
|
||||
flag.IntVar(&cfg.port, "port", 4000, "API server port")
|
||||
flag.StringVar(&cfg.env, "env", "development", "Environment (development|staging|production)")
|
||||
//addr := flag.String("addr", ":8443", "HTTP network address")
|
||||
flag.Parse()
|
||||
|
||||
|
||||
logger := log.New(os.Stdout, "", log.Ldate | log.Ltime)
|
||||
|
||||
app := &application{
|
||||
config: cfg,
|
||||
logger: logger,
|
||||
}
|
||||
|
||||
conn, err := pgx.Connect(context.Background(), "postgres://party:iK2SoVbDhdCki5n3LxGyP6zKpLspt4@losandesgames.com:5432/party")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
@ -38,24 +69,26 @@ func main() {
|
||||
|
||||
database_init(conn)
|
||||
|
||||
mux := http.NewServeMux()
|
||||
fileServer := http.FileServer(http.Dir("../../ui/static"))
|
||||
fileServer := http.FileServer(http.Dir("ui/static"))
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/", home)
|
||||
mux.HandleFunc("/ws", ws)
|
||||
mux.Handle("/static/", http.StripPrefix("/static", fileServer))
|
||||
mux.HandleFunc("/v1/healthcheck", app.healthcheckHandler)
|
||||
|
||||
go func() {
|
||||
err := http.ListenAndServe(":8080", http.HandlerFunc(redirectToHTTPS))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
srv := &http.Server{
|
||||
Addr: fmt.Sprintf(":%d", cfg.port),
|
||||
Handler: mux,
|
||||
IdleTimeout: time.Minute,
|
||||
ReadTimeout: 10 * time.Second,
|
||||
WriteTimeout: 30 * time.Second,
|
||||
}
|
||||
}()
|
||||
|
||||
log.Println("Starting server on", *addr)
|
||||
logger.Printf("starting %s server on %s", cfg.env, srv.Addr);
|
||||
|
||||
// Start HTTPS server (requires cert.pem and key.pem in current dir)
|
||||
err = http.ListenAndServeTLS(*addr, "cert.pem", "key.pem", mux)
|
||||
err = srv.ListenAndServe()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDXzCCAkegAwIBAgIUFLBXeBoRiWo+BlKfVFxGAOU9uwgwDQYJKoZIhvcNAQEL
|
||||
BQAwPzELMAkGA1UEBhMCQVQxDTALBgNVBAgMBFdpZW4xDTALBgNVBAcMBFdpZW4x
|
||||
EjAQBgNVBAoMCURpZSBQYXJ0eTAeFw0yNTA5MTExNzUyNTZaFw0yNjA5MTExNzUy
|
||||
NTZaMD8xCzAJBgNVBAYTAkFUMQ0wCwYDVQQIDARXaWVuMQ0wCwYDVQQHDARXaWVu
|
||||
MRIwEAYDVQQKDAlEaWUgUGFydHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQDpNdBYKyc2z9hadellByc/CIPoDtHRVvjt94AMJFQ52Fu/yaN9/FX25egV
|
||||
S9st9TbIJkJ2rMX8gaposF1Z1fN0uEujwuRv/l3MnvKEtYcVJtcc96/KdV/JD0kX
|
||||
lTTr8WX6C5uJ8J9gZx4epc3SUVUevKvyjGjtO/1pGsS/JKpE1fgpa8V5TYaitL8t
|
||||
EIMp7DOH2ebc8YXFb/nyr4mlsRTbheD/BJgAqWKi3kKJuml9etzWFlwoMli/nONJ
|
||||
pj/KGCJLXABczwHehBIu4rBl56R9qtnRtPN9i9AEotRQHla5125mRyCCd2PRRITu
|
||||
RiSdB0y8kImhROlzpacDSBPh0sJhAgMBAAGjUzBRMB0GA1UdDgQWBBQJP+zNoNNG
|
||||
RQh0cgt42u0qGuMRkTAfBgNVHSMEGDAWgBQJP+zNoNNGRQh0cgt42u0qGuMRkTAP
|
||||
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAINSMWHokDTqoQodHY
|
||||
IJH0p0NxEqoQMhrt44medHWPYMlk4k3mWn5JD/9e29hsmovaobLPmW4+Qh90+vMu
|
||||
/+yu1YBkjsNhyZ7INyPjT2UhC6JWxJTSBFtkfL8/sg61gjDSo2ERzlC/MkQ3wozr
|
||||
bLsIf9Kj8FWMotfp71Anrrf6K83BQv6Xz5Vl/pCge0bUFkwAnoupEuiAGhLcflUH
|
||||
0p/KX72qq1fdZjd6HRm2RodtJGT8wve3HWCzJcNA45DFbuF3RCH5o3Ntc+nLX8oF
|
||||
OhYq/a8agiEWzaKwqZZ7LNyDQk65HcQDAi0qG31IdBBd6OM6DEvlh0DZIDzL7igj
|
||||
g2C/
|
||||
-----END CERTIFICATE-----
|
||||
@ -1,28 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDpNdBYKyc2z9ha
|
||||
dellByc/CIPoDtHRVvjt94AMJFQ52Fu/yaN9/FX25egVS9st9TbIJkJ2rMX8gapo
|
||||
sF1Z1fN0uEujwuRv/l3MnvKEtYcVJtcc96/KdV/JD0kXlTTr8WX6C5uJ8J9gZx4e
|
||||
pc3SUVUevKvyjGjtO/1pGsS/JKpE1fgpa8V5TYaitL8tEIMp7DOH2ebc8YXFb/ny
|
||||
r4mlsRTbheD/BJgAqWKi3kKJuml9etzWFlwoMli/nONJpj/KGCJLXABczwHehBIu
|
||||
4rBl56R9qtnRtPN9i9AEotRQHla5125mRyCCd2PRRITuRiSdB0y8kImhROlzpacD
|
||||
SBPh0sJhAgMBAAECggEARvLKOaiXO4OsDIlGwieU9wY+KwEnMArHnI3pdMgwn5CF
|
||||
CSntBU0ZUg3Lt37mZWruiaGqIrSZXyKLl2HgZI5EjMPsrxuBp9i47KGGon0fZX31
|
||||
f6iS4IMo6uAtmnEYMpe0MIgLf8GmmwuEDErg/RUlUj6QCTBSU6omhC1SodwjuODS
|
||||
7iCl11XcamqmVUY/VIByQH38rGzPuvNVHjc9w0nyop4TSLaoxAH/yyrg2oFfc/Ra
|
||||
h3bgsrYoasDjI1+BzreDiyoCJBwTlpG11DTmlO2bYYUgt3lgwQz12McdNJK+1s+R
|
||||
60M0BkD4TiglvHSHaUenDtXT93D8JlzOrrwYSNe0qQKBgQD7RPy3EO4KXij7QSAs
|
||||
8aM5kJQjV0JKzmLH2+/WeIjFGiJLVqWbMLF2NSaKPjh5ktXT1YmkJgbfgLw7M4q3
|
||||
a/TWdAxPpjT4GhZh8AdqEKAlpLxaweu2umKsgmPwk12/nsB/vmEZG96vhHviC5PI
|
||||
+KHKqTvGtdBsTMWhA0z0zf9GQwKBgQDtmcnirPD9QLtQd5O6dqNVUmgH8/wqGLrD
|
||||
Y88H6Yv5nmd9Oex9JoZLOQO0oXRNRUU+eCxDm6volKgI0W6XT3U1+qBicLmGdYy6
|
||||
4MHQ7Zu4e8+TNmGeAWlnOrCf8nmEQz9KjW8kOGLY09pHj6U8xxoICi2DPmNQgN6s
|
||||
t8KJQCY0iwKBgFI4Z81rj8j6uMRGskWiqDuc8KyD0CB0WmR1toxikraUb6Zhav1W
|
||||
OKuqhrrz0z0M7EVN+aUqAFPAZ1ej7P9KJyrJfIHPrEOHHc3cYkC1wgGvXyb/j6cS
|
||||
ZFl4rUU6o5GhW/IxFMrHkN20J2l3SluX6DFNoU7LjbDyijS+xL7SbXbLAoGBAJJ1
|
||||
AoGsEpw44311R+VfLczxD9kfJueX+L9p7Xq2FicW4jnJk6GNNqh1i3gzMWpT8ZvR
|
||||
HY/LDEtAHtfYqK+yNdDBHU2wqFteaBHlavLrE9rCzq+yjLeFrUAJaEgfgZHqlb/R
|
||||
sJmF/EAlTl5gB/2PyNb91xIYScWcuiWC2/IYTbSDAoGAZfDgx5CZZirYjzyTxDGM
|
||||
+Ex06mqgDO+fWDm/Uyug4Ja3gk10Iu88F8MB6btm2yIras88RwnMPicBSq++yE0R
|
||||
/ilOe5KSFyfQ3uu63gUgTKwCgb4LrdC6hMsD4ILnH44VH2zQ9yyLjrOq/8nsEq7v
|
||||
E9VeQGnFHeM6Rpl1KUHTnnY=
|
||||
-----END PRIVATE KEY-----
|
||||
9
go.mod
9
go.mod
@ -1,12 +1,15 @@
|
||||
module party.at/party
|
||||
|
||||
go 1.25.1
|
||||
go 1.24.2
|
||||
|
||||
require (
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/jackc/pgx/v5 v5.7.6
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/gorilla/websocket v1.5.3 // indirect
|
||||
github.com/jackc/pgpassfile v1.0.0 // indirect
|
||||
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
||||
github.com/jackc/pgx/v5 v5.7.6 // indirect
|
||||
golang.org/x/crypto v0.37.0 // indirect
|
||||
golang.org/x/text v0.24.0 // indirect
|
||||
)
|
||||
|
||||
11
go.sum
11
go.sum
@ -1,4 +1,6 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
||||
@ -7,13 +9,22 @@ github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7Ulw
|
||||
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||
github.com/jackc/pgx/v5 v5.7.6 h1:rWQc5FwZSPX58r1OQmkuaNicxdmExaEz5A2DO2hUuTk=
|
||||
github.com/jackc/pgx/v5 v5.7.6/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M=
|
||||
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
|
||||
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
|
||||
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
|
||||
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
|
||||
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
|
||||
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user