Skip to content

Instantly share code, notes, and snippets.

@JavascriptMick
Created November 8, 2015 21:55
Show Gist options
  • Save JavascriptMick/02c4993d11a8776f6842 to your computer and use it in GitHub Desktop.
Save JavascriptMick/02c4993d11a8776f6842 to your computer and use it in GitHub Desktop.
Horrible Kluge to make ghost support my legacy Blogger URL's
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