yesod-ip 0.4 → 0.4.1
raw patch · 2 files changed
+48/−1 lines, 2 filesdep +http-api-data
Dependencies added: http-api-data
Files
- src/Web/HttpApiData/Net.hs +45/−0
- yesod-ip.cabal +3/−1
+ src/Web/HttpApiData/Net.hs view
@@ -0,0 +1,45 @@+-- | This module provides orphan instances for 'ToHttpApiData'+-- and 'FromHttpApiData' for data types from the @ip@ package.++module Web.HttpApiData.Net () where++import Web.HttpApiData (ToHttpApiData(..),FromHttpApiData(..))+import Data.Text (Text)+import Data.Monoid+import Net.IPv4 (IPv4)+import Net.Mac (Mac)+import qualified Data.Text as Text+import qualified Net.IPv4.Text as IPv4Text+import qualified Net.IPv4.ByteString.Char8 as IPv4ByteString+import qualified Net.Mac.Text as MacText+import qualified Net.Mac.ByteString.Char8 as MacByteString++instance ToHttpApiData Mac where+ toUrlPiece = MacText.encode+ toHeader = MacByteString.encode+ toQueryParam = MacText.encode++instance FromHttpApiData Mac where+ parseUrlPiece = describeError mac . MacText.decode+ parseQueryParam = describeError mac . MacText.decode+ parseHeader = describeError mac . MacByteString.decode++instance ToHttpApiData IPv4 where+ toUrlPiece = IPv4Text.encode+ toHeader = IPv4ByteString.encode+ toQueryParam = IPv4Text.encode++instance FromHttpApiData IPv4 where+ parseUrlPiece = describeError ipv4 . IPv4Text.decode+ parseQueryParam = describeError ipv4 . IPv4Text.decode+ parseHeader = describeError ipv4 . IPv4ByteString.decode++mac,ipv4 :: Text+mac = Text.pack "MAC Address"+ipv4 = Text.pack "IPv4 Address"++describeError :: Text -> Maybe a -> Either Text a+describeError name x = case x of+ Nothing -> Left (Text.pack "could not parse " <> name)+ Just a -> Right a+
yesod-ip.cabal view
@@ -1,5 +1,5 @@ name: yesod-ip-version: 0.4+version: 0.4.1 synopsis: Code for using the ip package with yesod description: Please see README.md homepage: https://github.com/andrewthad/yesod-ip#readme@@ -20,6 +20,7 @@ Database.Persist.Net.Simple Database.Persist.Net.PostgreSQL Web.PathPieces.Net+ Web.HttpApiData.Net build-depends: base >= 4.7 && < 5 , text@@ -27,6 +28,7 @@ , yesod-form , persistent , path-pieces+ , http-api-data , ip >= 0.6.0 && < 0.7.0 default-language: Haskell2010