123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- 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
- }
|