on master help sign in
Add EmptyForeignAPI and `instance HasForeign ... EmptyAPI`
fa3f186David Turner
doc/tutorial/Javascript.lhs+2
@@ -45,6 +45,7 @@ Now let's have the API type(s) and the accompanying datatypes.
45``` haskell
45``` haskell
46type API = "point" :> Get '[JSON] Point
46type API = "point" :> Get '[JSON] Point
47 :<|> "books" :> QueryParam "q" Text :> Get '[JSON] (Search Book)
47 :<|> "books" :> QueryParam "q" Text :> Get '[JSON] (Search Book)
48+ :<|> EmptyAPI
48
49
49type API' = API :<|> Raw
50type API' = API :<|> Raw
50
51
@@ -133,6 +134,7 @@ api' = Proxy
133server :: Server API
134server :: Server API
134server = randomPoint
135server = randomPoint
135 :<|> searchBook
136 :<|> searchBook
137+ :<|> emptyAPIServer
136
138
137server' :: Server API'
139server' :: Server API'
138server' = server
140server' = server
servant-foreign/src/Servant/Foreign/Internal.hs+10
@@ -187,6 +187,13 @@ instance (HasForeign lang ftype a, HasForeign lang ftype b)
187 foreignFor lang ftype (Proxy :: Proxy a) req
187 foreignFor lang ftype (Proxy :: Proxy a) req
188 :<|> foreignFor lang ftype (Proxy :: Proxy b) req
188 :<|> foreignFor lang ftype (Proxy :: Proxy b) req
189
189
190+data EmptyForeignAPI = EmptyForeignAPI
191+
192+instance HasForeign lang ftype EmptyAPI where
193+ type Foreign ftype EmptyAPI = EmptyForeignAPI
194+
195+ foreignFor Proxy Proxy Proxy _ = EmptyForeignAPI
196+
190instance (KnownSymbol sym, HasForeignType lang ftype t, HasForeign lang ftype api)
197instance (KnownSymbol sym, HasForeignType lang ftype t, HasForeign lang ftype api)
191 => HasForeign lang ftype (Capture sym t :> api) where
198 => HasForeign lang ftype (Capture sym t :> api) where
192 type Foreign ftype (Capture sym t :> api) = Foreign ftype api
199 type Foreign ftype (Capture sym t :> api) = Foreign ftype api
@@ -349,6 +356,9 @@ instance HasForeign lang ftype api
349class GenerateList ftype reqs where
356class GenerateList ftype reqs where
350 generateList :: reqs -> [Req ftype]
357 generateList :: reqs -> [Req ftype]
351
358
359+instance GenerateList ftype EmptyForeignAPI where
360+ generateList _ = []
361+
352instance GenerateList ftype (Req ftype) where
362instance GenerateList ftype (Req ftype) where
353 generateList r = [r]
363 generateList r = [r]
354
364