client_api.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package clientApi
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. )
  8. func PostData[T any](url string, data any) error {
  9. jsonData, err := json.Marshal(data)
  10. if err != nil {
  11. return err
  12. }
  13. resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
  14. if err != nil {
  15. return err
  16. }
  17. defer resp.Body.Close()
  18. if resp.StatusCode != http.StatusOK {
  19. return fmt.Errorf("failed to add: %s", resp.Status)
  20. }
  21. return nil
  22. }
  23. func FetchData[T any](url string, data T) error {
  24. resp, err := http.Get(url)
  25. if err != nil {
  26. return err
  27. }
  28. defer resp.Body.Close()
  29. if resp.StatusCode != http.StatusOK {
  30. return fmt.Errorf("failed to fetch data: status code %d", resp.StatusCode)
  31. }
  32. return json.NewDecoder(resp.Body).Decode(data)
  33. }
  34. func FetchOne[T any](params string) (data T, err error) {
  35. url := params
  36. err = FetchData(url, &data)
  37. if err != nil {
  38. return data, err
  39. }
  40. return data, nil
  41. }
  42. func Fetch[T any](params string) (data []T, err error) {
  43. url := params
  44. err = FetchData(url, &data)
  45. if err != nil {
  46. return nil, err
  47. }
  48. return data, nil
  49. }