diff --git a/index.js b/index.js index 00913ac..41e4c39 100644 --- a/index.js +++ b/index.js @@ -12,6 +12,7 @@ const loginUser = require("./users/login-user"); const logoutUser = require("./users/logout-user"); const userAuth = require("./users/user-auth"); const reAuthUser = require("./users/reauth-user"); +const getUser = require("./users/get-user"); /** ****************************************************************************** */ /** ****************************************************************************** */ @@ -32,6 +33,7 @@ const user = { userAuth: userAuth, reAuthUser: reAuthUser, updateUser: updateUser, + getUser: getUser, }; /** diff --git a/package.json b/package.json index ce501c9..f704185 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "datasquirel", - "version": "1.1.27", + "version": "1.1.28", "description": "Cloud-based SQL data management tool", "main": "index.js", "scripts": { diff --git a/users/get-user.js b/users/get-user.js new file mode 100644 index 0000000..db8f323 --- /dev/null +++ b/users/get-user.js @@ -0,0 +1,112 @@ +/** + * ============================================================================== + * Imports + * ============================================================================== + */ +const https = require("https"); +const encrypt = require("../functions/encrypt"); + +/** ****************************************************************************** */ +/** ****************************************************************************** */ +/** ****************************************************************************** */ +/** ****************************************************************************** */ +/** ****************************************************************************** */ +/** ****************************************************************************** */ + +/** + * @typedef {object} FunctionReturn + * @property {boolean} success - Did the function run successfully? + * @property {{ + * id: number, + * first_name: string, + * last_name: string, + * username: string, + * email: string, + * phone: string, + * social_id: [string], + * image: string, + * image_thumbnail: string, + * verification_status: [number=0], + * }} payload - Payload + */ + +/** + * ============================================================================== + * Main Function + * ============================================================================== + * @async + * + * @param {object} params - Single Param object containing params + * @param {String} params.key - API Key + * @param {String} params.database - Target Database + * @param {number} params.userId - user id + * @param {string[]} [params.fields] - fields to select + * + * @returns { Promise} + */ +module.exports = async function ({ key, userId, database, fields }) { + /** + * Make https request + * + * @description make a request to datasquirel.com + */ + const httpResponse = await new Promise((resolve, reject) => { + const defaultFields = ["id", "first_name", "last_name", "email", "username", "image", "image_thumbnail", "verification_status", "date_created", "date_created_code", "date_created_timestamp", "date_updated", "date_updated_code", "date_updated_timestamp"]; + + const updatedFields = fields && fields[0] ? [...defaultFields, ...fields] : defaultFields; + + const reqPayload = JSON.stringify({ + userId, + database, + fields: [...new Set(updatedFields)], + }); + + 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/get-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; +}; + +/** ********************************************** */ +/** ********************************************** */ +/** ********************************************** */