Default page is now the latest blog

This commit is contained in:
Caleb Gardner
2024-01-05 11:01:20 -06:00
parent eee21495b2
commit fad00d2065
3 changed files with 50 additions and 37 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ require (
github.com/1lann/udp-forward v0.0.0-20191015034046-6b774a53ea39 github.com/1lann/udp-forward v0.0.0-20191015034046-6b774a53ea39
github.com/CalebQ42/bbConvert v1.0.0 github.com/CalebQ42/bbConvert v1.0.0
github.com/CalebQ42/cdr-backend v0.1.0 github.com/CalebQ42/cdr-backend v0.1.0
github.com/CalebQ42/stupid-backend/v2 v2.0.2 github.com/CalebQ42/stupid-backend/v2 v2.0.3
github.com/CalebQ42/swassistant-backend v0.2.0 github.com/CalebQ42/swassistant-backend v0.2.0
go.mongodb.org/mongo-driver v1.13.1 go.mongodb.org/mongo-driver v1.13.1
) )
+2 -10
View File
@@ -4,10 +4,8 @@ github.com/CalebQ42/bbConvert v1.0.0 h1:2WSAxVKhCCMReuU30r3ehLtL6m9aH8sY3wugp9yU
github.com/CalebQ42/bbConvert v1.0.0/go.mod h1:QJevnlhzUdL3EJB5Lgqoi7rdgtzt/UEamn/QGNoVgkM= github.com/CalebQ42/bbConvert v1.0.0/go.mod h1:QJevnlhzUdL3EJB5Lgqoi7rdgtzt/UEamn/QGNoVgkM=
github.com/CalebQ42/cdr-backend v0.1.0 h1:9245aooAyLxAFO5gfXPgpqOHaYr6NAkMI75v2IlPOVA= github.com/CalebQ42/cdr-backend v0.1.0 h1:9245aooAyLxAFO5gfXPgpqOHaYr6NAkMI75v2IlPOVA=
github.com/CalebQ42/cdr-backend v0.1.0/go.mod h1:N7A+ia+4GDsDMZ3gb5IRZ6CY07gdFfJECtR9csKh5nI= github.com/CalebQ42/cdr-backend v0.1.0/go.mod h1:N7A+ia+4GDsDMZ3gb5IRZ6CY07gdFfJECtR9csKh5nI=
github.com/CalebQ42/stupid-backend/v2 v2.0.1 h1:BACdi/3BEDE/vZsKvhZl1OAA74QnP/Zd5Hb8uNQCjrg= github.com/CalebQ42/stupid-backend/v2 v2.0.3 h1:h6fDA3m1SXcqHebiKyX/VN6W1jGj5ebw/8qrsVY6WvU=
github.com/CalebQ42/stupid-backend/v2 v2.0.1/go.mod h1:skBYIF77NzxYcqZ34V1eSD2/MIZCAGyyINWIkCBrpx8= github.com/CalebQ42/stupid-backend/v2 v2.0.3/go.mod h1:skBYIF77NzxYcqZ34V1eSD2/MIZCAGyyINWIkCBrpx8=
github.com/CalebQ42/stupid-backend/v2 v2.0.2 h1:FB4tbu0opV4kTQfO+56dTHuMPnmgbo8F1joDN1fSU0Q=
github.com/CalebQ42/stupid-backend/v2 v2.0.2/go.mod h1:skBYIF77NzxYcqZ34V1eSD2/MIZCAGyyINWIkCBrpx8=
github.com/CalebQ42/swassistant-backend v0.2.0 h1:pXUG7+uHP5/lHaqqD6Hc64hOjfPzCGO8TkOpvtDB238= github.com/CalebQ42/swassistant-backend v0.2.0 h1:pXUG7+uHP5/lHaqqD6Hc64hOjfPzCGO8TkOpvtDB238=
github.com/CalebQ42/swassistant-backend v0.2.0/go.mod h1:m67UAzh552+puEc0LngTHzOL3b/Y2B19NzbaVdVeabI= github.com/CalebQ42/swassistant-backend v0.2.0/go.mod h1:m67UAzh552+puEc0LngTHzOL3b/Y2B19NzbaVdVeabI=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -18,8 +16,6 @@ github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
@@ -42,16 +38,12 @@ github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7Jul
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk= github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk=
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4= github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.mongodb.org/mongo-driver v1.13.0 h1:67DgFFjYOCMWdtTEmKFpV3ffWlFnh+CYZ8ZS/tXWUfY=
go.mongodb.org/mongo-driver v1.13.0/go.mod h1:/rGBTebI3XYboVmgz+Wv3Bcbl3aD0QF9zl6kDDw18rQ=
go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk= go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=
go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo= go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+47 -26
View File
@@ -95,6 +95,27 @@ func (d *DarkstormTech) HandleReqest(req *stupid.Request) bool {
return d.handleFiles(req) return d.handleFiles(req)
case "portfolio": case "portfolio":
return d.handlePortfolio(req) return d.handlePortfolio(req)
case "default":
b, err := d.getBlog(req)
if err == mongo.ErrNoDocuments {
req.Resp.Write(notFoundPage().json())
req.Resp.WriteHeader(http.StatusNotFound)
return true
} else if err != nil {
log.Println("Error while getting blog:", err)
req.Resp.WriteHeader(http.StatusInternalServerError)
return true
}
out := pageOut{
Content: d.bb.Convert(b.Content),
}
(&out).addDefaults()
_, err = req.Resp.Write(out.json())
if err != nil {
log.Println("Error while writing response:", err)
req.Resp.WriteHeader(http.StatusInternalServerError)
}
return true
} }
res := d.DB.Collection("pages").FindOne(context.TODO(), bson.M{"_id": strings.Join(req.Path[1:], "/")}, options.FindOne().SetProjection(bson.M{"_id": 0})) res := d.DB.Collection("pages").FindOne(context.TODO(), bson.M{"_id": strings.Join(req.Path[1:], "/")}, options.FindOne().SetProjection(bson.M{"_id": 0}))
if res.Err() == mongo.ErrNoDocuments { if res.Err() == mongo.ErrNoDocuments {
@@ -129,14 +150,22 @@ type blog struct {
Content string `bson:"content" json:"content"` Content string `bson:"content" json:"content"`
} }
type blogOut struct { func (d *DarkstormTech) getBlog(req *stupid.Request) (*blog, error) {
Content string `json:"content"` var res *mongo.SingleResult
Title string `json:"title"` if len(req.Path) == 2 {
} res = d.DB.Collection("blog").FindOne(context.TODO(), bson.M{}, options.FindOne().SetSort(bson.M{"_id": -1}))
} else {
func (b blogOut) json() []byte { res = d.DB.Collection("blog").FindOne(context.TODO(), bson.M{"_id": req.Path[2]})
out, _ := json.Marshal(b) }
return out if res.Err() != nil {
return nil, res.Err()
}
var b blog
err := res.Decode(&b)
if err != nil {
return nil, err
}
return &b, nil
} }
func (d *DarkstormTech) handleBlog(req *stupid.Request) bool { func (d *DarkstormTech) handleBlog(req *stupid.Request) bool {
@@ -146,30 +175,22 @@ func (d *DarkstormTech) handleBlog(req *stupid.Request) bool {
req.Resp.WriteHeader(http.StatusBadRequest) req.Resp.WriteHeader(http.StatusBadRequest)
return true return true
} }
var res *mongo.SingleResult b, err := d.getBlog(req)
if len(req.Path) == 2 { if err == mongo.ErrNoDocuments {
res = d.DB.Collection("blogs").FindOne(context.TODO(), bson.M{}, options.FindOne().SetSort(bson.M{"_id": -1}))
} else {
res = d.DB.Collection("blogs").FindOne(context.TODO(), bson.M{"_id": req.Path[2]})
}
if res.Err() == mongo.ErrNoDocuments {
req.Resp.Write(notFoundPage().json()) req.Resp.Write(notFoundPage().json())
req.Resp.WriteHeader(http.StatusNotFound) req.Resp.WriteHeader(http.StatusNotFound)
return true return true
} else if res.Err() != nil { } else if err != nil {
log.Println("Error while getting blog:", res.Err()) log.Println("Error while getting blog:", err)
req.Resp.WriteHeader(http.StatusInternalServerError) req.Resp.WriteHeader(http.StatusInternalServerError)
return true return true
} }
var b blogOut out := pageOut{
err := res.Decode(&b) Content: d.bb.Convert(b.Content),
if err != nil { Title: b.Title,
log.Println("Error while decoding blog:", err)
req.Resp.WriteHeader(http.StatusInternalServerError)
return true
} }
b.Content = d.bb.Convert(b.Content) (&out).addDefaults()
_, err = req.Resp.Write(b.json()) _, err = req.Resp.Write(out.json())
if err != nil { if err != nil {
log.Println("Error while writing response:", err) log.Println("Error while writing response:", err)
req.Resp.WriteHeader(http.StatusInternalServerError) req.Resp.WriteHeader(http.StatusInternalServerError)
@@ -206,7 +227,7 @@ func (d *DarkstormTech) addBlog(req *stupid.Request) bool {
return true return true
} }
b.ID = strconv.Itoa(int(time.Now().Unix())) b.ID = strconv.Itoa(int(time.Now().Unix()))
_, err = d.DB.Collection("blogs").InsertOne(context.TODO(), b) _, err = d.DB.Collection("blog").InsertOne(context.TODO(), b)
if err != nil { if err != nil {
log.Println("Error while inserting blog:", err) log.Println("Error while inserting blog:", err)
req.Resp.WriteHeader(http.StatusInternalServerError) req.Resp.WriteHeader(http.StatusInternalServerError)