{-# OPTIONS_GHC -Wno-orphans #-}

-- | Swagger implementation of 'Method' trait.
module WebGear.Swagger.Trait.Method where

import WebGear.Core.Request (Request)
import WebGear.Core.Trait (Get (..))
import WebGear.Core.Trait.Method (Method (..))
import WebGear.Swagger.Handler (DocNode (DocMethod), SwaggerHandler (SwaggerHandler), singletonNode)

instance Get (SwaggerHandler m) Method Request where
  {-# INLINE getTrait #-}
  getTrait :: forall (ts :: [*]).
Prerequisite Method ts Request =>
Method
-> SwaggerHandler
     m
     (With Request ts)
     (Either (Absence Method Request) (Attribute Method Request))
getTrait (Method StdMethod
method) = Tree DocNode
-> SwaggerHandler
     m
     (With Request ts)
     (Either (Absence Method Request) (Attribute Method Request))
forall {k} {k1} {k2} (m :: k) (a :: k1) (b :: k2).
Tree DocNode -> SwaggerHandler m a b
SwaggerHandler (Tree DocNode
 -> SwaggerHandler
      m
      (With Request ts)
      (Either (Absence Method Request) (Attribute Method Request)))
-> Tree DocNode
-> SwaggerHandler
     m
     (With Request ts)
     (Either (Absence Method Request) (Attribute Method Request))
forall a b. (a -> b) -> a -> b
$ DocNode -> Tree DocNode
forall a. a -> Tree a
singletonNode (StdMethod -> DocNode
DocMethod StdMethod
method)