api.tsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import axios from 'axios';
  2. import { baseApi } from './baseApi';
  3. import { StorageType } from './types';
  4. /**
  5. * Generic api call format
  6. * @param {string} token - Bearer token.
  7. * @param {Object} params - Body params.
  8. * @param {Object} pathParams - Path params.
  9. * @param {(err: Object, res: Object) => void} callback - Callback function.
  10. */
  11. const checkAuth = baseApi('GET', '/api/auth/check');
  12. const registerUser = baseApi<{
  13. email: string,
  14. password: string
  15. }>('POST', '/api/users');
  16. const logInUser = baseApi<{
  17. email: string,
  18. password: string
  19. }>('POST', '/api/login');
  20. const logOutUser = baseApi('POST', '/api/logout');
  21. const getUser = baseApi<{}, { id: number }>('GET', pathParams => {
  22. return `/api/users/${pathParams.id}`;
  23. });
  24. const updateUser = baseApi<{
  25. rawKubeConfig?: string,
  26. allowedContexts?: string[]
  27. }, { id: number }>('PUT', pathParams => {
  28. return `/api/users/${pathParams.id}`;
  29. });
  30. const getContexts = baseApi<{}, { id: number }>('GET', pathParams => {
  31. return `/api/users/${pathParams.id}/contexts`;
  32. });
  33. const getCharts = baseApi<{
  34. namespace: string,
  35. context: string,
  36. storage: StorageType,
  37. limit: number,
  38. skip: number,
  39. byDate: boolean,
  40. statusFilter: string[]
  41. }>('GET', '/api/releases');
  42. const getChart = baseApi<{
  43. namespace: string,
  44. context: string,
  45. storage: StorageType
  46. }, { name: string, revision: number }>('GET', pathParams => {
  47. return `/api/releases/${pathParams.name}/${pathParams.revision}`;
  48. });
  49. const getChartComponents = baseApi<{
  50. namespace: string,
  51. context: string,
  52. storage: StorageType
  53. }, { name: string, revision: number }>('GET', pathParams => {
  54. return `/api/releases/${pathParams.name}/${pathParams.revision}/components`;
  55. });
  56. const getNamespaces = baseApi<{
  57. context: string
  58. }>('GET', '/api/k8s/namespaces');
  59. const getRevisions = baseApi<{
  60. namespace: string,
  61. context: string,
  62. storage: StorageType
  63. }, { name: string }>('GET', pathParams => {
  64. return `/api/releases/${pathParams.name}/history`;
  65. });
  66. const rollbackChart = baseApi<{
  67. namespace: string,
  68. context: string,
  69. storage: StorageType,
  70. revision: number
  71. }, { name: string }>('POST', pathParams => {
  72. return `/api/releases/${pathParams.name}/rollback`;
  73. });
  74. const upgradeChartValues = baseApi<{
  75. namespace: string,
  76. context: string,
  77. storage: StorageType,
  78. values: string
  79. }, { name: string }>('POST', pathParams => {
  80. return `/api/releases/${pathParams.name}/upgrade`;
  81. });
  82. // Bundle export to allow default api import (api.<method> is more readable)
  83. export default {
  84. checkAuth,
  85. registerUser,
  86. logInUser,
  87. logOutUser,
  88. getUser,
  89. updateUser,
  90. getContexts,
  91. getCharts,
  92. getChart,
  93. getChartComponents,
  94. getNamespaces,
  95. getRevisions,
  96. rollbackChart,
  97. upgradeChartValues
  98. }