Popularity
3.7
Declining
Activity
0.0
Stable
2
4
1

Monthly Downloads: 12
Programming language: Haskell
License: MIT License
Tags: Web     Scotty    

scotty-path-normalizer alternatives and similar packages

Based on the "scotty" category.
Alternatively, view scotty-path-normalizer alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of scotty-path-normalizer or a related project?

Add another 'scotty' Package

README

Scotty path normalizer

This library provides a Scotty action that normalizes the HTTP request target as if it were a Unix file path. When the path normalization action detects a path that can be simplified in one of the following ways, it issues a redirect to a more canonical path.

  1. Remove trailing slashes: https://typeclasses.com/contravariance/ becomes https://typeclasses.com/contravariance
  2. Remove double slashes: https://typeclasses.com//web-servers////lesson-4 becomes https://typeclasses.com/web-servers/lesson-4
  3. Remove . segments, because . represents "the current directory": https://typeclasses.com/ghc/./scoped-type-variables becomes https://typeclasses.com/ghc/scoped-type-variables
  4. Remove segments of the form xyz/.., because .. represents "the parent directory": https://typeclasses.com/python/../javascript/monoidal-folds becomes https://typeclasses.com/javascript/monoidal-folds

The typical way to apply this to your Scotty server is to put addPathNormalizer at the top of your ScottyM app definition.

import qualified Web.Scotty as Scotty
import Web.Scotty.PathNormalizer (addPathNormalizer)

main :: IO ()
main =
    Scotty.scotty 3000 $
      do
        addPathNormalizer

        Scotty.get (Scotty.capture "/:word") $
          do
            beam <- Scotty.param (Data.Text.Lazy.pack "word")
            Scotty.html $ fold
                [ Data.Text.Lazy.pack "<h1>Scotty, "
                , beam
                , Data.Text.Lazy.pack " me up!</h1>"
                ]