@@ -37,6 +37,8 @@ import Foreign.StablePtr
37import GHC.Generics
37import GHC.Generics
38import GHCJS.Foreign.Callback
38import GHCJS.Foreign.Callback
39import GHCJS.Prim
39import GHCJS.Prim
41+import JavaScript.Web.Location
40import Network.HTTP.Types
42import Network.HTTP.Types
41import Network.HTTP.Media (renderHeader)
43import Network.HTTP.Media (renderHeader)
42import Servant.Client.Core
44import Servant.Client.Core
@@ -81,8 +83,34 @@ instance RunClient ClientM where
81instance ClientLike (ClientM a) (ClientM a) where
83instance ClientLike (ClientM a) (ClientM a) where
82 mkClient = id
84 mkClient = id
84−runClientM :: ClientM a -> ClientEnv -> IO (Either ServantError a)
86+runClientMOrigin :: ClientM a -> ClientEnv -> IO (Either ServantError a)
85−runClientM cm env = runExceptT $ flip runReaderT env $ runClientM' cm
87+runClientMOrigin cm env = runExceptT $ flip runReaderT env $ runClientM' cm
89+runClientM :: ClientM a -> IO (Either ServantError a)
91+ curLoc <- getWindowLocation
93+ jsStr_protocol <- getProtocol curLoc
94+ jsStr_port <- getPort curLoc
95+ jsStr_hostname <- getHostname curLoc
98+ | jsStr_protocol == "https:" = Https
102+ portStr = fromJSString $ jsval jsStr_port
105+ port | null portStr = case protocol of
108+ | otherwise = read portStr
111+ hostname = fromJSString $ jsval jsStr_hostname
113+ runClientMOrigin m (ClientEnv (BaseUrl protocol hostname port ""))
87performRequest :: Request -> ClientM Response
115performRequest :: Request -> ClientM Response
88performRequest req = do
116performRequest req = do