From 407fe39e6ef2bd96b01171bae94772e79188199f Mon Sep 17 00:00:00 2001
From: Sigurd Meldgaard <sigurdm@google.com>
Date: Tue, 12 Dec 2023 20:17:17 +0100
Subject: [PATCH] [pub] Use official version endpoint for pub-service (#9802)

* Use official version endpoint for pub-service

* run prettier

* Update schema

* make services a required property

---------

Co-authored-by: chris48s <git@chris-shaw.dev>
---
 services/pub/pub.service.js | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/services/pub/pub.service.js b/services/pub/pub.service.js
index 67bbc90c31..15c5d3aa08 100644
--- a/services/pub/pub.service.js
+++ b/services/pub/pub.service.js
@@ -4,7 +4,9 @@ import { BaseJsonService, redirector, pathParam, queryParam } from '../index.js'
 import { baseDescription } from './pub-common.js'
 
 const schema = Joi.object({
-  versions: Joi.array().items(Joi.string()).required(),
+  versions: Joi.array()
+    .items(Joi.object({ version: Joi.string().required() }))
+    .required(),
 }).required()
 
 const queryParamSchema = Joi.object({
@@ -45,14 +47,14 @@ class PubVersion extends BaseJsonService {
   async fetch({ packageName }) {
     return this._requestJson({
       schema,
-      url: `https://pub.dartlang.org/packages/${packageName}.json`,
+      url: `https://pub.dev/api/packages/${packageName}`,
     })
   }
 
   async handle({ packageName }, queryParams) {
     const data = await this.fetch({ packageName })
     const includePre = queryParams.include_prereleases !== undefined
-    const versions = data.versions
+    const versions = data.versions.map(x => x.version)
     const version = latest(versions, { pre: includePre })
     return renderVersionBadge({ version })
   }
-- 
GitLab