http.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { promisified } from './tauri'
  2. import { HttpOptions, Body, BodyType, ResponseType, PartialOptions } from './types/http'
  3. /**
  4. * makes a HTTP request
  5. *
  6. * @param options request options
  7. *
  8. * @return promise resolving to the response
  9. */
  10. async function request<T>(options: HttpOptions): Promise<T> {
  11. return await promisified({
  12. cmd: 'httpRequest',
  13. options: options
  14. })
  15. }
  16. /**
  17. * makes a GET request
  18. *
  19. * @param url request URL
  20. * @param options request options
  21. *
  22. * @return promise resolving to the response
  23. */
  24. async function get<T>(url: string, options: PartialOptions): Promise<T> {
  25. return await request({
  26. method: 'GET',
  27. url,
  28. ...options
  29. })
  30. }
  31. /**
  32. * makes a POST request
  33. *
  34. * @param url request URL
  35. * @param body request body
  36. * @param options request options
  37. *
  38. * @return promise resolving to the response
  39. */
  40. async function post<T>(url: string, body: Body, options: PartialOptions): Promise<T> {
  41. return await request({
  42. method: 'POST',
  43. url,
  44. body,
  45. ...options
  46. })
  47. }
  48. /**
  49. * makes a PUT request
  50. *
  51. * @param url request URL
  52. * @param body request body
  53. * @param options request options
  54. *
  55. * @return promise resolving to the response
  56. */
  57. async function put<T>(url: string, body: Body, options: PartialOptions): Promise<T> {
  58. return await request({
  59. method: 'PUT',
  60. url,
  61. body,
  62. ...options
  63. })
  64. }
  65. /**
  66. * makes a PATCH request
  67. *
  68. * @param url request URL
  69. * @param options request options
  70. *
  71. * @return promise resolving to the response
  72. */
  73. async function patch<T>(url: string, options: PartialOptions): Promise<T> {
  74. return await request({
  75. method: 'PATCH',
  76. url,
  77. ...options
  78. })
  79. }
  80. /**
  81. * makes a DELETE request
  82. *
  83. * @param url request URL
  84. * @param options request options
  85. *
  86. * @return promise resolving to the response
  87. */
  88. async function deleteRequest<T>(url: string, options: PartialOptions): Promise<T> {
  89. return await request({
  90. method: 'DELETE',
  91. url,
  92. ...options
  93. })
  94. }
  95. export default {
  96. request,
  97. get,
  98. post,
  99. put,
  100. patch,
  101. delete: deleteRequest,
  102. ResponseType,
  103. BodyType
  104. }