outers
Version:
outers - a all in one package for your day to day use
74 lines • 3.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const Middleware_Constant_1 = require("../../Config/Constant/Middleware.Constant"); // Import X-Powered-By Header
// Import Console from Utilities
const Console_log_1 = require("../../Logs/Console.log"); // import Red Console
const IP_Type_Checker_function_1 = __importDefault(require("../../Functions/IP Type Checker.function")); // Import IP Type Checker
// Import Serve Function
const JSON_Response_1 = require("../../Response/JSON-Response"); // Import JSON Response
// Import Status Codes
const Code_1 = require("../../StatusCode/Code"); // Import Status Codes
// main function
exports.default = (Methods) => {
// Allow only PUT, POST, PATCH, DELETE methods
const AllowedMethods = Methods !== null && Methods !== void 0 ? Methods : Middleware_Constant_1.IPAllowedMethods; // Allowed Methods
// Convert to Upper Case in Array if any of the method is in lower case
AllowedMethods.forEach((Method, Index) => {
AllowedMethods[Index] = Method.toUpperCase(); // Convert to Upper Case
});
return (Request, Response, Next) => {
try {
// Change Response X-Powered-By Header & Server Header
Response.setHeader("X-Powered-By", (0, Middleware_Constant_1.XPoweredBy)()); // Set X-Powered-By Header
Response.setHeader("Server", (0, Middleware_Constant_1.ServerName)()); // Set Server Header
// Check if Request has Headers
if (!Request.headers) {
return (0, JSON_Response_1.JSONSendResponse)({
response: Response,
status: false,
statusCode: Code_1.StatusCode.BAD_REQUEST,
Title: "Bad Request",
message: "No headers provided",
data: null,
cookieData: undefined,
contentType: "application/json",
});
}
// Check if Request Method is Allowed
if (AllowedMethods.includes(Request.method)) {
const RequesterIPaddress = Request.headers["x-forwarded-for"] ||
Request.connection.remoteAddress ||
Request.socket.remoteAddress ||
Request.socket.remoteAddress ||
Request.headers["x-real-ip"] ||
Request.ip; // Get Requester IP Address
// Check if Requester IP is IPv4 or IPv6
const IPType = (0, IP_Type_Checker_function_1.default)(String(RequesterIPaddress)); // Get IP Type
// Inject Requester IP Address
Request.body.RequesterIPaddress = RequesterIPaddress; // Inject Requester IP Address
Request.body.IPType = IPType; // Inject IP Type
Next(); // Next Middleware
}
else {
Next(); // Proceed Without Injecting IP Address
}
}
catch (Error) {
(0, Console_log_1.red)(Error); // Log Error
(0, JSON_Response_1.JSONSendResponse)({
response: Response,
status: false,
Title: "Cannot Process Request",
statusCode: Code_1.StatusCode.INTERNAL_SERVER_ERROR,
message: "Something went wrong while processing your request. Please try again later.",
data: undefined,
cookieData: undefined,
contentType: "application/json",
});
}
}; // Export main function
};
//# sourceMappingURL=Base.middleware.js.map