Duffer Derek
// server.js
const express = require("express");
const axios = require("axios");
const cors = require("cors");
require("dotenv").config();
const app = express();
const PORT = process.env.PORT || 3014;
const API_URL = process.env.API_URL;
const API_KEY = process.env.API_KEY;
app.use(cors());
app.use(express.json());
// API endpoint to handle requests from React app
app.get("/", async (req, res) => {
res.send(`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DMG CMP API Handler STG</title>
</head>
<body>
<h1>Hi, Nothing to see here!</h1>
<p>This is an api handler setup</p>
</body>
</html>
`);
});
app.get("/api/published-sessions", async (req, res) => {
// console.log('hit');
const { slug } = req.query;
// console.log(slug);
try {
const response = await axios.get(
`${API_URL}/api/session/published-sessions?paging=All`,
{
headers: {
accept: "*/*",
role: "event_admin",
"slug-name": slug,
Authorization: `Bearer ${API_KEY}`,
"Content-type": "application/json",
},
}
);
// console.log(response.data);
const data = await response.data;
for (let session of data.published_sessions["data"]) {
let speakers = session.published_data.users;
let speaker_array = [];
for (let speaker of speakers) {
// console.log(speaker);
speaker.fax = null;
speaker.city = null;
speaker.email = null;
speaker.phone = null;
speaker.state = null;
speaker.mobile = null;
speaker.poBox = null;
speaker.po_box = null;
speaker.street = null;
speaker.postCode = null;
speaker.linkedinLink = null;
speaker.linkedin_link = null;
speaker.company_address = null;
speaker.companyAddress = null;
speaker.companyCountry = null;
speaker.company_country = null;
speaker.pS_User_CreatedDate = null;
speaker.company_logo = null;
speaker.pS_User_ModifiedDate = null;
speaker.post_code = null;
speaker.avatar = { value: speaker.avatar?.thumbnail_path };
speaker_array.push(speaker);
}
session.published_data.users = speaker_array;
}
res.json(data);
} catch (error) {
console.error("Error fetching data:", error);
res.status(500).json({ error: "Error fetching data" });
}
});
app.get("/api/category-list", async (req, res) => {
const { slug } = req.query;
const promises = slug.split(",").map(async (s) => {
try {
const response = await axios.get(
`${API_URL}/api/session/category-settings/list?paging=All`,
{
headers: {
accept: "*/*",
role: "event_admin",
"slug-name": s,
Authorization: `Bearer ${API_KEY}`,
"Content-type": "application/json",
},
}
);
// console.log(response.data);
response.data.data.categories.forEach(item => {
item.event_slug = s;
});
return response.data;
} catch (error) {
console.error("Error fetching data:", error);
return null;
// res.status(500).json({ error: 'Error fetching data' });
}
});
const result = {
status: true,
data: {
enabled: true,
settings_id: "session_form_settings",
label: "",
categories: [],
},
};
// Wait for all promises to resolve using Promise.all
const results = await Promise.all(promises);
// Filter out any null responses (in case some API calls failed)
const validResults = results.filter((result) => result !== null);
// console.log(validResults);
for (vr of validResults) {
result.data.categories = result.data.categories.concat(vr.data.categories);
}
// console.log(result);
// Combine and process the results as needed
// For example, sending the combined result as a JSON response
res.json(result);
});
app.get("/api/date-list", async (req, res) => {
const { slug } = req.query;
const promises = slug.split(",").map(async (s) => {
try {
const response = await axios.get(
`${API_URL}/api/session/chair-person/list?paging=All`,
{
headers: {
accept: "*/*",
role: "event_admin",
"slug-name": s,
Authorization: `Bearer ${API_KEY}`,
"Content-type": "application/json",
},
}
);
const data = await response.data;
let new_list = {};
for (let date in data.chair_persons) {
// console.log(date);
// console.log(data.chair_persons[date]);
new_items = [];
for (let speaker of data.chair_persons[date]) {
// console.log(item.user);
speaker.user.fax = null;
speaker.user.city = null;
speaker.user.email = null;
speaker.user.phone = null;
speaker.user.state = null;
speaker.user.mobile = null;
speaker.user.poBox = null;
speaker.user.po_box = null;
speaker.user.street = null;
speaker.user.postCode = null;
speaker.user.linkedinLink = null;
speaker.user.linkedin_link = null;
speaker.user.company_address = null;
speaker.user.companyAddress = null;
speaker.user.companyCountry = null;
speaker.user.company_country = null;
speaker.user.pS_User_CreatedDate = null;
speaker.user.company_logo = null;
speaker.user.pS_User_ModifiedDate = null;
speaker.user.post_code = null;
new_items.push(speaker);
}
new_list[date] = new_items;
}
// console.log(new_list);
return new_list;
// const new_response = { status: data.status, chair_persons: new_list };
// return new_response;
// res.json(new_response);
} catch (error) {
console.error("Error fetching data:", error);
return null;
// res.status(500).json({ error: "Error fetching data" });
}
});
const result = {
status: true,
chair_persons: {},
};
const results = await Promise.all(promises);
// Filter out any null responses (in case some API calls failed)
const validResults = results.filter((result) => result !== null);
// console.log(validResults);
for (vr of validResults) {
for(date in vr) {
result.chair_persons[date] = vr[date];
}
}
// console.log(result);
// Combine and process the results as needed
// For example, sending the combined result as a JSON response
res.json(result);
});
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists