@@ -36,6 +36,7 @@ import Data.Aeson hiding (Bool, String)
36import Data.Aeson.TH
36import Data.Aeson.TH
37import Data.Char
37import Data.Char
38import Data.Function (on)
38import Data.Function (on)
39+import qualified Data.HashMap.Strict as Map
39import Data.List.NonEmpty (NonEmpty (..))
40import Data.List.NonEmpty (NonEmpty (..))
40import qualified Data.List.NonEmpty as NE
41import qualified Data.List.NonEmpty as NE
41import Data.Maybe
42import Data.Maybe
@@ -301,6 +302,44 @@ instance ToJSON Data where
301 , "lenses" .= ls
302 , "lenses" .= ls
309+ , _mDescription :: Help
310+ , _mParameters :: Map Id Param
311+ , _mParameterOrder :: [Id]
312+ , _mScopes :: [Text]
313+ , _mRequest :: Maybe Id
314+ , _mResponse :: Maybe Id
315+ } deriving (Generic)
317+instance FromJSON Method where
318+ parseJSON = withObject "method" $ \o -> Method
321+ <*> o .: "httpMethod"
322+ <*> o .: "description"
323+ <*> o .: "parameters"
324+ <*> o .:? "parameterOrder" .!= mempty
327+ <*> ref o "response"
329+ ref o k = Just <$> (o .: k >>= (.: "$ref"))
332+deriveToJSON (js "_m") ''Method
334+newtype Resource = Resource { methods :: Map Id Method }
337+deriveFromJSON (js "") ''Resource
339+-- instance FromJSON Resource where
340+-- parseJSON = withObject "resource" $ \o ->
341+-- o .: "methods" -- <|> fail (show (Map.lookup "methods" o))
304data Service a = Service
343data Service a = Service
305 { _svcLibrary :: Text
344 { _svcLibrary :: Text
306 , _svcTitle :: Text
345 , _svcTitle :: Text
@@ -321,7 +360,7 @@ data Service a = Service
321 , _svcAuth :: Maybe Object
360 , _svcAuth :: Maybe Object
322 , _svcParameters :: Map Id Param
361 , _svcParameters :: Map Id Param
323 , _svcSchemas :: Map Id a
362 , _svcSchemas :: Map Id a
324− , _svcResources :: Object
363+ , _svcResources :: Map Id Resource
325 } deriving (Generic)
364 } deriving (Generic)
327deriveFromJSON (js "_svc") ''Service
366deriveFromJSON (js "_svc") ''Service