101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * ==============================================================================
 | 
						|
 * Imports
 | 
						|
 * ==============================================================================
 | 
						|
 */
 | 
						|
const https = require("https");
 | 
						|
 | 
						|
/** ****************************************************************************** */
 | 
						|
/** ****************************************************************************** */
 | 
						|
/** ****************************************************************************** */
 | 
						|
/** ****************************************************************************** */
 | 
						|
/** ****************************************************************************** */
 | 
						|
/** ****************************************************************************** */
 | 
						|
 | 
						|
/**
 | 
						|
 * @typedef {object} FunctionReturn
 | 
						|
 * @property {boolean} success - Did the function run successfully?
 | 
						|
 * @property {(Object[]|string)} [payload=[]] - Payload
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * ==============================================================================
 | 
						|
 * Main Function
 | 
						|
 * ==============================================================================
 | 
						|
 * @async
 | 
						|
 *
 | 
						|
 * @param {{
 | 
						|
 *  key: string,
 | 
						|
 *  database: string
 | 
						|
 *  payload: {
 | 
						|
 *      first_name: string,
 | 
						|
 *      last_name: string,
 | 
						|
 *      user_name: string,
 | 
						|
 *      email: string,
 | 
						|
 *      password: string,
 | 
						|
 *  },
 | 
						|
 * }}
 | 
						|
 *
 | 
						|
 * @returns { Promise<FunctionReturn> }
 | 
						|
 */
 | 
						|
module.exports = async function ({ key, payload, database }) {
 | 
						|
    /**
 | 
						|
     * Make https request
 | 
						|
     *
 | 
						|
     * @description make a request to datasquirel.com
 | 
						|
     */
 | 
						|
    const httpResponse = await new Promise((resolve, reject) => {
 | 
						|
        const reqPayload = JSON.stringify({
 | 
						|
            payload,
 | 
						|
            database,
 | 
						|
        });
 | 
						|
 | 
						|
        const httpsRequest = https.request(
 | 
						|
            {
 | 
						|
                method: "POST",
 | 
						|
                headers: {
 | 
						|
                    "Content-Type": "application/json",
 | 
						|
                    "Content-Length": Buffer.from(reqPayload).length,
 | 
						|
                    Authorization: key,
 | 
						|
                },
 | 
						|
                port: 443,
 | 
						|
                hostname: "datasquirel.com",
 | 
						|
                path: `/api/user/add-user`,
 | 
						|
            },
 | 
						|
 | 
						|
            /**
 | 
						|
             * Callback Function
 | 
						|
             *
 | 
						|
             * @description https request callback
 | 
						|
             */
 | 
						|
            (response) => {
 | 
						|
                var str = "";
 | 
						|
 | 
						|
                response.on("data", function (chunk) {
 | 
						|
                    str += chunk;
 | 
						|
                });
 | 
						|
 | 
						|
                response.on("end", function () {
 | 
						|
                    resolve(JSON.parse(str));
 | 
						|
                });
 | 
						|
 | 
						|
                response.on("error", (err) => {
 | 
						|
                    reject(err);
 | 
						|
                });
 | 
						|
            }
 | 
						|
        );
 | 
						|
        httpsRequest.write(reqPayload);
 | 
						|
        httpsRequest.end();
 | 
						|
    });
 | 
						|
 | 
						|
    /** ********************************************** */
 | 
						|
    /** ********************************************** */
 | 
						|
    /** ********************************************** */
 | 
						|
 | 
						|
    return httpResponse;
 | 
						|
};
 | 
						|
 | 
						|
/** ********************************************** */
 | 
						|
/** ********************************************** */
 | 
						|
/** ********************************************** */
 |