powerdns 0.4.3 → 0.4.4
raw patch · 8 files changed
+91/−60 lines, 8 filesdep ~basedep ~bytestringdep ~containers
Dependency ranges changed: base, bytestring, containers, deepseq, time
Files
- CHANGELOG.md +1/−0
- PowerDNS/API/Cryptokeys.hs +11/−6
- PowerDNS/API/Metadata.hs +11/−6
- PowerDNS/API/Servers.hs +19/−14
- PowerDNS/API/TSIGKeys.hs +12/−7
- PowerDNS/API/Version.hs +3/−2
- PowerDNS/API/Zones.hs +28/−19
- powerdns.cabal +6/−6
CHANGELOG.md view
@@ -54,3 +54,4 @@ * Expose Result constructor * Relax various constraints+* Add Read instances to various data types
PowerDNS/API/Cryptokeys.hs view
@@ -33,21 +33,26 @@ import PowerDNS.Internal.Utils (Empty(..), strip) data CryptokeysAPI f = CryptokeysAPI- { apiListCryptokeys :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys"+ { apiListCryptokeys :: f :- Summary "List cryptokeys"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> Get '[JSON] [Cryptokey] - , apiCreateCryptokey :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys"+ , apiCreateCryptokey :: f :- Summary "Create cryptokey"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> ReqBody '[JSON] Cryptokey :> PostCreated '[JSON] Cryptokey - , apiGetCryptokey :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> Capture "cryptokey_id" T.Text+ , apiGetCryptokey :: f :- Summary "Get cryptokey"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> Capture "cryptokey_id" T.Text :> Get '[JSON] Cryptokey - , apiUpdateCryptokey :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> Capture "cryptokey_id" T.Text+ , apiUpdateCryptokey :: f :- Summary "Update cryptokey"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> Capture "cryptokey_id" T.Text :> ReqBody '[JSON] Cryptokey :> PutNoContent - , apiDeleteCryptokey :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> Capture "cryptokey_id" T.Text+ , apiDeleteCryptokey :: f :- Summary "Delete cryptokey"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys" :> Capture "cryptokey_id" T.Text :> DeleteNoContent } deriving Generic@@ -65,6 +70,6 @@ , ck_privatekey :: Maybe T.Text , ck_algorithm :: Maybe T.Text , ck_bits :: Maybe Integer- } deriving (Eq, Ord, Show, Generic, NFData, Data, Empty)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data, Empty) $(deriveJSON defaultOptions { fieldLabelModifier = strip "ck_"} ''Cryptokey)
PowerDNS/API/Metadata.hs view
@@ -33,27 +33,32 @@ import PowerDNS.Internal.Utils (strip) data MetadataAPI f = MetadataAPI- { apiListMetadata :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata"+ { apiListMetadata :: f :- Summary "List metadata"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> Get '[JSON] [Metadata] - , apiCreateMetadata :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata"+ , apiCreateMetadata :: f :- Summary "Create metadata"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> ReqBody '[JSON] Metadata :> PostNoContent - , apiGetMetadata :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> Capture "kind" T.Text+ , apiGetMetadata :: f :- Summary "Get metadata"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> Capture "kind" T.Text :> Get '[JSON] Metadata - , apiUpdateMetadata :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> Capture "kind" T.Text+ , apiUpdateMetadata :: f :- Summary "Update metadata"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> Capture "kind" T.Text :> ReqBody '[JSON] Metadata :> Put '[JSON] Metadata - , apiDeleteMetadata :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> Capture "kind" T.Text+ , apiDeleteMetadata :: f :- Summary "Delete metadata"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "metadata" :> Capture "kind" T.Text :> DeleteNoContent } deriving Generic data Metadata = Metadata { md_kind :: T.Text , md_metadata :: [T.Text]- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { fieldLabelModifier = strip "md_" } ''Metadata)
PowerDNS/API/Servers.hs view
@@ -60,7 +60,7 @@ , server_url :: Maybe T.Text , server_config_url :: Maybe T.Text , server_zones_url :: Maybe T.Text- } deriving (Eq, Ord, Show, Generic, NFData, Data, Empty)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data, Empty) $(deriveJSON defaultOptions { fieldLabelModifier = strip "server_" } ''Server) @@ -70,7 +70,7 @@ | TyZone | TyRecord | TyComment- deriving (Eq, Ord, Show, Generic, NFData, Data)+ deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { constructorTagModifier = map1 toLower . strip "Ty" , allNullaryToStringTag = True } ''ObjectType)@@ -99,7 +99,7 @@ , sr_zone :: T.Text , sr_type :: T.Text , sr_ttl :: Integer- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { fieldLabelModifier = strip "sr_" } ''SearchResult) @@ -108,7 +108,7 @@ data CacheFlushResult = CacheFlushResult { cfr_count :: Integer , cfr_result :: T.Text- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { fieldLabelModifier = strip "cfr_" } ''CacheFlushResult) @@ -117,7 +117,7 @@ data SimpleStatisticItem = SimpleStatisticItem { ssi_name :: T.Text , ssi_value :: T.Text- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { fieldLabelModifier = strip "ssi_" } ''SimpleStatisticItem) @@ -126,7 +126,7 @@ data AnyStatisticItem = AnyStatisticItem StatisticItem | AnyMapStatisticItem MapStatisticItem | AnyRingStatisticItem RingStatisticItem- deriving (Eq, Ord, Show, Generic, NFData, Data)+ deriving (Eq, Ord, Read, Show, Generic, NFData, Data) instance ToJSON AnyStatisticItem where toJSON (AnyStatisticItem si) = object [ "type" .= String "StatisticItem"@@ -165,40 +165,45 @@ data StatisticItem = StatisticItem { si_name :: T.Text , si_value :: T.Text- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) data MapStatisticItem = MapStatisticItem { msi_name :: T.Text , msi_value :: [SimpleStatisticItem]- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) data RingStatisticItem = RingStatisticItem { rsi_name :: T.Text , rsi_size :: Integer , rsi_value :: [SimpleStatisticItem]- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) ---------------------------------------------------------------------------------------- type QueryParamReq = QueryParam' [Required, Strict] data ServersAPI f = ServersAPI- { apiListServers :: f :- "servers"+ { apiListServers :: f :- Summary "List servers"+ :> "servers" :> Get '[JSON] [Server] - , apiGetServer :: f :- "servers" :> Capture "server_id" T.Text+ , apiGetServer :: f :- Summary "Get server"+ :> "servers" :> Capture "server_id" T.Text :> Get '[JSON] Server - , apiSearch :: f :- "servers" :> Capture "server_id" T.Text :> "search-data"+ , apiSearch :: f :- Summary "Search"+ :> "servers" :> Capture "server_id" T.Text :> "search-data" :> QueryParamReq "q" T.Text :> QueryParamReq "max" Integer :> QueryParam "object_type" ObjectType :> Get '[JSON] [SearchResult] - , apiFlushCache :: f :- "servers" :> Capture "server_id" T.Text+ , apiFlushCache :: f :- Summary "Flush cache"+ :> "servers" :> Capture "server_id" T.Text :> QueryParamReq "domain" T.Text :> Put '[JSON] CacheFlushResult - , apiStatistics :: f :- "servers" :> Capture "server_id" T.Text :> "statistics"+ , apiStatistics :: f :- Summary "Statistics"+ :> "servers" :> Capture "server_id" T.Text :> "statistics" :> QueryParam "statistic" T.Text :> QueryParam "includerings" Bool :> Get '[JSON] [AnyStatisticItem]
PowerDNS/API/TSIGKeys.hs view
@@ -45,21 +45,26 @@ --------------------------------------------------------------------------------------- data TSIGKeysAPI f = TSIGKeysAPI- { apiListTSIGKeys :: f :- "servers" :> Capture "server_id" T.Text :> "tsigkeys"+ { apiListTSIGKeys :: f :- Summary "List TSIG keys"+ :> "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> Get '[JSON] [TSIGKey] - , apiCreateTSIGKey :: f :- "servers" :> Capture "server_id" T.Text :> "tsigkeys"+ , apiCreateTSIGKey :: f :- Summary "Create TSIG key"+ :> "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> ReqBody '[JSON] TSIGKey :> PostCreated '[JSON] TSIGKey - , apiGetTSIGKey :: f :- "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> Capture "tsigkey_id" T.Text+ , apiGetTSIGKey :: f :- Summary "Get TSIG key"+ :> "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> Capture "tsigkey_id" T.Text :> Get '[JSON] TSIGKey - , apiUpdateTSIGKey :: f :- "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> Capture "tsigkey_id" T.Text+ , apiUpdateTSIGKey :: f :- Summary "Update TSIG key"+ :> "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> Capture "tsigkey_id" T.Text :> ReqBody '[JSON] TSIGKey :> Put '[JSON] TSIGKey - , apiDeleteTSIGKey :: f :- "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> Capture "tsigkey_id" T.Text+ , apiDeleteTSIGKey :: f :- Summary "DElete TSIG key"+ :> "servers" :> Capture "server_id" T.Text :> "tsigkeys" :> Capture "tsigkey_id" T.Text :> DeleteNoContent } deriving Generic @@ -71,7 +76,7 @@ , tsk_algorithm :: Maybe TSIGAlgorithm , tsk_key :: Maybe BS.ByteString -- ^ Unlike the original PowerDNS API we do not require the key to be base64 encoded.- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) ---------------------------------------------------------------------------------------- @@ -82,7 +87,7 @@ | HMAC_SHA256 | HMAC_SHA384 | HMAC_SHA512- deriving (Eq, Ord, Show, Generic, NFData, Data)+ deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { allNullaryToStringTag = True , constructorTagModifier = fmap $ \c ->
PowerDNS/API/Version.hs view
@@ -32,13 +32,14 @@ import PowerDNS.Internal.Utils (strip) data VersionsAPI f = VersionsAPI- { apiListVersions :: f :- Get '[JSON] [Version]+ { apiListVersions :: f :- Summary "List versions"+ :> Get '[JSON] [Version] } deriving Generic data Version = Version { version_version :: Int , version_url :: T.Text- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { fieldLabelModifier = strip "version_" } ''Version)
PowerDNS/API/Zones.hs view
@@ -63,7 +63,7 @@ data Record = Record { record_content :: T.Text , record_disabled :: Bool- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { fieldLabelModifier = strip "record_" , omitNothingFields = True } ''Record)@@ -76,7 +76,7 @@ { comment_content :: Maybe T.Text , comment_account :: Maybe T.Text , comment_modified_at :: Maybe POSIXTime- } deriving (Eq, Ord, Show, Generic, NFData, Data, Empty)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data, Empty) $(deriveJSON defaultOptions { fieldLabelModifier = strip "comment_" } ''Comment) @@ -86,13 +86,12 @@ -- If the 'ChangeType' is left at @Nothing@ it will create a new domain entry. data ChangeType = Replace | Delete- deriving (Eq, Ord, Show, Generic, NFData, Data)+ deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { constructorTagModifier = fmap toUpper , allNullaryToStringTag = True } ''ChangeType) - ---------------------------------------------------------------------------------------- data RecordType = A@@ -145,7 +144,7 @@ | RKEY | SIG | WKS- deriving (Eq, Ord, Show, Generic, NFData, Data)+ deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { allNullaryToStringTag = True } ''RecordType)@@ -227,7 +226,7 @@ , rrset_changetype :: Maybe ChangeType , rrset_records :: Maybe [Record] , rrset_comments :: Maybe [Comment]- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { fieldLabelModifier = strip "rrset_" , omitNothingFields = True } ''RRSet)@@ -237,7 +236,7 @@ -- | A list of RRSets data RRSets = RRSets { rrsets :: [RRSet]- } deriving (Eq, Ord, Show, Generic, NFData, Data)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data) instance ToJSON RRSets instance FromJSON RRSets@@ -245,7 +244,7 @@ ---------------------------------------------------------------------------------------- data Kind = Native | Master | Slave- deriving (Eq, Ord, Show, Generic, NFData, Data)+ deriving (Eq, Ord, Read, Show, Generic, NFData, Data) $(deriveJSON defaultOptions { allNullaryToStringTag = True } ''Kind) @@ -279,48 +278,58 @@ , zone_nameservers :: Maybe [T.Text] , zone_master_tsig_key_ids :: Maybe [T.Text] , zone_slave_tsig_key_ids :: Maybe [T.Text]- } deriving (Eq, Ord, Show, Generic, NFData, Data, Empty)+ } deriving (Eq, Ord, Read, Show, Generic, NFData, Data, Empty) $(deriveJSON defaultOptions { fieldLabelModifier = strip "zone_" } ''Zone) ---------------------------------------------------------------------------------------- data ZonesAPI f = ZonesAPI- { apiListZones :: f :- "servers" :> Capture "server_id" T.Text :> "zones"+ { apiListZones :: f :- Summary "List zones"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> QueryParam "zone" T.Text :> QueryParam "dnssec" Bool :> Get '[JSON] [Zone] - , apiCreateZone :: f :- "servers" :> Capture "server_id" T.Text :> "zones"+ , apiCreateZone :: f :- Summary "Create zone"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> QueryParam "rrset" Bool :> ReqBody '[JSON] Zone :> PostCreated '[JSON] Zone - , apiGetZone :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text+ , apiGetZone :: f :- Summary "Get zone"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> QueryParam "rrsets" Bool :> Get '[JSON] Zone - , apiDeleteZone :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text+ , apiDeleteZone :: f :- Summary "Delete zone"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> DeleteNoContent - , apiUpdateRecords :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text+ , apiUpdateRecords :: f :- Summary "Update records"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> ReqBody '[JSON] RRSets :> PatchNoContent - , apiUpdateZone :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text+ , apiUpdateZone :: f :- Summary "Update zone"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> ReqBody '[JSON] Zone :> PutNoContent - , apiTriggerAxfr :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "axfr-retrieve"+ , apiTriggerAxfr :: f :- Summary "Trigger AXFR"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "axfr-retrieve" :> Put '[JSON] Result - , apiNotifySlaves :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "notify"+ , apiNotifySlaves :: f :- Summary "Notify slaves"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "notify" :> Put '[JSON] Result - , apiGetZoneAxfr :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "export"+ , apiGetZoneAxfr :: f :- Summary "Get zone AXFR"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "export" :> Get '[JSON] Result - , apiRectifyZone :: f :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "rectify"+ , apiRectifyZone :: f :- Summary "Rectify zone"+ :> "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "rectify" :> Put '[JSON] Result } deriving Generic
powerdns.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: powerdns-version: 0.4.3+version: 0.4.4 license: BSD-3-Clause license-file: LICENSE copyright: (c) 2021 Victor Nawothnig@@ -37,7 +37,7 @@ common all build-depends:- base ^>= { 4.12, 4.13, 4.14, 4.15, 4.16, 4.17 },+ base ^>= { 4.12, 4.13, 4.14, 4.15, 4.16, 4.17, 4.18, 4.19 }, servant ^>= { 0.18.2, 0.19, 0.20 }, servant-client ^>= { 0.18.2, 0.19, 0.20 }, servant-client-core ^>= { 0.18.2, 0.19, 0.20 }@@ -58,12 +58,12 @@ ghc-options: -Wall -Wcompat build-depends: aeson ^>= { 1.5.6, 2.0.3.0, 2.1.0.0, 2.2.0.0 },- bytestring ^>= { 0.10.10, 0.11.0 },- deepseq ^>= { 1.4.4 },- containers ^>= { 0.6.2 },+ bytestring ^>= { 0.10.10, 0.11.0, 0.12.0.0 },+ deepseq ^>= { 1.4.4, 1.5.0 },+ containers ^>= { 0.6.2, 0.7 }, hashable ^>= { 1.3.0.0, 1.4.0.0 }, text ^>= { 1.2.4, 2.0, 2.1 },- time ^>= { 1.9.3, 1.10, 1.12 },+ time ^>= { 1.9.3, 1.10, 1.12, 1.14 }, base64-bytestring ^>= { 1.1.0, 1.2.1.0 }, case-insensitive ^>= { 1.2.1 }