Implemented web server stub as proof of concept

This commit is contained in:
Michael Mayer 2018-07-20 14:13:52 +02:00
parent 546a65aff0
commit 82329a6dcb
5 changed files with 120 additions and 2 deletions

View File

@ -91,4 +91,4 @@ RUN dep ensure
RUN go install -v ./...
# Run the app
CMD [ "tensorflowapi" ]
CMD [ "photoprism start" ]

54
Gopkg.lock generated
View File

@ -52,12 +52,34 @@
revision = "95292e44976d1217cf3611dc7c8d9466877d3ed5"
version = "v1.0.1"
[[projects]]
branch = "master"
name = "github.com/gin-contrib/sse"
packages = ["."]
revision = "22d885f9ecc78bf4ee5d72b937e4bbcdc58e8cae"
[[projects]]
name = "github.com/gin-gonic/gin"
packages = [
".",
"binding",
"render"
]
revision = "d459835d2b077e44f7c9b453505ee29881d5d12d"
version = "v1.2"
[[projects]]
name = "github.com/go-sql-driver/mysql"
packages = ["."]
revision = "d523deb1b23d913de5bdada721a6071e71283618"
version = "v1.4.0"
[[projects]]
name = "github.com/golang/protobuf"
packages = ["proto"]
revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
version = "v1.1.0"
[[projects]]
name = "github.com/jinzhu/gorm"
packages = [
@ -92,6 +114,12 @@
]
revision = "90697d60dd844d5ef6ff15135d0203f65d2f53b8"
[[projects]]
name = "github.com/mattn/go-isatty"
packages = ["."]
revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39"
version = "v0.0.3"
[[projects]]
name = "github.com/mattn/go-sqlite3"
packages = ["."]
@ -141,6 +169,12 @@
revision = "25c197e02393bd44f50079945409009dd4d434f8"
version = "v1.9.0"
[[projects]]
name = "github.com/ugorji/go"
packages = ["codec"]
revision = "b4c50a2b199d93b13dc15e78929cfb23bfdf21ab"
version = "v1.1.1"
[[projects]]
name = "github.com/urfave/cli"
packages = ["."]
@ -167,15 +201,33 @@
]
revision = "c73c2afc3b812cdd6385de5a50616511c4a3d458"
[[projects]]
branch = "master"
name = "golang.org/x/sys"
packages = ["unix"]
revision = "ac767d655b305d4e9612f5f6e33120b9176c4ad4"
[[projects]]
name = "google.golang.org/appengine"
packages = ["cloudsql"]
revision = "b1f26356af11148e710935ed1ac8a7f5702c7612"
version = "v1.1.0"
[[projects]]
name = "gopkg.in/go-playground/validator.v8"
packages = ["."]
revision = "5f1438d3fca68893a817e4a66806cea46a9e4ebf"
version = "v8.18.2"
[[projects]]
name = "gopkg.in/yaml.v2"
packages = ["."]
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
version = "v2.2.1"
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "a6f9a83ff2c8ea983a59f7664e5594f0b44e75bf123a6e5b4643574e5ec1765f"
inputs-digest = "43ead2ce99499d86f5ea942bd5e6f14819fcaad810c70b336115eed6ac15f6f5"
solver-name = "gps-cdcl"
solver-version = 1

View File

@ -6,6 +6,7 @@ import (
"github.com/urfave/cli"
"os"
"github.com/araddon/dateparse"
"github.com/photoprism/photoprism/server"
)
func main() {
@ -36,6 +37,37 @@ func main() {
return nil
},
},
{
Name: "start",
Usage: "Starts web server",
Flags: []cli.Flag{
cli.IntFlag{
Name: "port, p",
Usage: "HTTP server port",
Value: 80,
},
cli.StringFlag{
Name: "ip, i",
Usage: "HTTP server IP address (optional)",
Value: "",
},
},
Action: func(context *cli.Context) error {
conf.SetValuesFromFile(photoprism.GetExpandedFilename(context.GlobalString("config-file")))
conf.SetValuesFromCliContext(context)
conf.CreateDirectories()
fmt.Printf("Starting web server at port %d...\n", context.Int("port"))
server.Start(context.String("ip"), context.Int("port"))
fmt.Println("Done.")
return nil
},
},
{
Name: "migrate-db",
Usage: "Automatically migrates / initializes database",

29
server/server.go Normal file
View File

@ -0,0 +1,29 @@
package server
import (
"github.com/gin-gonic/gin"
"fmt"
"net/http"
)
func Start(address string, port int) {
router := gin.Default()
router.LoadHTMLGlob("templates/*")
router.Static("/assets", "./assets")
router.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.tmpl", gin.H{
"title": "PhotoPrism",
})
})
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router.Run(fmt.Sprintf("%s:%d", address, port))
}

5
templates/index.tmpl Normal file
View File

@ -0,0 +1,5 @@
<html>
<h1>
{{ .title }}
</h1>
</html>