http.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import tauri from './tauri'
  2. /**
  3. * @typedef {number} ResponseType
  4. */
  5. /**
  6. * @enum {ResponseType}
  7. */
  8. const ResponseType = {
  9. JSON: 1,
  10. Text: 2,
  11. Binary: 3
  12. }
  13. /**
  14. * @typedef {number} BodyType
  15. */
  16. /**
  17. * @enum {BodyType}
  18. */
  19. const BodyType = {
  20. Form: 1,
  21. File: 2,
  22. Auto: 3
  23. }
  24. /**
  25. * @typedef {Object} HttpOptions
  26. * @property {String} options.method GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT or TRACE
  27. * @property {String} options.url the request URL
  28. * @property {Object} [options.headers] the request headers
  29. * @property {Object} [options.propertys] the request query propertys
  30. * @property {Object|String|Binary} [options.body] the request body
  31. * @property {Boolean} followRedirects whether to follow redirects or not
  32. * @property {Number} maxRedirections max number of redirections
  33. * @property {Number} connectTimeout request connect timeout
  34. * @property {Number} readTimeout request read timeout
  35. * @property {Number} timeout request timeout
  36. * @property {Boolean} allowCompression
  37. * @property {ResponseType} [responseType=1] response type
  38. * @property {BodyType} [bodyType=3] body type
  39. */
  40. /**
  41. * makes a HTTP request
  42. *
  43. * @param {HttpOptions} options request options
  44. *
  45. * @return {Promise<any>} promise resolving to the response
  46. */
  47. function request (options) {
  48. return tauri.httpRequest(options)
  49. }
  50. /**
  51. * makes a GET request
  52. *
  53. * @param {String} url request URL
  54. * @param {String|Object|Binary} body request body
  55. * @param {HttpOptions} options request options
  56. *
  57. * @return {Promise<any>} promise resolving to the response
  58. */
  59. function get (url, options = {}) {
  60. return request({
  61. method: 'GET',
  62. url,
  63. ...options
  64. })
  65. }
  66. /**
  67. * makes a POST request
  68. *
  69. * @param {String} url request URL
  70. * @param {String|Object|Binary} body request body
  71. * @param {HttpOptions} options request options
  72. *
  73. * @return {Promise<any>} promise resolving to the response
  74. */
  75. function post (url, body = void 0, options = {}) {
  76. return request({
  77. method: 'POST',
  78. url,
  79. body,
  80. ...options
  81. })
  82. }
  83. /**
  84. * makes a PUT request
  85. *
  86. * @param {String} url request URL
  87. * @param {String|Object|Binary} body request body
  88. * @param {HttpOptions} options request options
  89. *
  90. * @return {Promise<any>} promise resolving to the response
  91. */
  92. function put (url, body = void 0, options = {}) {
  93. return request({
  94. method: 'PUT',
  95. url,
  96. body,
  97. ...options
  98. })
  99. }
  100. /**
  101. * makes a PATCH request
  102. *
  103. * @param {String} url request URL
  104. * @param {HttpOptions} options request options
  105. *
  106. * @return {Promise<any>} promise resolving to the response
  107. */
  108. function patch (url, options = {}) {
  109. return request({
  110. method: 'PATCH',
  111. url,
  112. ...options
  113. })
  114. }
  115. /**
  116. * makes a DELETE request
  117. *
  118. * @param {String} url request URL
  119. * @param {HttpOptions} options request options
  120. *
  121. * @return {Promise<any>} promise resolving to the response
  122. */
  123. function deleteRequest (url, options = {}) {
  124. return request({
  125. method: 'DELETE',
  126. url,
  127. ...options
  128. })
  129. }
  130. export {
  131. request,
  132. get,
  133. post,
  134. put,
  135. patch,
  136. deleteRequest,
  137. ResponseType,
  138. BodyType
  139. }
  140. export default {
  141. request,
  142. get,
  143. post,
  144. put,
  145. patch,
  146. delete: deleteRequest,
  147. ResponseType,
  148. BodyType
  149. }