123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- import { promisified } from './tauri'
- export enum ResponseType {
- JSON = 1,
- Text = 2,
- Binary = 3
- }
- export enum BodyType {
- Form = 1,
- File = 2,
- Auto = 3
- }
- export type Body = object | string | BinaryType
- export type HttpVerb =
- | 'GET'
- | 'POST'
- | 'PUT'
- | 'DELETE'
- | 'PATCH'
- | 'HEAD'
- | 'OPTIONS'
- | 'CONNECT'
- | 'TRACE'
- export interface HttpOptions {
- method: HttpVerb
- url: string
- headers?: Record<string, any>
- params?: Record<string, any>
- body?: Body
- followRedirects: boolean
- maxRedirections: boolean
- connectTimeout: number
- readTimeout: number
- timeout: number
- allowCompression: boolean
- responseType?: ResponseType
- bodyType: BodyType
- }
- export type PartialOptions = Omit<HttpOptions, 'method' | 'url'>
- /**
- * makes a HTTP request
- *
- * @param options request options
- *
- * @return promise resolving to the response
- */
- async function request<T>(options: HttpOptions): Promise<T> {
- return await promisified({
- cmd: 'httpRequest',
- options: options
- })
- }
- /**
- * makes a GET request
- *
- * @param url request URL
- * @param options request options
- *
- * @return promise resolving to the response
- */
- async function get<T>(url: string, options: PartialOptions): Promise<T> {
- return await request({
- method: 'GET',
- url,
- ...options
- })
- }
- /**
- * makes a POST request
- *
- * @param url request URL
- * @param body request body
- * @param options request options
- *
- * @return promise resolving to the response
- */
- async function post<T>(
- url: string,
- body: Body,
- options: PartialOptions
- ): Promise<T> {
- return await request({
- method: 'POST',
- url,
- body,
- ...options
- })
- }
- /**
- * makes a PUT request
- *
- * @param url request URL
- * @param body request body
- * @param options request options
- *
- * @return promise resolving to the response
- */
- async function put<T>(
- url: string,
- body: Body,
- options: PartialOptions
- ): Promise<T> {
- return await request({
- method: 'PUT',
- url,
- body,
- ...options
- })
- }
- /**
- * makes a PATCH request
- *
- * @param url request URL
- * @param options request options
- *
- * @return promise resolving to the response
- */
- async function patch<T>(url: string, options: PartialOptions): Promise<T> {
- return await request({
- method: 'PATCH',
- url,
- ...options
- })
- }
- /**
- * makes a DELETE request
- *
- * @param url request URL
- * @param options request options
- *
- * @return promise resolving to the response
- */
- async function deleteRequest<T>(
- url: string,
- options: PartialOptions
- ): Promise<T> {
- return await request({
- method: 'DELETE',
- url,
- ...options
- })
- }
- export default {
- request,
- get,
- post,
- put,
- patch,
- delete: deleteRequest,
- ResponseType,
- BodyType
- }
|