add ByteString handling
This commit is contained in:
parent
2e7e1dd9a0
commit
56c2235925
@ -13,3 +13,5 @@ This project makes use of the following dependencies (specified in `profun.cabal
|
|||||||
* aeson (JSON parsing)
|
* aeson (JSON parsing)
|
||||||
* Chart
|
* Chart
|
||||||
* Chart-diagrams
|
* Chart-diagrams
|
||||||
|
* bytestring (for ByteString type)
|
||||||
|
* utf8-string (for conversion from String to ByteString)
|
||||||
|
12
app/Main.hs
12
app/Main.hs
@ -2,6 +2,7 @@
|
|||||||
import Network.HTTP.Simple
|
import Network.HTTP.Simple
|
||||||
import System.Environment (lookupEnv)
|
import System.Environment (lookupEnv)
|
||||||
import Plot
|
import Plot
|
||||||
|
import Data.ByteString.UTF8 (fromString) --to convert acquired API key to ByteString
|
||||||
|
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
@ -9,13 +10,13 @@ main = do
|
|||||||
apiKey <- getWeatherKey
|
apiKey <- getWeatherKey
|
||||||
let todayRequest = apiRequestBuilder apiKey "today"
|
let todayRequest = apiRequestBuilder apiKey "today"
|
||||||
response <- httpJSON todayRequest :: IO (Response ())
|
response <- httpJSON todayRequest :: IO (Response ())
|
||||||
generatePlot 20 30 25 --example
|
generatePlot 20 100 25 --example
|
||||||
putStrLn $ show todayRequest
|
putStrLn $ show todayRequest
|
||||||
putStrLn $ show $ getResponseStatusCode response
|
putStrLn $ show $ getResponseStatusCode response
|
||||||
--apiResponse <- httpJSON "http://httpbin.org/get" :: IO (Response ()) -- specifying type as httpJSON return value is ambigious
|
--apiResponse <- httpJSON "http://httpbin.org/get" :: IO (Response ()) -- specifying type as httpJSON return value is ambigious
|
||||||
|
|
||||||
|
|
||||||
|
--apiKey is stored in an env variable, not something that should be pushed onto git
|
||||||
getWeatherKey :: IO String
|
getWeatherKey :: IO String
|
||||||
getWeatherKey = do
|
getWeatherKey = do
|
||||||
result <- lookupEnv "WEATHER_API_KEY"
|
result <- lookupEnv "WEATHER_API_KEY"
|
||||||
@ -28,10 +29,11 @@ apiRequestBuilder apiKey day =
|
|||||||
setRequestHost "api.weatherapi.com"
|
setRequestHost "api.weatherapi.com"
|
||||||
$ setRequestPath path
|
$ setRequestPath path
|
||||||
$ setRequestMethod "GET"
|
$ setRequestMethod "GET"
|
||||||
$ setRequestQueryString [("q", Just "Poznan"), ("key", Just "apiKey")]
|
$ setRequestQueryString [("q", Just "Poznan"), ("key", Just (fromString apiKey))]
|
||||||
$ setRequestPort 443
|
$ setRequestPort 443
|
||||||
$ setRequestSecure True
|
$ setRequestSecure True
|
||||||
$ defaultRequest
|
$ defaultRequest
|
||||||
where path
|
where path
|
||||||
| day == "today" = "/v1/current.json"
|
| day == "yesterday" = "/v1/"
|
||||||
| otherwise = "/d"
|
| day == "tomorrow" = "/v1/"
|
||||||
|
| otherwise = "/v1/current.json"
|
@ -70,7 +70,9 @@ executable profun
|
|||||||
http-conduit ^>=2.3.8.3,
|
http-conduit ^>=2.3.8.3,
|
||||||
Chart ^>=1.9.5,
|
Chart ^>=1.9.5,
|
||||||
Chart-diagrams ^>=1.9.5,
|
Chart-diagrams ^>=1.9.5,
|
||||||
aeson ^>=2.2.2.0
|
aeson ^>=2.2.2.0,
|
||||||
|
bytestring ^>=0.12.1.0,
|
||||||
|
utf8-string ^>=1.0.2
|
||||||
|
|
||||||
-- Directories containing source files.
|
-- Directories containing source files.
|
||||||
hs-source-dirs: app
|
hs-source-dirs: app
|
||||||
|
Loading…
Reference in New Issue
Block a user