Skip to content

Commit

Permalink
move is-archived-version into a function instead of middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
sarahs committed Nov 18, 2020
1 parent dbcb3a5 commit 67f4907
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 13 deletions.
16 changes: 8 additions & 8 deletions middleware/is-archived-version.js → lib/is-archived-version.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
const patterns = require('../lib/patterns')
const { deprecated } = require('../lib/enterprise-server-releases')

module.exports = async (req, res, next) => {
module.exports = function isArchivedVersion (req) {
// if this is an assets path, use the referrer
// if this is a docs path, use the req.path
const pathToCheck = patterns.assetPaths.test(req.path)
? req.get('referrer')
: req.path

// ignore paths that don't have an enterprise version number
if (!(patterns.getEnterpriseVersionNumber.test(pathToCheck) || patterns.getEnterpriseServerNumber.test(pathToCheck))) return next()
if (!(patterns.getEnterpriseVersionNumber.test(pathToCheck) || patterns.getEnterpriseServerNumber.test(pathToCheck))) {
return {}
}

// extract enterprise version from path, e.g. 2.16
const requestedVersion = pathToCheck.includes('enterprise-server@')
? pathToCheck.match(patterns.getEnterpriseServerNumber)[1]
: pathToCheck.match(patterns.getEnterpriseVersionNumber)[1]

// bail if the request version is not deprecated
if (!deprecated.includes(requestedVersion)) return next()
if (!deprecated.includes(requestedVersion)) {
return {}
}

// attach convenience props
req.isArchivedVersion = true
req.requestedVersion = requestedVersion

return next()
return { isArchived: true, requestedVersion }
}
5 changes: 3 additions & 2 deletions middleware/archived-enterprise-versions-assets.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const path = require('path')
const patterns = require('../lib/patterns')
const isArchivedVersion = require('../lib/is-archived-version')
const got = require('got')

// This module handles requests for the CSS and JS assets for
Expand All @@ -9,8 +10,8 @@ const got = require('got')
// See also ./archived-enterprise-versions.js for non-CSS/JS paths

module.exports = async (req, res, next) => {
if (!req.isArchivedVersion) return next()
const requestedVersion = req.requestedVersion
const { isArchived, requestedVersion } = isArchivedVersion(req)
if (!isArchived) return next()

// Only match asset paths
if (!patterns.assetPaths.test(req.path)) return next()
Expand Down
5 changes: 3 additions & 2 deletions middleware/archived-enterprise-versions.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const slash = require('slash')
const { latest, firstVersionDeprecatedOnNewSite, lastVersionWithoutStubbedRedirectFiles } = require('../lib/enterprise-server-releases')
const patterns = require('../lib/patterns')
const versionSatisfiesRange = require('../lib/version-satisfies-range')
const isArchivedVersion = require('../lib/is-archived-version')
const got = require('got')
const findPage = require('../lib/find-page')

Expand All @@ -11,8 +12,8 @@ const findPage = require('../lib/find-page')
// https://github.com/github/help-docs-archived-enterprise-versions

module.exports = async (req, res, next) => {
if (!req.isArchivedVersion) return next()
const requestedVersion = req.requestedVersion
const { isArchived, requestedVersion } = isArchivedVersion(req)
if (!isArchived) return next()

// Skip asset paths
if (patterns.assetPaths.test(req.path)) return next()
Expand Down
1 change: 0 additions & 1 deletion middleware/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ module.exports = function (app) {

// *** Rendering, 2xx responses ***
// I largely ordered these by use frequency
app.use(require('./is-archived-version')) // Must come before archived-enterprise-versions* middleware
app.use(require('./archived-enterprise-versions-assets')) // Must come before static/assets
app.use('/dist', express.static('dist'))
app.use('/assets', express.static('assets'))
Expand Down

0 comments on commit 67f4907

Please sign in to comment.