@@ -5,6 +5,7 @@ import Data.Functor
5import Data.HashMap.Strict.InsOrd as InsMap
5import Data.HashMap.Strict.InsOrd as InsMap
6import Data.HashSet.InsOrd as InsSet
6import Data.HashSet.InsOrd as InsSet
7import Data.OpenApi
7import Data.OpenApi
8+import Data.OpenApi.Internal
8import Data.Traversable
9import Data.Traversable
9import OpenAPI.Checker.Report
10import OpenAPI.Checker.Report
10import OpenAPI.Checker.Validate.Monad
11import OpenAPI.Checker.Validate.Monad
@@ -13,17 +14,29 @@ reportCompat :: OpenApi -> OpenApi -> Report
13reportCompat = error "FIXME: reportCompat not implemented"
14reportCompat = error "FIXME: reportCompat not implemented"
15forwardCompatible :: OpenApi -> OpenApi -> ReportTree
16forwardCompatible :: OpenApi -> OpenApi -> ReportTree
16−forwardCompatible dec enc = fst $ runReportTreeT $ openApiCompatible dec enc
17+forwardCompatible dec enc = fst $ runTreeM $ openApiCompatible dec enc
18−openApiCompatible :: OpenApi -> OpenApi -> ReportTreeT ()
19+openApiCompatible :: OpenApi -> OpenApi -> TreeM ReportTree ()
19openApiCompatible dec enc = void $ follow $
20openApiCompatible dec enc = void $ follow $
20 (InsMap.toList $ _openApiPaths dec) <&> \(path, encItem) ->
21 (InsMap.toList $ _openApiPaths dec) <&> \(path, encItem) ->
21 (path, checkItem path encItem)
22 (path, checkItem path encItem)
24+ -- checkItem :: Path -> PathItem -> TreeM PathItemTree ()
23 checkItem path encItem = do
25 checkItem path encItem = do
24 case (InsMap.lookup path $ _openApiPaths enc) of
26 case (InsMap.lookup path $ _openApiPaths enc) of
25 Nothing -> pathError $ "Path deleted"
27 Nothing -> pathError $ "Path deleted"
26 Just decItem -> pathItemsCompatible encItem decItem
28 Just decItem -> pathItemsCompatible encItem decItem
28−pathItemsCompatible :: PathItem -> PathItem -> ReportTreeT ()
30+pathItemsCompatible :: PathItem -> PathItem -> TreeM PathItemTree ()
31+pathItemsCompatible dec enc = void $ follow
32+ [ (Get, go _pathItemGet)
33+ , (Put, go _pathItemPut)
34+ , (Post, go _pathItemPost)
35+ , (Delete, go _pathItemDelete)
36+ , (Options, go _pathItemOptions)
37+ , (Head, go _pathItemHead)
38+ , (Patch, go _pathItemPatch)
39+ , (Trace, go _pathItemTrace) ]
41+ go :: (PathItem -> Maybe Operation) -> TreeM OperationTree ()
29−pathItemsCompatible = error "FIXME: pathItemsCompatible not implemented"
42+ go getOp = (error "FIXME: not implemented")