Add FromHttpApiData instance #2
4 changed files with 17 additions and 1 deletions
|
@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.12.2.0]
|
||||
|
||||
### Added
|
||||
|
||||
- `FromHttpApiData` instance for Servant integration
|
||||
|
||||
## [0.12.0]
|
||||
|
||||
### Added
|
||||
|
|
|
@ -39,6 +39,7 @@ library
|
|||
, bytestring
|
||||
, foreign-rust
|
||||
, generics-sop
|
||||
, servant
|
||||
, text
|
||||
default-language: Haskell2010
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name: hexstring
|
||||
version: 0.12.1.0
|
||||
version: 0.12.2.0
|
||||
git: "https://git.vergara.tech/Vergara_Tech/haskell-hexstring"
|
||||
license: MIT
|
||||
author:
|
||||
|
@ -30,6 +30,7 @@ library:
|
|||
- generics-sop
|
||||
- borsh >= 0.2
|
||||
- foreign-rust
|
||||
- servant
|
||||
|
||||
tests:
|
||||
hextring-test:
|
||||
|
|
|
@ -35,6 +35,8 @@ import qualified GHC.Generics as GHC
|
|||
import qualified Generics.SOP as SOP
|
||||
import Text.Read
|
||||
|
||||
import Servant.API (FromHttpApiData(..))
|
||||
|
||||
-- | Represents a Hex string. Guarantees that all characters it contains
|
||||
-- are valid hex characters.
|
||||
newtype HexString = HexString
|
||||
|
@ -56,6 +58,12 @@ instance FromJSON HexString where
|
|||
instance ToJSON HexString where
|
||||
toJSON = Data.Aeson.String . toText
|
||||
|
||||
instance FromHttpApiData HexString where
|
||||
parseUrlPiece s =
|
||||
case BS16.decode (TE.encodeUtf8 s) of
|
||||
Right s -> Right $ HexString s
|
||||
Left e -> Left $ T.pack e
|
||||
|
||||
-- | Smart constructor which validates that all the text are actually
|
||||
-- hexadecimal characters.
|
||||
hexString :: BS.ByteString -> HexString
|
||||
|
|
Loading…
Reference in a new issue