Created
November 8, 2015 21:55
-
-
Save JavascriptMick/02c4993d11a8776f6842 to your computer and use it in GitHub Desktop.
Horrible Kluge to make ghost support my legacy Blogger URL's
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var frontend = require('../controllers/frontend'), | |
config = require('../config'), | |
express = require('express'), | |
utils = require('../utils'), | |
frontendRoutes; | |
frontendRoutes = function frontendRoutes(middleware) { | |
var router = express.Router(), | |
subdir = config.paths.subdir, | |
routeKeywords = config.routeKeywords, | |
indexRouter = express.Router(), | |
tagRouter = express.Router({mergeParams: true}), | |
authorRouter = express.Router({mergeParams: true}), | |
rssRouter = express.Router({mergeParams: true}), | |
privateRouter = express.Router(), | |
bloggerRouter = express.Router(); | |
//### Hard code legacy Blogger routes | |
bloggerRouter.get("/adventures-with-unity3d-web-player-and.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/adventures_with_unity_3_d_web_player_and_socket_io/');}); | |
bloggerRouter.get("/debugging-is-evil-do-it-less.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/debugging_is_evil_do_it_less/');}); | |
bloggerRouter.get("/integration-testing-restful-endpoint.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/integration_testing_a_restful_endpoint_with_request_and_jasmine_and_node_js/');}); | |
bloggerRouter.get("/the-key-problem-that-angularjs-solves.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/the_key_problem_that_angular_js_solves_and_react_does_not/');}); | |
bloggerRouter.get("/how-to-not-learn-coffee-script-in-90.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/how_to_not_learn_coffee_script_in_90_minutes/');}); | |
bloggerRouter.get("/app-idea-support-your-personal-learning.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/app_idea_support_your_personal_learning_with_revision_reminders/');}); | |
bloggerRouter.get("/2-things-i-learned-by-reading-angularjs.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/2_things_i_learned_by_reading_the_angular_js_source_code/');}); | |
bloggerRouter.get("/3-great-reasons-to-use-bdd.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/3_great_reasons_to_use_bdd/');}); | |
bloggerRouter.get("/angularjs-scope-vs-controller.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/angular_js_scope_vs_controller_inheritance/');}); | |
bloggerRouter.get("/continuous-integration-vs-code.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/continuous_integration_vs_code_modularisation/');}); | |
bloggerRouter.get("/ruleclarity-brochure-site-now-up.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/rule_clarity_brochure_site_now_up/');}); | |
bloggerRouter.get("/tech-preview-semantic-rules.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/tech_preview_semantic_rules/');}); | |
bloggerRouter.get("/gui-dazzles-backend-frazzles.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/gui_dazzles_backend_frazzles/');}); | |
bloggerRouter.get("/building-blocks.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/building_blocks/');}); | |
bloggerRouter.get("/you-are-living-in-box.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/you_are_living_in_a_box/');}); | |
bloggerRouter.get("/generic-solutions-at-your-peril.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/generic_solutions_at_your_peril/');}); | |
bloggerRouter.get("/software-is-like-cake.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/software_is_like_cake/');}); | |
bloggerRouter.get("/who-signs-off-detail-design-having-fun.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/who_signs_off_the_detail_design_having_fun_with_the_waterfall_process/');}); | |
bloggerRouter.get("/coming-up-for-air.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/coming_up_for_air/');}); | |
bloggerRouter.get("/naming-states.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/naming_states/');}); | |
bloggerRouter.get("/software-vs-religion.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/software_vs_religion/');}); | |
bloggerRouter.get("/auto-update-equals-auto-exasperation.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/auto_update_equals_auto_exasperation/');}); | |
bloggerRouter.get("/workflow-doesnt-work.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/workflow_doesn_t_work/');}); | |
bloggerRouter.get("/hey-whats-with-funny-name.html/", function redirectToPost(req, res){res.redirect(301, subdir + '/hey_what_s_with_the_funny_name/');}); | |
// ### Admin routes | |
router.get(/^\/(logout|signout)\/$/, function redirectToSignout(req, res) { | |
/*jslint unparam:true*/ | |
res.set({'Cache-Control': 'public, max-age=' + utils.ONE_YEAR_S}); | |
res.redirect(301, subdir + '/ghost/signout/'); | |
}); | |
router.get(/^\/signup\/$/, function redirectToSignup(req, res) { | |
/*jslint unparam:true*/ | |
res.set({'Cache-Control': 'public, max-age=' + utils.ONE_YEAR_S}); | |
res.redirect(301, subdir + '/ghost/signup/'); | |
}); | |
// redirect to /ghost and let that do the authentication to prevent redirects to /ghost//admin etc. | |
router.get(/^\/((ghost-admin|admin|wp-admin|dashboard|signin|login)\/?)$/, function redirectToAdmin(req, res) { | |
/*jslint unparam:true*/ | |
res.redirect(subdir + '/ghost/'); | |
}); | |
// password-protected frontend route | |
privateRouter.route('/') | |
.get( | |
middleware.privateBlogging.isPrivateSessionAuth, | |
frontend.private | |
) | |
.post( | |
middleware.privateBlogging.isPrivateSessionAuth, | |
middleware.spamPrevention.protected, | |
middleware.privateBlogging.authenticateProtection, | |
frontend.private | |
); | |
rssRouter.route('/rss/').get(frontend.rss); | |
rssRouter.route('/rss/:page/').get(frontend.rss); | |
rssRouter.route('/feed/').get(function redirect(req, res) { | |
/*jshint unused:true*/ | |
res.set({'Cache-Control': 'public, max-age=' + utils.ONE_YEAR_S}); | |
res.redirect(301, subdir + '/rss/'); | |
}); | |
// Index | |
indexRouter.route('/').get(frontend.homepage); | |
indexRouter.route('/' + routeKeywords.page + '/:page/').get(frontend.homepage); | |
indexRouter.use(rssRouter); | |
// Tags | |
tagRouter.route('/').get(frontend.tag); | |
tagRouter.route('/' + routeKeywords.page + '/:page/').get(frontend.tag); | |
tagRouter.use(rssRouter); | |
// Authors | |
authorRouter.route('/').get(frontend.author); | |
authorRouter.route('/edit?').get(function redirect(req, res) { | |
res.redirect(subdir + '/ghost/team/' + req.params.slug + '/'); | |
}); | |
authorRouter.route('/' + routeKeywords.page + '/:page/').get(frontend.author); | |
authorRouter.use(rssRouter); | |
// Mount the Routers | |
router.use(/^\/\d{4}\/\d{2}/, bloggerRouter); //Match only Blogger style /YYYY/DD paths e.g /2015/08/a-blogger-post.html | |
router.use('/' + routeKeywords.private + '/', privateRouter); | |
router.use('/' + routeKeywords.author + '/:slug/', authorRouter); | |
router.use('/' + routeKeywords.tag + '/:slug/', tagRouter); | |
router.use('/', indexRouter); | |
// Post Live Preview | |
router.get('/' + routeKeywords.preview + '/:uuid', frontend.preview); | |
// Default | |
router.get('*', frontend.single); | |
return router; | |
}; | |
module.exports = frontendRoutes; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment