From 5f990c7a00111aac28dd6c814fd239aa479f963b Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Sat, 13 Dec 2025 14:47:32 -0600 Subject: [PATCH] feat: Add Formbricks API connection test script and debug logging for survey fetches. --- data/survey_mappings.db-shm | Bin 32768 -> 32768 bytes data/survey_mappings.db-wal | Bin 0 -> 24752 bytes src/routes/surveys.js | 12 +++++++--- src/server.js | 1 + src/services/formbricks.js | 23 ++++++++++++------- src/views/redirect.ejs | 43 ++++++++++++++++++++++++++++++++++++ src/views/survey.ejs | 12 ++++++++++ test-connection.js | 30 +++++++++++++++++++++++++ 8 files changed, 110 insertions(+), 11 deletions(-) create mode 100644 src/views/redirect.ejs create mode 100644 test-connection.js diff --git a/data/survey_mappings.db-shm b/data/survey_mappings.db-shm index fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10..c6e8ac204ec08604cb065494858246a4089ec882 100644 GIT binary patch delta 195 zcmZo@U}|V!s+V}A%K!pQK+MR%AixHsIf1y&;nTGCmyDnHwKQ|rukK%a=3C>Y#)y-) zq^buR1qQ4@@;?%Q3Qw%(6a`6vtYrsc4j=|u&#|#F(vOjGW8+^YMkX-H3?i9X7}z#8 N{$^ri-PkCo3IG7tIqv`f delta 62 zcmZo@U}|V!VwQNMJNd1jDz^o@1e@vP+ni9o2#n7F1^;x+{2J#XZx+%ne*>l{Hb^LyW^Lack$5T-^bP8Q2F;y-ndf7 zgGDxF*w63>96$gF00AHX1b_e#00KY&2mk>f00e-*Z6k23xY%Yy(eOKVtf466IL=E1 zj_*Y|FIXKUaDueP3v0aC6u1ph-QcwuL&pj?tH^yN!BsR;1+}Cs?WBVlOJ)q=rplzT zsb6sT^kW+rzqxQ>8IKj&FB$e{`~e3L00KY&2mk>f00e*l5C8%|00;m9AaLgrc%alS zP+f-NYN=fv&(3lWa8ni1*wh#JzWwPF!`1a4_I!b>411ludgnF{X9fg-01yBIKmZ5; z0U!VbfB+Bx0zd!={0{;PC8kg;m6$4CyF}JceSy!thhNxvwec-^kDy+wGVFQw`Npq} zbB*=-*LAaATzP**sa>l1cnS_600e*l5C8%|00;m9AaM5)=+rAm+TtNb^u1PJapIPu zX05~%qAZI#!O-4|{my#icEXGY$Uxyn^O-PdZlNGdJQTPyLc6c8V2yRGk&m3n(j!Zj zZ7%cUP>#ji6|ElivEEIMEl(fm&F3fzR;|)*YgmC)%3RYCaJ-m172|lZFR0;gs8XLR zzGQkv=$p+nY`&-mD9xLHeDLnu6rGdHSm)7+&Zw*TT`a>Boql(OayiwgtvqR(-HvX! z6BUYpQ^ly-SYSAihEdPcqJf$r%S|#vlpG&f)cVJ>$c&L07)YNs@`w>e`C*EZzJ!%{ ztdzNaYNU2Y(%fW_@>Xt*R4wYs|3Qf+QJF{#GcW16rswMMsZnnn* z>48$;DB=1Nt{+=HS9T)NjTF;x1T93Fn+(%{y3@B_ew$A{dz2#bauJI>h(+8MH?rbH zh-Cp;9a|qnec$vwgWAMq7^JbDQtuuo3Yh(&d&#xkYdOeDTlkvOJ)7h8JWwT+I@I$g zTdGIVj9U`Ek&}P;)u}JAyLs*CN4ra3ki0;>vCTAg8b7iDew*N{#x{G7{TRCh*Vq<& zU*p5O?f00e*l5C8%|00;nqgCVe5I#Qsyadk3Dv(Z+j0s5H^SZz8x z)3;hCg=wZ!l}yrnqNVXlio;VGPg1;@^4=Ly9F;|~lxB%6kV%@KQ6iHxA7b(z0mVwd zJ5KTffB6FM{rULmD}`UqLSEott_4s90zd!=00AHX1b_e#IA8+v&I@Q8k~-hK08!YF zya3UeYhHi|>`z{RD9t%9FqW8aUVupKLtcQ$%q=fKiqA7IK { `Found surveyId: ${surveyId}, environmentId: ${environmentId}, type: ${type}` ); - // Redirect link surveys to Formbricks + // Redirect link surveys to Formbricks (via intermediate page for OG tags) if (type === "link") { const redirectUrl = `${process.env.FORMBRICKS_SDK_URL}/s/${surveyId}`; - console.log(`Redirecting to: ${redirectUrl}`); - return res.redirect(redirectUrl); + console.log(`Rendering redirect page for: ${redirectUrl}`); + return res.render("redirect", { + title: "Vanity | formbricks", + redirectUrl: redirectUrl, + currentUrl: `${process.env.BASE_DOMAIN}/${root}/${survey}`, + baseDomain: process.env.BASE_DOMAIN, + }); } // Embed app surveys @@ -26,6 +31,7 @@ router.get("/:root/:survey", (req, res) => { surveyId: surveyId, formbricksSdkUrl: process.env.FORMBRICKS_SDK_URL, formbricksEnvId: environmentId, + baseDomain: process.env.BASE_DOMAIN, }); } else { console.log("Survey not found"); diff --git a/src/server.js b/src/server.js index 748fa16..4e7fb85 100644 --- a/src/server.js +++ b/src/server.js @@ -15,6 +15,7 @@ app.set("views", path.join(__dirname, "views")); // Middleware app.use(express.json()); app.use(express.urlencoded({ extended: true })); +app.use("/assets", express.static(path.join(__dirname, "../assets"))); // Health check endpoint app.get("/health", (req, res) => { diff --git a/src/services/formbricks.js b/src/services/formbricks.js index 2dbafe0..62cabe3 100644 --- a/src/services/formbricks.js +++ b/src/services/formbricks.js @@ -58,16 +58,23 @@ async function fetchSurveysFromAPI() { } try { - const response = await axios.get( - `${process.env.FORMBRICKS_SDK_URL}/api/v1/management/surveys`, - { - headers: { - "x-api-key": process.env.FORMBRICKS_API_KEY, - }, - timeout: 15000, // 15 seconds timeout - } + const url = `${process.env.FORMBRICKS_SDK_URL}/api/v1/management/surveys`; + console.log(`[DEBUG] Fetching surveys from: ${url}`); + console.log( + `[DEBUG] API Key starts with: ${ + process.env.FORMBRICKS_API_KEY + ? process.env.FORMBRICKS_API_KEY.substring(0, 4) + : "undefined" + }` ); + const response = await axios.get(url, { + headers: { + "x-api-key": process.env.FORMBRICKS_API_KEY, + }, + timeout: 15000, // 15 seconds timeout + }); + return Array.isArray(response.data?.data) ? response.data.data : []; } catch (error) { console.error( diff --git a/src/views/redirect.ejs b/src/views/redirect.ejs new file mode 100644 index 0000000..699b527 --- /dev/null +++ b/src/views/redirect.ejs @@ -0,0 +1,43 @@ + + + + + + <%= title %> + + + + + + + + + + + + + + + + + + + + +

Redirecting to survey...

+ + + diff --git a/src/views/survey.ejs b/src/views/survey.ejs index 7e007db..990f11a 100644 --- a/src/views/survey.ejs +++ b/src/views/survey.ejs @@ -4,6 +4,18 @@ <%= title %> + + + + + + + + + + + +