[haskell] Trigger a program restart when the api client encounters a server reset
This commit is contained in:
parent
e084d260ff
commit
9f75243ada
2 changed files with 8 additions and 0 deletions
|
@ -27,6 +27,7 @@ dependencies:
|
||||||
- text
|
- text
|
||||||
- time
|
- time
|
||||||
- transformers
|
- transformers
|
||||||
|
- unix
|
||||||
|
|
||||||
ghc-options:
|
ghc-options:
|
||||||
- -Wall
|
- -Wall
|
||||||
|
|
|
@ -23,6 +23,8 @@ import qualified Data.Text as T
|
||||||
import qualified Data.Text.Encoding as T
|
import qualified Data.Text.Encoding as T
|
||||||
import Network.HTTP.Simple
|
import Network.HTTP.Simple
|
||||||
import Network.HTTP.Types.Status
|
import Network.HTTP.Types.Status
|
||||||
|
import System.Environment
|
||||||
|
import System.Posix.Process
|
||||||
|
|
||||||
import SpaceTraders.APIClient.Errors
|
import SpaceTraders.APIClient.Errors
|
||||||
import SpaceTraders.APIClient.Pagination
|
import SpaceTraders.APIClient.Pagination
|
||||||
|
@ -81,4 +83,9 @@ sendPaginated request = do
|
||||||
Right (APIRateLimit r) -> do
|
Right (APIRateLimit r) -> do
|
||||||
threadDelay (1_000_000 * (round $ retryAfter r))
|
threadDelay (1_000_000 * (round $ retryAfter r))
|
||||||
sendPaginated request
|
sendPaginated request
|
||||||
|
Right (APIResetHappened _) -> do
|
||||||
|
p <- getExecutablePath
|
||||||
|
a <- getArgs
|
||||||
|
e <- getEnvironment
|
||||||
|
executeFile p False a (Just e)
|
||||||
Right e -> return $ Left e
|
Right e -> return $ Left e
|
||||||
|
|
Loading…
Add table
Reference in a new issue