main.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io"
  7. "log"
  8. "net/http"
  9. "github.com/gravitl/netmaker/models"
  10. "github.com/gravitl/netmaker/netclient/config"
  11. "github.com/gravitl/netmaker/netclient/functions"
  12. "github.com/kr/pretty"
  13. )
  14. func main() {
  15. cfg := &config.ClientConfig{}
  16. cfg.Network = "short"
  17. cfg.ReadConfig()
  18. token, err := functions.Authenticate(cfg)
  19. if err != nil {
  20. log.Fatal(err)
  21. } else {
  22. log.Println("success", token)
  23. }
  24. url := "https://" + cfg.Server.API + "/api/nodes/" + cfg.Network + "/" + cfg.Node.ID
  25. response, err := api("", http.MethodGet, url, token)
  26. if err != nil {
  27. fmt.Println(err)
  28. }
  29. fmt.Println(response.StatusCode, response.Status)
  30. if response.StatusCode != http.StatusOK {
  31. bytes, err := io.ReadAll(response.Body)
  32. if err != nil {
  33. fmt.Println(err)
  34. }
  35. pretty.Println(string(bytes))
  36. }
  37. defer response.Body.Close()
  38. node := models.LegacyNode{}
  39. if err := json.NewDecoder(response.Body).Decode(&node); err != nil {
  40. fmt.Println(err)
  41. }
  42. pretty.Println(node)
  43. }
  44. func api(data any, method, url, authorization string) (*http.Response, error) {
  45. var request *http.Request
  46. var err error
  47. if data != "" {
  48. payload, err := json.Marshal(data)
  49. if err != nil {
  50. return nil, fmt.Errorf("error encoding data %w", err)
  51. }
  52. request, err = http.NewRequest(method, url, bytes.NewBuffer(payload))
  53. if err != nil {
  54. return nil, fmt.Errorf("error creating http request %w", err)
  55. }
  56. request.Header.Set("Content-Type", "application/json")
  57. } else {
  58. request, err = http.NewRequest(method, url, nil)
  59. if err != nil {
  60. return nil, fmt.Errorf("error creating http request %w", err)
  61. }
  62. }
  63. if authorization != "" {
  64. request.Header.Set("authorization", "Bearer "+authorization)
  65. }
  66. client := http.Client{}
  67. return client.Do(request)
  68. }