Skip to content

Instantly share code, notes, and snippets.

@peterhellberg
Last active January 18, 2019 01:58
Show Gist options
  • Save peterhellberg/9450839 to your computer and use it in GitHub Desktop.
Save peterhellberg/9450839 to your computer and use it in GitHub Desktop.

Revisions

  1. peterhellberg revised this gist Apr 29, 2014. 1 changed file with 10 additions and 10 deletions.
    20 changes: 10 additions & 10 deletions api.go
    Original file line number Diff line number Diff line change
    @@ -15,21 +15,21 @@ var (
    maxConnections = flag.Int("max-connections", 10, "Max connections to Redis")
    )

    var redisPool = redis.NewPool(func() (redis.Conn, error) {
    c, err := redis.Dial("tcp", *redisAddress)

    if err != nil {
    return nil, err
    }

    return c, err
    }, *maxConnections)

    func main() {
    martini.Env = martini.Prod

    flag.Parse()

    redisPool := redis.NewPool(func() (redis.Conn, error) {
    c, err := redis.Dial("tcp", *redisAddress)

    if err != nil {
    return nil, err
    }

    return c, err
    }, *maxConnections)

    defer redisPool.Close()

    m := martini.Classic()
  2. peterhellberg revised this gist Apr 29, 2014. 1 changed file with 6 additions and 4 deletions.
    10 changes: 6 additions & 4 deletions api.go
    Original file line number Diff line number Diff line change
    @@ -34,17 +34,19 @@ func main() {

    m := martini.Classic()

    m.Map(redisPool)

    m.Use(render.Renderer())

    m.Get("/", func() string {
    return "Hello from Martini!"
    })

    m.Get("/set/:key", func(r render.Render, params martini.Params, req *http.Request) {
    m.Get("/set/:key", func(r render.Render, pool *redis.Pool, params martini.Params, req *http.Request) {
    key := params["key"]
    value := req.URL.Query().Get("value")

    c := redisPool.Get()
    c := pool.Get()
    defer c.Close()

    status, err := c.Do("SET", key, value)
    @@ -61,10 +63,10 @@ func main() {
    }
    })

    m.Get("/get/:key", func(r render.Render, params martini.Params) {
    m.Get("/get/:key", func(r render.Render, pool *redis.Pool, params martini.Params) {
    key := params["key"]

    c := redisPool.Get()
    c := pool.Get()
    defer c.Close()

    value, err := redis.String(c.Do("GET", key))
  3. peterhellberg revised this gist Mar 9, 2014. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion api.go
    Original file line number Diff line number Diff line change
    @@ -45,6 +45,7 @@ func main() {
    value := req.URL.Query().Get("value")

    c := redisPool.Get()
    defer c.Close()

    status, err := c.Do("SET", key, value)

    @@ -64,6 +65,7 @@ func main() {
    key := params["key"]

    c := redisPool.Get()
    defer c.Close()

    value, err := redis.String(c.Do("GET", key))

    @@ -81,4 +83,4 @@ func main() {
    })

    m.Run()
    }
    }
  4. peterhellberg created this gist Mar 9, 2014.
    84 changes: 84 additions & 0 deletions api.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,84 @@
    package main

    import (
    "flag"
    "fmt"
    "net/http"

    "github.com/codegangsta/martini"
    "github.com/garyburd/redigo/redis"
    "github.com/martini-contrib/render"
    )

    var (
    redisAddress = flag.String("redis-address", ":6379", "Address to the Redis server")
    maxConnections = flag.Int("max-connections", 10, "Max connections to Redis")
    )

    var redisPool = redis.NewPool(func() (redis.Conn, error) {
    c, err := redis.Dial("tcp", *redisAddress)

    if err != nil {
    return nil, err
    }

    return c, err
    }, *maxConnections)

    func main() {
    martini.Env = martini.Prod

    flag.Parse()

    defer redisPool.Close()

    m := martini.Classic()

    m.Use(render.Renderer())

    m.Get("/", func() string {
    return "Hello from Martini!"
    })

    m.Get("/set/:key", func(r render.Render, params martini.Params, req *http.Request) {
    key := params["key"]
    value := req.URL.Query().Get("value")

    c := redisPool.Get()

    status, err := c.Do("SET", key, value)

    if err != nil {
    message := fmt.Sprintf("Could not SET %s:%s", key, value)

    r.JSON(400, map[string]interface{}{
    "status": "ERR",
    "message": message})
    } else {
    r.JSON(200, map[string]interface{}{
    "status": status})
    }
    })

    m.Get("/get/:key", func(r render.Render, params martini.Params) {
    key := params["key"]

    c := redisPool.Get()

    value, err := redis.String(c.Do("GET", key))

    if err != nil {
    message := fmt.Sprintf("Could not GET %s", key)

    r.JSON(400, map[string]interface{}{
    "status": "ERR",
    "message": message})
    } else {
    r.JSON(200, map[string]interface{}{
    "status": "OK",
    "value": value})
    }
    })

    m.Run()
    }