1 line
5.3 KiB
JavaScript
1 line
5.3 KiB
JavaScript
(()=>{var e={};e.id=8635,e.ids=[8635],e.modules={3295:e=>{"use strict";e.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:e=>{"use strict";e.exports=require("assert")},14985:e=>{"use strict";e.exports=require("dns")},21820:e=>{"use strict";e.exports=require("os")},25037:(e,t,r)=>{"use strict";r.d(t,{_:()=>n});var s=r(70762);let n=s.z.object({NODE_ENV:s.z.enum(["development","test","production"]).default("development"),DATABASE_URL:s.z.string().url(),NEWSDB_URL:s.z.string().regex(/^postgresql:\/\//,"Must be a valid PostgreSQL URL"),NEWS_API_URL:s.z.string().url(),KEYCLOAK_CLIENT_ID:s.z.string(),KEYCLOAK_CLIENT_SECRET:s.z.string(),KEYCLOAK_REALM:s.z.string(),KEYCLOAK_ISSUER:s.z.string().url(),LEANTIME_TOKEN:s.z.string(),LEANTIME_API_URL:s.z.string().url(),ROCKET_CHAT_TOKEN:s.z.string(),ROCKET_CHAT_USER_ID:s.z.string()}).parse(process.env)},27910:e=>{"use strict";e.exports=require("stream")},28354:e=>{"use strict";e.exports=require("util")},29294:e=>{"use strict";e.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33848:(e,t,r)=>{"use strict";r.r(t),r.d(t,{patchFetch:()=>w,routeModule:()=>d,serverHooks:()=>h,workAsyncStorage:()=>g,workUnitAsyncStorage:()=>m});var s={};r.r(s),r.d(s,{GET:()=>p});var n=r(96559),o=r(48088),i=r(37719),a=r(32190),u=r(25037),l=r(36781);function c(e){try{let t=new Date(e),r=t.getDate(),s=t.toLocaleString("fr-FR",{month:"short"}).toLowerCase().replace(".","");return{displayDate:`${r} ${s}.`,timestamp:t.toLocaleString("fr-FR",{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit",hour12:!1}).replace(","," \xe0")}}catch(e){return{displayDate:"N/A",timestamp:"N/A"}}}async function p(e){try{let t,r=new URL(e.url),s="true"===r.searchParams.get("refresh"),n=r.searchParams.get("limit")||"100",o=s||r.searchParams.has("limit")&&"100"!==n;if(console.log(`News API request: limit=${n}, forceRefresh=${s}, bypassCache=${o}`),!o){let e=await (0,l.ax)(n);if(e)return console.log(`Using cached news data (${e.length} articles)`),a.NextResponse.json(e)}console.log(`Fetching news from FastAPI server with limit=${n}...`);let i=`${u._.NEWS_API_URL}/news?limit=${n}`;console.log(`Full API URL: ${i}`);let p=await fetch(i,{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(1e4)});if(!p.ok){console.error(`News API error: ${p.status} ${p.statusText}`);let e=p.headers.get("content-type");if(e&&!e.includes("application/json"))return console.error("News API returned non-JSON response"),a.NextResponse.json({error:"News API returned invalid response format",status:p.status},{status:502});return a.NextResponse.json({error:"Failed to fetch news",status:p.status},{status:502})}try{t=await p.json(),console.log(`News API returned ${t.length} articles with limit=${n}`),console.log(`First article: ${JSON.stringify(t[0])}`),console.log(`API URL used: ${i}`),t.length<parseInt(n)&&t.length>0&&console.log(`WARNING: API returned fewer articles (${t.length}) than requested (${n}). This suggests a backend limit.`)}catch(e){return console.error("Failed to parse news API response:",e),a.NextResponse.json({error:"Failed to parse news API response",details:e instanceof Error?e.message:"Unknown error"},{status:502})}let d=t.map(e=>({id:e.id,title:e.title,displayDate:c(e.date).displayDate,timestamp:c(e.date).timestamp,source:function(e){if(!e)return"";let t=e.replace(/^(https?:\/\/)?(www\.)?/i,"").split(".")[0].toLowerCase().replace(/[^a-z0-9]/g," ").trim();return t.charAt(0).toUpperCase()+t.slice(1)}(e.source),description:function(e,t){if(!e)return"";let r=e?e.replace(/<[^>]*>/g,"").replace(/ /g," ").replace(/\s+/g," ").trim():"";if(r.length<=200)return r;let s=r.lastIndexOf(" ",200);return r.substring(0,s>0?s:t).trim().replace(/[.,!?]$/,"")+"..."}(e.description||"",200),category:(!e.category,null),url:e.url}));return console.log(`Formatted and returning ${d.length} news articles`),await (0,l.ql)(d,n),a.NextResponse.json(d)}catch(e){return console.error("News API error:",e),a.NextResponse.json({error:"Failed to fetch news",details:e instanceof Error?e.message:"Unknown error"},{status:500})}}let d=new n.AppRouteRouteModule({definition:{kind:o.RouteKind.APP_ROUTE,page:"/api/news/route",pathname:"/api/news",filename:"route",bundlePath:"app/api/news/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/news/route.ts",nextConfigOutput:"",userland:s}),{workAsyncStorage:g,workUnitAsyncStorage:m,serverHooks:h}=d;function w(){return(0,i.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:m})}},34631:e=>{"use strict";e.exports=require("tls")},41204:e=>{"use strict";e.exports=require("string_decoder")},44870:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:e=>{"use strict";e.exports=require("crypto")},63033:e=>{"use strict";e.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},79428:e=>{"use strict";e.exports=require("buffer")},79551:e=>{"use strict";e.exports=require("url")},83997:e=>{"use strict";e.exports=require("tty")},91645:e=>{"use strict";e.exports=require("net")},94735:e=>{"use strict";e.exports=require("events")},96487:()=>{}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[4243,580,8794,1642,762,6781],()=>r(33848));module.exports=s})(); |