* add renderSizeBadge helper, use it everywhere - switch from pretty-bytes to byte-size - add renderSizeBadge() helper function - match upstream conventions for metric/IEC units - add new test helpers and use them in service tests * unrelated: fix npm unpacked size query param schema not strictly related to this PR but I noticed it was broken * chromewebstore: reformat size string, test against isIecFileSize
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
import Joi from 'joi'
|
|
import { pathParams } from '../index.js'
|
|
import { renderSizeBadge } from '../size.js'
|
|
import { nonNegativeInteger } from '../validators.js'
|
|
import {
|
|
BaseVisualStudioAppCenterService,
|
|
description,
|
|
} from './visual-studio-app-center-base.js'
|
|
|
|
const schema = Joi.object({
|
|
size: nonNegativeInteger,
|
|
}).required()
|
|
|
|
export default class VisualStudioAppCenterReleasesSize extends BaseVisualStudioAppCenterService {
|
|
static category = 'size'
|
|
|
|
static route = {
|
|
base: 'visual-studio-app-center/releases/size',
|
|
pattern: ':owner/:app/:token',
|
|
}
|
|
|
|
static openApi = {
|
|
'/visual-studio-app-center/releases/size/{owner}/{app}/{token}': {
|
|
get: {
|
|
summary: 'Visual Studio App Center Size',
|
|
description,
|
|
parameters: pathParams(
|
|
{
|
|
name: 'owner',
|
|
example: 'jct',
|
|
},
|
|
{
|
|
name: 'app',
|
|
example: 'my-amazing-app',
|
|
},
|
|
{
|
|
name: 'token',
|
|
example: 'ac70cv...',
|
|
},
|
|
),
|
|
},
|
|
},
|
|
}
|
|
|
|
static defaultBadgeData = {
|
|
label: 'size',
|
|
color: 'blue',
|
|
}
|
|
|
|
async handle({ owner, app, token }) {
|
|
const { size } = await this.fetch({ owner, app, token, schema })
|
|
return renderSizeBadge(size, 'metric')
|
|
}
|
|
}
|