Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.12 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "log"
  6.     "strconv"
  7.     "net/http"
  8.     "github.com/julienschmidt/httprouter"
  9.     "github.com/kr/beanstalk"
  10. )
  11.  
  12. var conn, _ = beanstalk.Dial("tcp", "127.0.0.1:11300")
  13.  
  14. func ssi(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
  15.  
  16.     var err error
  17.     var i, count int
  18.     var id uint64
  19.     var body []byte
  20.  
  21.     bot := ps.ByName("bot")
  22.     if count, err = strconv.Atoi(string(ps.ByName("count"))); err != nil {
  23.         count = 1
  24.     }
  25.  
  26.     tubeSet := beanstalk.NewTubeSet(conn, bot)
  27.  
  28.     response := ""
  29.  
  30.     for i = 0; i < count; i++ {
  31.  
  32.         if id, body, err = tubeSet.Reserve(0); err != nil {
  33.             break
  34.         }
  35.  
  36.         response += string(body) + " "
  37.         conn.Delete(id)
  38.     }
  39.  
  40.     if i == 0 {
  41.         response = "<!-- empty -->"
  42.     }
  43.  
  44.     fmt.Fprintf(w, response)
  45.     log.Print(bot, ":", i, "/", count, " [", r.RemoteAddr, "]")
  46. }
  47.  
  48. func main() {
  49.     log.Print("Start server")
  50.     router := httprouter.New()
  51.     router.GET("/:bot", ssi)
  52.     router.GET("/:bot/:count", ssi)
  53.  
  54.     log.Fatal(http.ListenAndServe(":9080", router))
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement