Guest User

Untitled

a guest
Oct 19th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. {-# LANGUAGE OverloadedStrings, DataKinds, TypeOperators, TypeApplications, FlexibleContexts #-}
  2. module Lib where
  3.  
  4. import Data.Proxy
  5. import Servant
  6. import Servant.Utils.Enter (Enter(..))
  7.  
  8. type API1 = "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  9. type API2 = "x1" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  10. type API3 = "x2" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  11. type API4 = "x3" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  12. type API5 = "x4" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  13. type API6 = "x5" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  14. type API7 = "x6" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  15. type API8 = "x7" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  16. type API9 = "x8" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  17. type API10 = "x9" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  18. type API11 = "x10" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  19. type API12 = "x11" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  20. type API13 = "x12" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  21. type API14 = "x13" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  22. type API15 = "x14" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  23. type API16 = "x15" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  24. type API17 = "x16" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  25. type API18 = "x17" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  26. type API19 = "x18" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  27. type API20 = "x19" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  28. type API21 = "x20" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  29. type API22 = "x21" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  30. type API23 = "x22" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  31. type API24 = "x23" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  32. type API25 = "x24" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String :<|> "x" :> Get '[JSON] String
  33.  
  34. type API =
  35. API1 :<|> API2 :<|> API3 :<|> API4 :<|> API5 :<|> API6 :<|> API7 :<|> API8 :<|> API9 :<|>
  36. API10 :<|> API11 :<|> API12 :<|> API13 :<|> API14 :<|> API15 :<|> API16 :<|> API17 :<|> API18 :<|> API19 :<|>
  37. API20 :<|> API21 :<|> API22 :<|> API23 :<|> API24 :<|> API25
  38.  
  39. type M = IO
  40.  
  41.  
  42. f :: (Enter (ServerT api M) M Handler (Server api)) => Proxy api -> String -> Server api
  43. f _ c = enter (nat c) undefined
  44.  
  45. nat :: String -> M :~> Handler
  46. nat = undefined
  47.  
  48. server' :: String -> Server API
  49. server' c = f (Proxy::Proxy API) c
  50.  
  51. server :: String -> Server API
  52. server c =
  53. f (Proxy::Proxy API1) c
  54. :<|> f (Proxy::Proxy API2) c
  55. :<|> f (Proxy::Proxy API3) c
  56. :<|> f (Proxy::Proxy API4) c
  57. :<|> f (Proxy::Proxy API5) c
  58. :<|> f (Proxy::Proxy API6) c
  59. :<|> f (Proxy::Proxy API7) c
  60. :<|> f (Proxy::Proxy API8) c
  61. :<|> f (Proxy::Proxy API9) c
  62. :<|> f (Proxy::Proxy API10) c
  63. :<|> f (Proxy::Proxy API11) c
  64. :<|> f (Proxy::Proxy API12) c
  65. :<|> f (Proxy::Proxy API13) c
  66. :<|> f (Proxy::Proxy API14) c
  67. :<|> f (Proxy::Proxy API15) c
  68. :<|> f (Proxy::Proxy API16) c
  69. :<|> f (Proxy::Proxy API17) c
  70. :<|> f (Proxy::Proxy API18) c
  71. :<|> f (Proxy::Proxy API19) c
  72. :<|> f (Proxy::Proxy API20) c
  73. :<|> f (Proxy::Proxy API21) c
  74. :<|> f (Proxy::Proxy API22) c
  75. :<|> f (Proxy::Proxy API23) c
  76. :<|> f (Proxy::Proxy API24) c
  77. :<|> f (Proxy::Proxy API25) c
Add Comment
Please, Sign In to add comment