Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "github.com/chzyer/readline"
  6. "log"
  7. //"os"
  8. "net/http"
  9. "strings"
  10. )
  11.  
  12. func Shell() {
  13. prompt, err := readline.NewEx(&readline.Config{
  14. Prompt: "> ",
  15. HistoryFile: "/tmp/q.log",
  16. InterruptPrompt: "^C",
  17. EOFPrompt: "exit",
  18. HistorySearchFold: true,
  19. })
  20.  
  21. defer func() {
  22. err := prompt.Close()
  23. if err != nil {
  24. log.Fatal(err)
  25. }
  26. }()
  27.  
  28. if err != nil {
  29. log.Fatal(err)
  30. }
  31.  
  32. log.SetOutput(prompt.Stderr())
  33.  
  34. for {
  35. line, err := prompt.Readline()
  36.  
  37. if err != nil {
  38. log.Fatal(err)
  39. }
  40.  
  41. line = strings.TrimSpace(line)
  42. cmd := strings.Fields(line)
  43.  
  44. if len(cmd) > 0 {
  45. switch cmd[0] {
  46. case "queue":
  47. select {
  48. case messages <- cmd[1]:
  49. fmt.Println("Added to queue", cmd[1])
  50. default:
  51. fmt.Println("nope")
  52. }
  53. default:
  54. fmt.Println(cmd)
  55. }
  56. }
  57. }
  58. }
  59.  
  60. var messages = make(chan string, 32)
  61.  
  62. func getMessage(w http.ResponseWriter, r *http.Request) {
  63. select {
  64. case m, ok := <-messages:
  65. if ok {
  66. fmt.Fprintf(w, m)
  67. } else {
  68. fmt.Println(ok)
  69. fmt.Fprintf(w, "Something went wrong")
  70. }
  71. default:
  72. fmt.Fprintf(w, "The queue is empty!")
  73. }
  74. }
  75.  
  76. func main() {
  77.  
  78. go Shell()
  79. http.HandleFunc("/get", getMessage)
  80. http.ListenAndServe(":8080", nil)
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement