cdp-0.0.1.0: src/CDP/Domains/CacheStorage.hs
{-# LANGUAGE OverloadedStrings, RecordWildCards, TupleSections #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
{- |
= CacheStorage
-}
module CDP.Domains.CacheStorage (module CDP.Domains.CacheStorage) where
import Control.Applicative ((<$>))
import Control.Monad
import Control.Monad.Loops
import Control.Monad.Trans (liftIO)
import qualified Data.Map as M
import Data.Maybe
import Data.Functor.Identity
import Data.String
import qualified Data.Text as T
import qualified Data.List as List
import qualified Data.Text.IO as TI
import qualified Data.Vector as V
import Data.Aeson.Types (Parser(..))
import Data.Aeson (FromJSON (..), ToJSON (..), (.:), (.:?), (.=), (.!=), (.:!))
import qualified Data.Aeson as A
import qualified Network.HTTP.Simple as Http
import qualified Network.URI as Uri
import qualified Network.WebSockets as WS
import Control.Concurrent
import qualified Data.ByteString.Lazy as BS
import qualified Data.Map as Map
import Data.Proxy
import System.Random
import GHC.Generics
import Data.Char
import Data.Default
import CDP.Internal.Utils
-- | Type 'CacheStorage.CacheId'.
-- Unique identifier of the Cache object.
type CacheStorageCacheId = T.Text
-- | Type 'CacheStorage.CachedResponseType'.
-- type of HTTP response cached
data CacheStorageCachedResponseType = CacheStorageCachedResponseTypeBasic | CacheStorageCachedResponseTypeCors | CacheStorageCachedResponseTypeDefault | CacheStorageCachedResponseTypeError | CacheStorageCachedResponseTypeOpaqueResponse | CacheStorageCachedResponseTypeOpaqueRedirect
deriving (Ord, Eq, Show, Read)
instance FromJSON CacheStorageCachedResponseType where
parseJSON = A.withText "CacheStorageCachedResponseType" $ \v -> case v of
"basic" -> pure CacheStorageCachedResponseTypeBasic
"cors" -> pure CacheStorageCachedResponseTypeCors
"default" -> pure CacheStorageCachedResponseTypeDefault
"error" -> pure CacheStorageCachedResponseTypeError
"opaqueResponse" -> pure CacheStorageCachedResponseTypeOpaqueResponse
"opaqueRedirect" -> pure CacheStorageCachedResponseTypeOpaqueRedirect
"_" -> fail "failed to parse CacheStorageCachedResponseType"
instance ToJSON CacheStorageCachedResponseType where
toJSON v = A.String $ case v of
CacheStorageCachedResponseTypeBasic -> "basic"
CacheStorageCachedResponseTypeCors -> "cors"
CacheStorageCachedResponseTypeDefault -> "default"
CacheStorageCachedResponseTypeError -> "error"
CacheStorageCachedResponseTypeOpaqueResponse -> "opaqueResponse"
CacheStorageCachedResponseTypeOpaqueRedirect -> "opaqueRedirect"
-- | Type 'CacheStorage.DataEntry'.
-- Data entry.
data CacheStorageDataEntry = CacheStorageDataEntry
{
-- | Request URL.
cacheStorageDataEntryRequestURL :: T.Text,
-- | Request method.
cacheStorageDataEntryRequestMethod :: T.Text,
-- | Request headers
cacheStorageDataEntryRequestHeaders :: [CacheStorageHeader],
-- | Number of seconds since epoch.
cacheStorageDataEntryResponseTime :: Double,
-- | HTTP response status code.
cacheStorageDataEntryResponseStatus :: Int,
-- | HTTP response status text.
cacheStorageDataEntryResponseStatusText :: T.Text,
-- | HTTP response type
cacheStorageDataEntryResponseType :: CacheStorageCachedResponseType,
-- | Response headers
cacheStorageDataEntryResponseHeaders :: [CacheStorageHeader]
}
deriving (Eq, Show)
instance FromJSON CacheStorageDataEntry where
parseJSON = A.withObject "CacheStorageDataEntry" $ \o -> CacheStorageDataEntry
<$> o A..: "requestURL"
<*> o A..: "requestMethod"
<*> o A..: "requestHeaders"
<*> o A..: "responseTime"
<*> o A..: "responseStatus"
<*> o A..: "responseStatusText"
<*> o A..: "responseType"
<*> o A..: "responseHeaders"
instance ToJSON CacheStorageDataEntry where
toJSON p = A.object $ catMaybes [
("requestURL" A..=) <$> Just (cacheStorageDataEntryRequestURL p),
("requestMethod" A..=) <$> Just (cacheStorageDataEntryRequestMethod p),
("requestHeaders" A..=) <$> Just (cacheStorageDataEntryRequestHeaders p),
("responseTime" A..=) <$> Just (cacheStorageDataEntryResponseTime p),
("responseStatus" A..=) <$> Just (cacheStorageDataEntryResponseStatus p),
("responseStatusText" A..=) <$> Just (cacheStorageDataEntryResponseStatusText p),
("responseType" A..=) <$> Just (cacheStorageDataEntryResponseType p),
("responseHeaders" A..=) <$> Just (cacheStorageDataEntryResponseHeaders p)
]
-- | Type 'CacheStorage.Cache'.
-- Cache identifier.
data CacheStorageCache = CacheStorageCache
{
-- | An opaque unique id of the cache.
cacheStorageCacheCacheId :: CacheStorageCacheId,
-- | Security origin of the cache.
cacheStorageCacheSecurityOrigin :: T.Text,
-- | The name of the cache.
cacheStorageCacheCacheName :: T.Text
}
deriving (Eq, Show)
instance FromJSON CacheStorageCache where
parseJSON = A.withObject "CacheStorageCache" $ \o -> CacheStorageCache
<$> o A..: "cacheId"
<*> o A..: "securityOrigin"
<*> o A..: "cacheName"
instance ToJSON CacheStorageCache where
toJSON p = A.object $ catMaybes [
("cacheId" A..=) <$> Just (cacheStorageCacheCacheId p),
("securityOrigin" A..=) <$> Just (cacheStorageCacheSecurityOrigin p),
("cacheName" A..=) <$> Just (cacheStorageCacheCacheName p)
]
-- | Type 'CacheStorage.Header'.
data CacheStorageHeader = CacheStorageHeader
{
cacheStorageHeaderName :: T.Text,
cacheStorageHeaderValue :: T.Text
}
deriving (Eq, Show)
instance FromJSON CacheStorageHeader where
parseJSON = A.withObject "CacheStorageHeader" $ \o -> CacheStorageHeader
<$> o A..: "name"
<*> o A..: "value"
instance ToJSON CacheStorageHeader where
toJSON p = A.object $ catMaybes [
("name" A..=) <$> Just (cacheStorageHeaderName p),
("value" A..=) <$> Just (cacheStorageHeaderValue p)
]
-- | Type 'CacheStorage.CachedResponse'.
-- Cached response
data CacheStorageCachedResponse = CacheStorageCachedResponse
{
-- | Entry content, base64-encoded. (Encoded as a base64 string when passed over JSON)
cacheStorageCachedResponseBody :: T.Text
}
deriving (Eq, Show)
instance FromJSON CacheStorageCachedResponse where
parseJSON = A.withObject "CacheStorageCachedResponse" $ \o -> CacheStorageCachedResponse
<$> o A..: "body"
instance ToJSON CacheStorageCachedResponse where
toJSON p = A.object $ catMaybes [
("body" A..=) <$> Just (cacheStorageCachedResponseBody p)
]
-- | Deletes a cache.
-- | Parameters of the 'CacheStorage.deleteCache' command.
data PCacheStorageDeleteCache = PCacheStorageDeleteCache
{
-- | Id of cache for deletion.
pCacheStorageDeleteCacheCacheId :: CacheStorageCacheId
}
deriving (Eq, Show)
pCacheStorageDeleteCache
{-
-- | Id of cache for deletion.
-}
:: CacheStorageCacheId
-> PCacheStorageDeleteCache
pCacheStorageDeleteCache
arg_pCacheStorageDeleteCacheCacheId
= PCacheStorageDeleteCache
arg_pCacheStorageDeleteCacheCacheId
instance ToJSON PCacheStorageDeleteCache where
toJSON p = A.object $ catMaybes [
("cacheId" A..=) <$> Just (pCacheStorageDeleteCacheCacheId p)
]
instance Command PCacheStorageDeleteCache where
type CommandResponse PCacheStorageDeleteCache = ()
commandName _ = "CacheStorage.deleteCache"
fromJSON = const . A.Success . const ()
-- | Deletes a cache entry.
-- | Parameters of the 'CacheStorage.deleteEntry' command.
data PCacheStorageDeleteEntry = PCacheStorageDeleteEntry
{
-- | Id of cache where the entry will be deleted.
pCacheStorageDeleteEntryCacheId :: CacheStorageCacheId,
-- | URL spec of the request.
pCacheStorageDeleteEntryRequest :: T.Text
}
deriving (Eq, Show)
pCacheStorageDeleteEntry
{-
-- | Id of cache where the entry will be deleted.
-}
:: CacheStorageCacheId
{-
-- | URL spec of the request.
-}
-> T.Text
-> PCacheStorageDeleteEntry
pCacheStorageDeleteEntry
arg_pCacheStorageDeleteEntryCacheId
arg_pCacheStorageDeleteEntryRequest
= PCacheStorageDeleteEntry
arg_pCacheStorageDeleteEntryCacheId
arg_pCacheStorageDeleteEntryRequest
instance ToJSON PCacheStorageDeleteEntry where
toJSON p = A.object $ catMaybes [
("cacheId" A..=) <$> Just (pCacheStorageDeleteEntryCacheId p),
("request" A..=) <$> Just (pCacheStorageDeleteEntryRequest p)
]
instance Command PCacheStorageDeleteEntry where
type CommandResponse PCacheStorageDeleteEntry = ()
commandName _ = "CacheStorage.deleteEntry"
fromJSON = const . A.Success . const ()
-- | Requests cache names.
-- | Parameters of the 'CacheStorage.requestCacheNames' command.
data PCacheStorageRequestCacheNames = PCacheStorageRequestCacheNames
{
-- | Security origin.
pCacheStorageRequestCacheNamesSecurityOrigin :: T.Text
}
deriving (Eq, Show)
pCacheStorageRequestCacheNames
{-
-- | Security origin.
-}
:: T.Text
-> PCacheStorageRequestCacheNames
pCacheStorageRequestCacheNames
arg_pCacheStorageRequestCacheNamesSecurityOrigin
= PCacheStorageRequestCacheNames
arg_pCacheStorageRequestCacheNamesSecurityOrigin
instance ToJSON PCacheStorageRequestCacheNames where
toJSON p = A.object $ catMaybes [
("securityOrigin" A..=) <$> Just (pCacheStorageRequestCacheNamesSecurityOrigin p)
]
data CacheStorageRequestCacheNames = CacheStorageRequestCacheNames
{
-- | Caches for the security origin.
cacheStorageRequestCacheNamesCaches :: [CacheStorageCache]
}
deriving (Eq, Show)
instance FromJSON CacheStorageRequestCacheNames where
parseJSON = A.withObject "CacheStorageRequestCacheNames" $ \o -> CacheStorageRequestCacheNames
<$> o A..: "caches"
instance Command PCacheStorageRequestCacheNames where
type CommandResponse PCacheStorageRequestCacheNames = CacheStorageRequestCacheNames
commandName _ = "CacheStorage.requestCacheNames"
-- | Fetches cache entry.
-- | Parameters of the 'CacheStorage.requestCachedResponse' command.
data PCacheStorageRequestCachedResponse = PCacheStorageRequestCachedResponse
{
-- | Id of cache that contains the entry.
pCacheStorageRequestCachedResponseCacheId :: CacheStorageCacheId,
-- | URL spec of the request.
pCacheStorageRequestCachedResponseRequestURL :: T.Text,
-- | headers of the request.
pCacheStorageRequestCachedResponseRequestHeaders :: [CacheStorageHeader]
}
deriving (Eq, Show)
pCacheStorageRequestCachedResponse
{-
-- | Id of cache that contains the entry.
-}
:: CacheStorageCacheId
{-
-- | URL spec of the request.
-}
-> T.Text
{-
-- | headers of the request.
-}
-> [CacheStorageHeader]
-> PCacheStorageRequestCachedResponse
pCacheStorageRequestCachedResponse
arg_pCacheStorageRequestCachedResponseCacheId
arg_pCacheStorageRequestCachedResponseRequestURL
arg_pCacheStorageRequestCachedResponseRequestHeaders
= PCacheStorageRequestCachedResponse
arg_pCacheStorageRequestCachedResponseCacheId
arg_pCacheStorageRequestCachedResponseRequestURL
arg_pCacheStorageRequestCachedResponseRequestHeaders
instance ToJSON PCacheStorageRequestCachedResponse where
toJSON p = A.object $ catMaybes [
("cacheId" A..=) <$> Just (pCacheStorageRequestCachedResponseCacheId p),
("requestURL" A..=) <$> Just (pCacheStorageRequestCachedResponseRequestURL p),
("requestHeaders" A..=) <$> Just (pCacheStorageRequestCachedResponseRequestHeaders p)
]
data CacheStorageRequestCachedResponse = CacheStorageRequestCachedResponse
{
-- | Response read from the cache.
cacheStorageRequestCachedResponseResponse :: CacheStorageCachedResponse
}
deriving (Eq, Show)
instance FromJSON CacheStorageRequestCachedResponse where
parseJSON = A.withObject "CacheStorageRequestCachedResponse" $ \o -> CacheStorageRequestCachedResponse
<$> o A..: "response"
instance Command PCacheStorageRequestCachedResponse where
type CommandResponse PCacheStorageRequestCachedResponse = CacheStorageRequestCachedResponse
commandName _ = "CacheStorage.requestCachedResponse"
-- | Requests data from cache.
-- | Parameters of the 'CacheStorage.requestEntries' command.
data PCacheStorageRequestEntries = PCacheStorageRequestEntries
{
-- | ID of cache to get entries from.
pCacheStorageRequestEntriesCacheId :: CacheStorageCacheId,
-- | Number of records to skip.
pCacheStorageRequestEntriesSkipCount :: Maybe Int,
-- | Number of records to fetch.
pCacheStorageRequestEntriesPageSize :: Maybe Int,
-- | If present, only return the entries containing this substring in the path
pCacheStorageRequestEntriesPathFilter :: Maybe T.Text
}
deriving (Eq, Show)
pCacheStorageRequestEntries
{-
-- | ID of cache to get entries from.
-}
:: CacheStorageCacheId
-> PCacheStorageRequestEntries
pCacheStorageRequestEntries
arg_pCacheStorageRequestEntriesCacheId
= PCacheStorageRequestEntries
arg_pCacheStorageRequestEntriesCacheId
Nothing
Nothing
Nothing
instance ToJSON PCacheStorageRequestEntries where
toJSON p = A.object $ catMaybes [
("cacheId" A..=) <$> Just (pCacheStorageRequestEntriesCacheId p),
("skipCount" A..=) <$> (pCacheStorageRequestEntriesSkipCount p),
("pageSize" A..=) <$> (pCacheStorageRequestEntriesPageSize p),
("pathFilter" A..=) <$> (pCacheStorageRequestEntriesPathFilter p)
]
data CacheStorageRequestEntries = CacheStorageRequestEntries
{
-- | Array of object store data entries.
cacheStorageRequestEntriesCacheDataEntries :: [CacheStorageDataEntry],
-- | Count of returned entries from this storage. If pathFilter is empty, it
-- is the count of all entries from this storage.
cacheStorageRequestEntriesReturnCount :: Double
}
deriving (Eq, Show)
instance FromJSON CacheStorageRequestEntries where
parseJSON = A.withObject "CacheStorageRequestEntries" $ \o -> CacheStorageRequestEntries
<$> o A..: "cacheDataEntries"
<*> o A..: "returnCount"
instance Command PCacheStorageRequestEntries where
type CommandResponse PCacheStorageRequestEntries = CacheStorageRequestEntries
commandName _ = "CacheStorage.requestEntries"