1 {-# LANGUAGE OverloadedStrings #-}
3 module NmcJson ( NmcRes(..)
7 import Data.ByteString.Lazy (ByteString)
9 import Control.Applicative ((<$>), (<*>), empty)
12 data NmcRRService = NmcRRService -- unused
21 instance FromJSON NmcRRService where
22 parseJSON (Object o) = NmcRRService
31 data NmcRRI2p = NmcRRI2p -- unused
32 { i2pDestination :: String
37 instance FromJSON NmcRRI2p where
38 parseJSON (Object o) = NmcRRI2p
39 <$> o .: "destination"
44 data NmcDom = NmcDom { domService :: Maybe [[String]] -- [NmcRRService]
45 , domIp :: Maybe [String]
46 , domIp6 :: Maybe [String]
47 , domTor :: Maybe String
48 , domI2p :: Maybe NmcRRI2p
49 , domFreenet :: Maybe String
50 , domAlias :: Maybe String
51 , domTranslate :: Maybe String
52 , domEmail :: Maybe String
53 , domLoc :: Maybe String
54 , domInfo :: Maybe Value
55 , domNs :: Maybe [String]
56 , domDelegate :: Maybe [String]
57 , domImport :: Maybe [[String]]
58 , domMap :: Maybe (Map String NmcDom)
59 , domFingerprint :: Maybe [String]
60 , domTls :: Maybe (Map String
61 (Map String [[String]]))
62 , domDs :: Maybe [[String]]
65 instance FromJSON NmcDom where
66 parseJSON (Object o) = NmcDom
82 <*> o .:? "fingerprint"
87 data NmcRes = NmcRes { resName :: String
88 , resValue :: ByteString -- NmcDom
90 , resAddress :: String
91 , resExpires_in :: Int
93 instance FromJSON NmcRes where
94 parseJSON (Object o) = NmcRes