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
103 let l = "{\"name\":\"d/dot-bit\",\"value\":\"{\\\"info\\\":{\\\"description\\\":\\\"Dot-BIT Project - Official Website\\\",\\\"registrar\\\":\\\"http://register.dot-bit.org\\\"},\\\"fingerprint\\\":[\\\"30:B0:60:94:32:08:EC:F5:BE:DF:F4:BB:EE:52:90:2C:5D:47:62:46\\\"],\\\"ns\\\":[\\\"ns0.web-sweet-web.net\\\",\\\"ns1.web-sweet-web.net\\\"],\\\"map\\\":{\\\"\\\":{\\\"ns\\\":[\\\"ns0.web-sweet-web.net\\\",\\\"ns1.web-sweet-web.net\\\"]}},\\\"email\\\":\\\"register@dot-bit.org\\\"}\",\"txid\":\"7412603f2e6c3459be56accc6e1f3646b603f3d4a4188119a4072f125c1340d5\",\"address\":\"Mw3KCQcqC44nm75w7r79ZifZbEqT8RetWn\",\"expires_in\":18915}"
104 let r = decode l :: Maybe NmcRes
107 let value = (resValue resp)
108 let dom = decode value :: Maybe NmcDom
111 print "Unparseable NMC response"