ext_client.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package functions
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/gravitl/netmaker/models"
  6. )
  7. // GetAllExtClients - fetch all external clients
  8. func GetAllExtClients() *[]models.ExtClient {
  9. return request[[]models.ExtClient](http.MethodGet, "/api/extclients", nil)
  10. }
  11. // GetNetworkExtClients - fetch external clients associated with a network
  12. func GetNetworkExtClients(networkName string) *[]models.ExtClient {
  13. return request[[]models.ExtClient](http.MethodGet, "/api/extclients/"+networkName, nil)
  14. }
  15. // GetExtClient - fetch a single external client
  16. func GetExtClient(networkName, clientID string) *models.ExtClient {
  17. return request[models.ExtClient](http.MethodGet, fmt.Sprintf("/api/extclients/%s/%s", networkName, clientID), nil)
  18. }
  19. // GetExtClientConfig - fetch a wireguard config of an external client
  20. func GetExtClientConfig(networkName, clientID string) string {
  21. return get(fmt.Sprintf("/api/extclients/%s/%s/file", networkName, clientID))
  22. }
  23. // CreateExtClient - create an external client
  24. func CreateExtClient(networkName, nodeID, extClientID string) {
  25. if extClientID != "" {
  26. request[any](http.MethodPost, fmt.Sprintf("/api/extclients/%s/%s", networkName, nodeID), &models.CustomExtClient{
  27. ClientID: extClientID,
  28. })
  29. } else {
  30. request[any](http.MethodPost, fmt.Sprintf("/api/extclients/%s/%s", networkName, nodeID), nil)
  31. }
  32. }
  33. // DeleteExtClient - delete an external client
  34. func DeleteExtClient(networkName, clientID string) *models.SuccessResponse {
  35. return request[models.SuccessResponse](http.MethodDelete, fmt.Sprintf("/api/extclients/%s/%s", networkName, clientID), nil)
  36. }
  37. // UpdateExtClient - update an external client
  38. func UpdateExtClient(networkName, clientID string, payload *models.ExtClient) *models.ExtClient {
  39. return request[models.ExtClient](http.MethodPut, fmt.Sprintf("/api/extclients/%s/%s", networkName, clientID), payload)
  40. }