import * as https from 'https' import * as plugins from './smartrequest.plugins' import * as interfaces from './smartrequest.interfaces' import { request } from './smartrequest.request' export { request } from './smartrequest.request' export { ISmartRequestOptions } from './smartrequest.interfaces' export let get = async (domainArg: string, optionsArg: interfaces.ISmartRequestOptions = {}) => { optionsArg.method = 'GET' let response = await request(domainArg, optionsArg) return response } export let post = async (domainArg: string, optionsArg: interfaces.ISmartRequestOptions = {}) => { optionsArg.method = 'POST' if ( typeof optionsArg.requestBody === 'object' && (!optionsArg.headers || (!optionsArg.headers['Content-Type'])) ){ // make sure headers exist if(!optionsArg.headers) { optionsArg.headers = {} } // assign the right Content-Type, leaving all other headers in place Object.assign(optionsArg.headers, { 'Content-Type': 'application/json' }) } let response = await request(domainArg, optionsArg) return response } export let put = async (domainArg: string, optionsArg: interfaces.ISmartRequestOptions = {}) => { optionsArg.method = 'PUT' let response = await request(domainArg, optionsArg) return response } export let del = async (domainArg: string, optionsArg: interfaces.ISmartRequestOptions = {}) => { optionsArg.method = 'DELETE' let response = await request(domainArg, optionsArg) return response }