1 {-# LANGUAGE OverloadedStrings #-}
3 module NmcJson ( NmcRes(..)
8 import Data.ByteString.Lazy (ByteString)
10 import Control.Applicative ((<$>), (<*>), empty)
13 data NmcRRService = NmcRRService -- unused
22 instance FromJSON NmcRRService where
23 parseJSON (Object o) = NmcRRService
32 data NmcRRI2p = NmcRRI2p
33 { i2pDestination :: String
38 instance FromJSON NmcRRI2p where
39 parseJSON (Object o) = NmcRRI2p
40 <$> o .: "destination"
45 data NmcDom = NmcDom { domService :: Maybe [[String]] -- [NmcRRService]
46 , domIp :: Maybe [String]
47 , domIp6 :: Maybe [String]
48 , domTor :: Maybe String
49 , domI2p :: Maybe NmcRRI2p
50 , domFreenet :: Maybe String
51 , domAlias :: Maybe String
52 , domTranslate :: Maybe String
53 , domEmail :: Maybe String
54 , domLoc :: Maybe String
55 , domInfo :: Maybe Value
56 , domNs :: Maybe [String]
57 , domDelegate :: Maybe [String]
58 , domImport :: Maybe [[String]]
59 , domMap :: Maybe (Map String NmcDom)
60 , domFingerprint :: Maybe [String]
61 , domTls :: Maybe (Map String
62 (Map String [[String]]))
63 , domDs :: Maybe [[String]]
66 instance FromJSON NmcDom where
67 parseJSON (Object o) = NmcDom
83 <*> o .:? "fingerprint"
88 emptyNmcDom = NmcDom Nothing Nothing Nothing Nothing Nothing Nothing
89 Nothing Nothing Nothing Nothing Nothing Nothing
90 Nothing Nothing Nothing Nothing Nothing Nothing
92 data NmcRes = NmcRes { resName :: String
93 , resValue :: ByteString -- string with NmcDom
95 , resAddress :: String
96 , resExpires_in :: Int
98 instance FromJSON NmcRes where
99 parseJSON (Object o) = NmcRes
104 <*> o .: "expires_in"