Skip to content

Commit 1d1f7e5

Browse files
committed
Exporting the per-package RSS/atom feed with the rest of exported APIs.
1 parent 7d4b8ab commit 1d1f7e5

File tree

15 files changed

+90
-16
lines changed

15 files changed

+90
-16
lines changed

app/lib/admin/actions/moderate_package.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ Note: the action may take a longer time to complete as the public archive bucket
7979
return pkg;
8080
});
8181

82+
// make sure visibility cache is updated immediately
83+
await purgePackageCache(package);
84+
8285
// sync exported API(s)
8386
await apiExporter?.synchronizePackage(package, forceDelete: true);
8487

app/lib/admin/actions/moderate_package_versions.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ Set the moderated flag on a package version (updating the flag and the timestamp
112112
return v;
113113
});
114114

115+
// make sure visibility cache is updated immediately
116+
await purgePackageCache(package);
117+
115118
// sync exported API(s)
116119
await apiExporter?.synchronizePackage(package, forceDelete: true);
117120

app/lib/frontend/handlers/atom_feed.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Future<shelf.Response> allPackagesAtomFeedhandler(shelf.Request request) async {
3232
);
3333
}
3434

35-
/// Handles requests for `/packages/<package>/feed.atom`
35+
/// Handles requests for `/api/packages/<package>/feed.atom`
3636
Future<shelf.Response> packageAtomFeedhandler(
3737
shelf.Request request,
3838
String package,

app/lib/frontend/handlers/pubapi.client.dart

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/frontend/handlers/pubapi.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:_pub_shared/data/package_api.dart';
99
import 'package:_pub_shared/data/publisher_api.dart';
1010
import 'package:_pub_shared/data/task_api.dart';
1111
import 'package:api_builder/api_builder.dart';
12+
import 'package:pub_dev/frontend/handlers/atom_feed.dart';
1213
import 'package:shelf/shelf.dart';
1314
import 'package:shelf_router/shelf_router.dart';
1415

@@ -215,6 +216,11 @@ class PubApi {
215216
) async =>
216217
await packageBackend.inviteUploader(package, invite);
217218

219+
/// Renders the Atom XML feed for the package.
220+
@EndPoint.get('/api/packages/<package>/feed.atom')
221+
Future<Response> packageAtomFeed(Request request, String package) =>
222+
packageAtomFeedhandler(request, package);
223+
218224
// ****
219225
// **** Publisher API
220226
// ****

app/lib/frontend/handlers/pubapi.g.dart

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/frontend/handlers/routes.dart

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,6 @@ class PubSiteService {
176176
Future<Response> packageVersions(Request request, String package) =>
177177
packageVersionsListHandler(request, package);
178178

179-
/// Renders the Atom XML feed for the package.
180-
@Route.get('/packages/<package>/feed.atom')
181-
Future<Response> packageAtomFeed(Request request, String package) =>
182-
packageAtomFeedhandler(request, package);
183-
184179
@Route.get('/packages/<package>')
185180
Future<Response> package(Request request, String package) =>
186181
packageVersionHandlerHtml(request, package);

app/lib/frontend/handlers/routes.g.dart

Lines changed: 0 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/package/api_export/api_exporter.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,10 @@ final class ApiExporter {
244244
versionListing,
245245
forceWrite: forceWrite,
246246
);
247+
await _api.package(package).feedAtomFile.write(
248+
await buildPackageAtomFeedContent(package),
249+
forceWrite: forceWrite,
250+
);
247251
}
248252

249253
/// Scan for updates from packages until [abort] is resolved, or [claim]

app/lib/package/api_export/exported_api.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,13 @@ final class ExportedPackage {
273273
ExportedJsonFile<ListAdvisoriesResponse> get advisories =>
274274
_suffix<ListAdvisoriesResponse>('/advisories');
275275

276+
/// Interface for writing `/api/packages/<package>/feed.atom`
277+
ExportedAtomFeedFile get feedAtomFile => ExportedAtomFeedFile._(
278+
_owner,
279+
'/api/packages/$_package/feed.atom',
280+
Duration(hours: 12),
281+
);
282+
276283
/// Interace for writing `/api/archives/<package>-<version>.tar.gz`.
277284
ExportedBlob tarball(String version) => ExportedBlob._(
278285
_owner,
@@ -399,6 +406,7 @@ final class ExportedPackage {
399406
await Future.wait([
400407
_owner._pool.withResource(() async => await versions.delete()),
401408
_owner._pool.withResource(() async => await advisories.delete()),
409+
_owner._pool.withResource(() async => await feedAtomFile.delete()),
402410
..._owner._prefixes.map((prefix) async {
403411
await _owner._listBucket(
404412
prefix: prefix + '/api/archives/$_package-',

0 commit comments

Comments
 (0)