-- Copyright 2020 Fernando Rincon Martin -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. ------------------------------------------------------------------------------- {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} module Network.Wai.Routing.Purescheme.Core.Method ( method ) where import Network.Wai.Routing.Purescheme.Core.Basic import Network.Wai.Routing.Purescheme.Core.Internal import qualified Data.Text.Encoding as T import Network.HTTP.Types (StdMethod, renderStdMethod, methodNotAllowed405, statusMessage) import Network.Wai (requestMethod) -- | Match with standard http method method :: StdMethod -> GenericApplication e -> GenericApplication e method m f req = if requestMethod req == renderStdMethod m then f req else reject methodNotAllowedRejection methodNotAllowedRejection :: Rejection methodNotAllowedRejection = Rejection { status = methodNotAllowed405 , message = T.decodeUtf8 $ statusMessage methodNotAllowed405 , priority = 100 , headers = [] }