packages feed

neuron-1.0.0.0: src/lib/Text/URI/Util.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Text.URI.Util where

import Relude
import qualified Text.URI as URI

getQueryParam :: URI.RText 'URI.QueryKey -> URI.URI -> Maybe Text
getQueryParam k uri =
  listToMaybe $
    catMaybes $
      flip fmap (URI.uriQuery uri) $ \case
        URI.QueryFlag _ -> Nothing
        URI.QueryParam key (URI.unRText -> val) ->
          if key == k
            then Just val
            else Nothing

hasQueryFlag :: URI.RText 'URI.QueryKey -> URI.URI -> Bool
hasQueryFlag k uri =
  fromMaybe False $
    listToMaybe $
      catMaybes $
        flip fmap (URI.uriQuery uri) $ \case
          URI.QueryFlag key ->
            if key == k
              then Just True
              else Nothing
          _ -> Nothing