packages feed

rakuten-0.1.1.2: test/Rakuten/Test/MockServer.hs

{-# LANGUAGE DataKinds        #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies     #-}
{-# LANGUAGE TypeOperators    #-}

{-# OPTIONS_GHC -fno-warn-unused-binds #-}

module Rakuten.Test.MockServer
    ( mockServer
    , runMockServer
    ) where

import           Control.Concurrent
import           Network.Wai.Handler.Warp
import           Rakuten.Test.Class
import           Rakuten.Types
import           Servant

type RakutenHeader a = a

type API = "IchibaItem" :> "Search" :> "20170706" :> Get '[JSON] (RakutenHeader IchibaItems)
      :<|> "IchibaGenre" :> "Search" :> "20140222" :> Get '[JSON] (RakutenHeader IchibaGenres)

api :: Proxy API
api = Proxy

server :: Server API
server = searchIchibaItem
    :<|> searchIchibaGenre
  where
    searchIchibaItem = return testData
    searchIchibaGenre = return testData

mockServer :: IO ()
mockServer = run 8000 (serve api server)

runMockServer :: IO () -> IO ()
runMockServer action = do
  _ <- forkIO mockServer
  action