api.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import axios from 'axios';
  2. import { baseApi } from './baseApi';
  3. /**
  4. * Generic api call format
  5. * @param {string} token - Bearer token.
  6. * @param {Object} params - Query params.
  7. * @param {Object} pathParams - Path params.
  8. * @param {(err: Object, res: Object) => void} callback - Callback function.
  9. */
  10. const checkAuth = baseApi('GET', '/api/auth/check');
  11. const registerUser = baseApi<{
  12. email: string,
  13. password: string
  14. }>('POST', '/api/users');
  15. const logInUser = baseApi<{
  16. email: string,
  17. password: string
  18. }>('POST', '/api/login');
  19. const logOutUser = baseApi('POST', '/api/logout');
  20. const getUser = baseApi<{}, { id: number }>('GET', pathParams => {
  21. return `/api/users/${pathParams.id}`;
  22. });
  23. const updateUser = baseApi<{
  24. rawKubeconfig?: string,
  25. allowedClusters?: string[]
  26. }, { id: number }>('PUT', pathParams => {
  27. return `/api/users/${pathParams.id}`;
  28. });
  29. const getClusters = baseApi<{}, { id: number }>('GET', pathParams => {
  30. return `/api/users/${pathParams.id}/clusters`;
  31. });
  32. const getAllClusters = baseApi<{}, { id: number }>('GET', pathParams => {
  33. return `/api/users/${pathParams.id}/clusters/all`;
  34. });
  35. // Bundle export to allow default api import (api.<method> is more readable)
  36. export default {
  37. checkAuth,
  38. registerUser,
  39. logInUser,
  40. logOutUser,
  41. getUser,
  42. updateUser,
  43. getClusters,
  44. getAllClusters
  45. }