apiRequestService.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import {AssociativeArray, Connector, HTTP_METHOD} from "./data";
  2. /**
  3. * A basic api request service
  4. *
  5. * It will send basic http requests and returns raw results
  6. */
  7. class ApiRequestService {
  8. private connector: Connector;
  9. public constructor(
  10. connector: Connector,
  11. ) {
  12. this.connector = connector
  13. }
  14. /**
  15. * Send a GET request
  16. *
  17. * @param url
  18. * @param query
  19. */
  20. public get(
  21. url: string,
  22. query: AssociativeArray | null = null
  23. ) {
  24. return this.request(HTTP_METHOD.GET, url, null, null, query)
  25. }
  26. /**
  27. * Send a POST request
  28. *
  29. * @param url
  30. * @param body
  31. * @param params
  32. * @param query
  33. */
  34. public post(
  35. url: string,
  36. body: string | null = null,
  37. params: AssociativeArray | null = null,
  38. query: AssociativeArray | null = null
  39. ) {
  40. return this.request(HTTP_METHOD.POST, url, body, params, query)
  41. }
  42. /**
  43. * Send a PUT request
  44. *
  45. * @param url
  46. * @param body
  47. * @param params
  48. * @param query
  49. */
  50. public put(
  51. url: string,
  52. body: string | null = null,
  53. params: AssociativeArray | null = null,
  54. query: AssociativeArray | null = null
  55. ) {
  56. return this.request(HTTP_METHOD.PUT, url, body, params, query)
  57. }
  58. /**
  59. * Send a DELETE request
  60. *
  61. * @param url
  62. * @param query
  63. */
  64. public delete(
  65. url: string,
  66. query: AssociativeArray | null = null
  67. ) {
  68. return this.request(HTTP_METHOD.GET, url, null, null, query)
  69. }
  70. /**
  71. * Send an http request
  72. *
  73. * @param method
  74. * @param url
  75. * @param body
  76. * @param params
  77. * @param query
  78. * @private
  79. */
  80. private async request(
  81. method: HTTP_METHOD,
  82. url: string,
  83. body: string | null = null,
  84. params: AssociativeArray | null = null,
  85. query: AssociativeArray | null = null
  86. ): Promise<Response> {
  87. return await this.connector.request(method, url, body, params, query)
  88. }
  89. }
  90. export default ApiRequestService