1+ import config from 'config' ;
12import express from 'express' ;
23import { js2xml } from 'xml-js' ;
34
@@ -12,6 +13,14 @@ const TAG_AUTHORITY = 'opentermsarchive.org,2026';
1213const FEED_AUTHOR_NAME = 'OTA-Bot' ;
1314const DEFAULT_LIMIT = 100 ;
1415
16+ function getFeedLimit ( ) {
17+ if ( config . has ( '@opentermsarchive/engine.collection-api.feed.limit' ) ) {
18+ return config . get ( '@opentermsarchive/engine.collection-api.feed.limit' ) ;
19+ }
20+
21+ return DEFAULT_LIMIT ;
22+ }
23+
1524const RECORD_TYPES = {
1625 firstRecord : 'First record' ,
1726 technicalUpgrade : 'Technical upgrade' ,
@@ -129,7 +138,7 @@ export default function feedRouter(services) {
129138 * - application/atom+xml
130139 * responses:
131140 * 200:
132- * description: An Atom 1.0 feed listing the latest version records, newest first.
141+ * description: An Atom 1.0 feed listing the latest version records, newest first. The maximum number of entries is server-configured.
133142 * content:
134143 * application/atom+xml:
135144 * schema:
@@ -141,7 +150,7 @@ export default function feedRouter(services) {
141150 const selfHref = `${ baseUrl } /feed` ;
142151 const feedId = `tag:${ TAG_AUTHORITY } :feed:${ collection . metadata ?. id } ` ;
143152
144- const versions = await versionsRepository . findRecent ( DEFAULT_LIMIT ) ;
153+ const versions = await versionsRepository . findRecent ( getFeedLimit ( ) ) ;
145154 const document = buildFeedDocument ( { collection, selfHref, feedId, versions, baseUrl } ) ;
146155
147156 sendAtom ( res , render ( document ) ) ;
@@ -184,7 +193,7 @@ export default function feedRouter(services) {
184193 const selfHref = `${ baseUrl } /feed/${ encodeURIComponent ( service . id ) } ` ;
185194 const feedId = `tag:${ TAG_AUTHORITY } :feed:${ collection . metadata ?. id } :${ service . id } ` ;
186195
187- const versions = await versionsRepository . findRecent ( DEFAULT_LIMIT , { serviceId : service . id } ) ;
196+ const versions = await versionsRepository . findRecent ( getFeedLimit ( ) , { serviceId : service . id } ) ;
188197 const document = buildFeedDocument ( { collection, selfHref, feedId, versions, baseUrl } ) ;
189198
190199 return sendAtom ( res , render ( document ) ) ;
@@ -239,7 +248,7 @@ export default function feedRouter(services) {
239248 const selfHref = `${ baseUrl } /feed/${ encodeURIComponent ( service . id ) } /${ encodeURIComponent ( termsType ) } ` ;
240249 const feedId = `tag:${ TAG_AUTHORITY } :feed:${ collection . metadata ?. id } :${ service . id } :${ termsType } ` ;
241250
242- const versions = await versionsRepository . findRecent ( DEFAULT_LIMIT , { serviceId : service . id , termsType } ) ;
251+ const versions = await versionsRepository . findRecent ( getFeedLimit ( ) , { serviceId : service . id , termsType } ) ;
243252 const document = buildFeedDocument ( { collection, selfHref, feedId, versions, baseUrl } ) ;
244253
245254 return sendAtom ( res , render ( document ) ) ;
0 commit comments