main.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "os"
  6. "github.com/giuem/ga-proxy/server"
  7. "github.com/urfave/cli"
  8. )
  9. func main() {
  10. app := cli.NewApp()
  11. app.Name = "ga-proxy"
  12. app.HideVersion = true
  13. app.Flags = []cli.Flag{
  14. cli.StringFlag{
  15. Name: "ip, i",
  16. Value: "127.0.0.1",
  17. Usage: "`IP` to listen",
  18. EnvVar: "IP",
  19. },
  20. cli.StringFlag{
  21. Name: "port, p",
  22. Value: "9080",
  23. Usage: "`port` to listen",
  24. EnvVar: "PORT",
  25. },
  26. }
  27. app.Action = func(c *cli.Context) error {
  28. server.Run(c.String("ip"), c.String("port"))
  29. return nil
  30. }
  31. app.Commands = []cli.Command{
  32. cli.Command{
  33. Name: "ping",
  34. Flags: []cli.Flag{
  35. cli.StringFlag{
  36. Name: "ip, i",
  37. Value: "127.0.0.1",
  38. Usage: "server `IP`",
  39. EnvVar: "IP",
  40. },
  41. cli.StringFlag{
  42. Name: "port, p",
  43. Value: "9080",
  44. Usage: "server `port`",
  45. EnvVar: "PORT",
  46. },
  47. },
  48. Action: func(c *cli.Context) error {
  49. resp, err := http.Get(fmt.Sprintf("http://%v:%v/ping", c.String("ip"), c.String("port")))
  50. if err != nil {
  51. return cli.NewExitError(err, 1)
  52. }
  53. defer resp.Body.Close()
  54. if resp.StatusCode != 200 {
  55. return cli.NewExitError(fmt.Errorf("server returns non-200 status code"), 1)
  56. }
  57. return nil
  58. },
  59. },
  60. }
  61. app.Run(os.Args)
  62. }