added GAE, testing
This commit is contained in:
parent
30e5760cf6
commit
73f2860add
|
@ -0,0 +1,2 @@
|
||||||
|
merp
|
||||||
|
prod-secrets.yaml
|
|
@ -1 +1,2 @@
|
||||||
merp
|
merp
|
||||||
|
prod-secrets.yaml
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
runtime: custom
|
||||||
|
env: flex
|
||||||
|
|
||||||
|
env_variables:
|
||||||
|
DEBUG: 1
|
||||||
|
|
||||||
|
includes:
|
||||||
|
- prod-secrets.yaml
|
62
merp.go
62
merp.go
|
@ -18,11 +18,55 @@ func thingRegex() *regexp.Regexp {
|
||||||
return THING_REGEX
|
return THING_REGEX
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
func decodeJson(in []byte) interface{} {
|
||||||
|
var out interface{}
|
||||||
|
err := json.Unmarshal(in, &out)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Msg("error decoding json")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
func GetLatestMerps() gin.HandlerFunc {
|
func GetLatestMerps() gin.HandlerFunc {
|
||||||
THING_REGEX := thingRegex()
|
THING_REGEX := thingRegex()
|
||||||
|
orm := models.GetOrmObject()
|
||||||
|
|
||||||
h := func(c *gin.Context) {
|
h := func(c *gin.Context) {
|
||||||
|
thing := c.Param("thing")
|
||||||
|
if THING_REGEX.MatchString(thing) == false {
|
||||||
|
c.JSON(http.StatusPreconditionFailed, gin.H{
|
||||||
|
"this": "failed",
|
||||||
|
"status": http.StatusPreconditionFailed,
|
||||||
|
"because": "invalid thing format, try a-zA-Z0-9-_",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var merps []*models.Merp
|
||||||
|
qs := orm.QueryTable("merp").Filter("thing", thing).OrderBy("-created").Limit(50)
|
||||||
|
qs.All(&merps)
|
||||||
|
|
||||||
|
var output []map[string]interface{}
|
||||||
|
for _, merp := range merps {
|
||||||
|
outelem := make(map[string]interface{})
|
||||||
|
outelem["thing"] = merp.Thing
|
||||||
|
outjs := decodeJson([]byte(merp.Content))
|
||||||
|
if outjs == nil {
|
||||||
|
outelem["content"] = gin.H{}
|
||||||
|
} else {
|
||||||
|
outelem["content"] = outjs
|
||||||
|
}
|
||||||
|
outelem["created"] = merp.Created
|
||||||
|
output = append(output, outelem)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"this": "succeeded",
|
||||||
|
"by": "getting",
|
||||||
|
"the": "merps",
|
||||||
|
"with": output,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
|
@ -31,11 +75,21 @@ func GetLatestMerp() gin.HandlerFunc {
|
||||||
THING_REGEX := thingRegex()
|
THING_REGEX := thingRegex()
|
||||||
|
|
||||||
h := func(c *gin.Context) {
|
h := func(c *gin.Context) {
|
||||||
|
thing := c.Param("thing")
|
||||||
|
if THING_REGEX.MatchString(thing) == false {
|
||||||
|
c.JSON(http.StatusPreconditionFailed, gin.H{
|
||||||
|
"this": "failed",
|
||||||
|
"status": http.StatusPreconditionFailed,
|
||||||
|
"because": "invalid thing format, try a-zA-Z0-9-_",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"this": "succeeded",
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return h
|
return h
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
func HandleNewMerp() gin.HandlerFunc {
|
func HandleNewMerp() gin.HandlerFunc {
|
||||||
// server startup time
|
// server startup time
|
||||||
|
@ -75,7 +129,7 @@ func HandleNewMerp() gin.HandlerFunc {
|
||||||
at := time.Now().UTC()
|
at := time.Now().UTC()
|
||||||
atString := at.Format(time.RFC3339)
|
atString := at.Format(time.RFC3339)
|
||||||
|
|
||||||
serialized, jsonerr := json.Marshal(content)
|
serialized, jsonerr := json.MarshalIndent(content, "", " ")
|
||||||
|
|
||||||
if jsonerr != nil {
|
if jsonerr != nil {
|
||||||
c.JSON(
|
c.JSON(
|
||||||
|
|
|
@ -3,10 +3,10 @@ package models
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
type Merp struct {
|
type Merp struct {
|
||||||
ID int `json:"id" orm:"auto;column(id)"`
|
ID int `orm:"auto;column(id)"`
|
||||||
Content string `json:"content" orm:"type(jsonb);column(content)"`
|
Content string `json:"content" orm:"type(jsonb);column(content)"`
|
||||||
Created time.Time `orm:"auto_now_add;type(datetime);column(created)"`
|
Created time.Time `orm:"auto_now_add;type(datetime);column(created)"`
|
||||||
RemoteIP string `json:"remoteIP" orm:"size(128);column(remoteip)"`
|
RemoteIP string `orm:"size(128);column(remoteip)"`
|
||||||
Thing string `json:"thing" orm:"size(256)"`
|
Thing string `json:"thing" orm:"index;size(256)"`
|
||||||
UUID string `json:"uuid" orm:"size(36);column(uuid)"`
|
UUID string `orm:"size(36);column(uuid)"`
|
||||||
}
|
}
|
||||||
|
|
15
server.go
15
server.go
|
@ -10,14 +10,6 @@ import "time"
|
||||||
import "github.com/gin-gonic/gin"
|
import "github.com/gin-gonic/gin"
|
||||||
import "github.com/dn365/gin-zerolog"
|
import "github.com/dn365/gin-zerolog"
|
||||||
|
|
||||||
/* func initDb() {
|
|
||||||
db, err := sql.Open("postgres", os.Getenv("POSTGRES_DB_URL"))
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal().Msg(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
func serve() {
|
func serve() {
|
||||||
if os.Getenv("DEBUG") == "" {
|
if os.Getenv("DEBUG") == "" {
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
|
@ -32,14 +24,17 @@ func serve() {
|
||||||
// attach logger middleware
|
// attach logger middleware
|
||||||
r.Use(ginzerolog.Logger("gin"))
|
r.Use(ginzerolog.Logger("gin"))
|
||||||
|
|
||||||
r.GET("/ping", func(c *gin.Context) {
|
r.GET("/.well-known/healthcheck.json", func(c *gin.Context) {
|
||||||
c.JSON(200, gin.H{
|
c.JSON(200, gin.H{
|
||||||
"message": "pong",
|
"status": "ok",
|
||||||
|
"now": time.Now().UTC().Format(time.RFC3339),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// call it, it returns the appropriate handler function
|
// call it, it returns the appropriate handler function
|
||||||
r.GET("/merp/for/:thing", HandleNewMerp())
|
r.GET("/merp/for/:thing", HandleNewMerp())
|
||||||
|
r.GET("/get/latest/merp/for/:thing", GetLatestMerp())
|
||||||
|
r.GET("/get/merps/for/:thing", GetLatestMerps())
|
||||||
|
|
||||||
port := "8080"
|
port := "8080"
|
||||||
if os.Getenv("PORT") != "" {
|
if os.Getenv("PORT") != "" {
|
||||||
|
|
Loading…
Reference in New Issue