Compare commits
2 Commits
be65a9bfd4
...
642bab0ba2
Author | SHA1 | Date | |
---|---|---|---|
642bab0ba2 | |||
c4eb5ab8ae |
@ -7,8 +7,12 @@ to get the needed dependencies.
|
||||
|
||||
### Dependencies
|
||||
This project makes use of the following dependencies (specified in `profun.cabal`):
|
||||
* http-client (for API requests)
|
||||
* http-client-tls (for API requests)
|
||||
* http-conduit (for API requests)
|
||||
* aeson (JSON parsing)
|
||||
* http-client
|
||||
* http-client-tls
|
||||
* http-conduit
|
||||
* Chart
|
||||
* Chart-diagrams
|
||||
* Chart-diagrams
|
||||
|
33
app/Main.hs
33
app/Main.hs
@ -1,12 +1,37 @@
|
||||
{-# LANGUAGE OverloadedStrings #-} --needed for string arguments
|
||||
{-# LANGUAGE OverloadedStrings #-} --needed for ByteString arguments
|
||||
import Network.HTTP.Simple
|
||||
import System.Environment (lookupEnv)
|
||||
import Plot
|
||||
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
apiResponse <- httpLBS "POST http://httpbin.org/get"
|
||||
apiKey <- getWeatherKey
|
||||
let todayRequest = apiRequestBuilder apiKey "today"
|
||||
response <- httpJSON todayRequest :: IO (Response ())
|
||||
generatePlot 20 30 25 --example
|
||||
putStrLn $ show todayRequest
|
||||
putStrLn $ show $ getResponseStatusCode response
|
||||
--apiResponse <- httpJSON "http://httpbin.org/get" :: IO (Response ()) -- specifying type as httpJSON return value is ambigious
|
||||
|
||||
putStrLn $ "Status code: " ++ show (getResponseStatusCode apiResponse)
|
||||
|
||||
generatePlot 20 30 25 --example
|
||||
|
||||
getWeatherKey :: IO String
|
||||
getWeatherKey = do
|
||||
result <- lookupEnv "WEATHER_API_KEY"
|
||||
case result of
|
||||
Just a -> return a
|
||||
Nothing -> error "API key not set in environmental variables!" -- exception thrown (but not handled) per project requirement
|
||||
|
||||
apiRequestBuilder :: String -> String -> Request
|
||||
apiRequestBuilder apiKey day =
|
||||
setRequestHost "api.weatherapi.com"
|
||||
$ setRequestPath path
|
||||
$ setRequestMethod "GET"
|
||||
$ setRequestQueryString [("q", Just "Poznan"), ("key", Just "apiKey")]
|
||||
$ setRequestPort 443
|
||||
$ setRequestSecure True
|
||||
$ defaultRequest
|
||||
where path
|
||||
| day == "today" = "/v1/current.json"
|
||||
| otherwise = "/d"
|
||||
|
@ -69,7 +69,8 @@ executable profun
|
||||
http-client-tls ^>=0.3.6.3,
|
||||
http-conduit ^>=2.3.8.3,
|
||||
Chart ^>=1.9.5,
|
||||
Chart-diagrams ^>=1.9.5
|
||||
Chart-diagrams ^>=1.9.5,
|
||||
aeson ^>=2.2.2.0
|
||||
|
||||
-- Directories containing source files.
|
||||
hs-source-dirs: app
|
||||
|
Loading…
Reference in New Issue
Block a user