Safe Haskell | None |
---|---|
Language | Haskell2010 |
A haskell wrapper for the cryptocompare API, a source of information and pricing of different crypto currencies
module Main (main) where import CryptoCompare main :: IO () main = do coinList <- fetchCoinList either print (print . length) coinList either print (print . head) coinList priceResp <- fetchCurrentPrice "BTC" ["USD", "EUR", "BTC"] print priceResp priceHistResp <- fetchDailyPriceHistory "BTC" "USD" 300 print priceHistResp snapshotResp <- fetchCoinSnapshot "BTC" "USD" print snapshotResp
- fetchCoinList :: (MonadIO m, MonadCatch m) => m (Either String [CoinDetails])
- fetchCurrentPrice :: (MonadIO m, MonadThrow m, MonadCatch m) => String -> [String] -> m (Either String PriceResponse)
- fetchDailyPriceHistory :: (MonadIO m, MonadThrow m, MonadCatch m) => String -> String -> Integer -> m (Either String PriceHistoryResponse)
- fetchCoinSnapshot :: (MonadIO m, MonadThrow m, MonadCatch m) => String -> String -> m (Either String CoinSnapshot)
- data CoinDetails = CoinDetails {}
- data PriceHistoryResponse = PriceHistoryResponse {}
- data PriceHistoryResponseData = PriceHistoryResponseData {}
- data CoinSnapshot = CoinSnapshot {}
- data AggregatedSnapshot = AggregatedSnapshot {
- market :: String
- fromSymbol :: String
- toSymbol :: String
- flags :: String
- price :: Float
- lastUpdate :: Integer
- lastVolume :: Float
- lastVolumeto :: Float
- lastTradeId :: String
- volume24Hour :: Float
- volume24HourTo :: Float
- open24Hour :: Float
- high24Hour :: Float
- low24Hour :: Float
- lastMarket :: String
- newtype PriceResponse = PriceResponse (Map String Float)
Documentation
fetchCoinList :: (MonadIO m, MonadCatch m) => m (Either String [CoinDetails]) Source #
Get a list of all of the coins the API is aware of, and high level details about those coins
do coinList <- fetchCoinList either print (print . length) coinList either print (print . head) coinList
:: (MonadIO m, MonadThrow m, MonadCatch m) | |
=> String | Coin symbol ( |
-> [String] | Currency symbol(s) to display prices in. Eg [ |
-> m (Either String PriceResponse) | Either an error or response data |
For a given coin, get the current price
do priceResp <- fetchCurrentPrice "BTC" ["USD", "EUR", "BTC"] print priceResp
fetchDailyPriceHistory Source #
:: (MonadIO m, MonadThrow m, MonadCatch m) | |
=> String | Coin symbol ( |
-> String | Currency symbol to display prices in ( |
-> Integer | Days of history to return (Max 2000) |
-> m (Either String PriceHistoryResponse) | Either an error or response data |
For a given coin, get a daily history of the coin's price
do priceHistResp <- fetchDailyPriceHistory "BTC" "USD" 300 print priceHistResp
:: (MonadIO m, MonadThrow m, MonadCatch m) | |
=> String | Coin symbol ( |
-> String | Currency symbol(s) to display prices in ( |
-> m (Either String CoinSnapshot) | Either an error or response data |
Fetch details about a particular coin
do snapshotResp <- fetchCoinSnapshot "BTC" "USD" print snapshotResp
data PriceHistoryResponse Source #
API response container for daily price history
PriceHistoryResponse | |
|
data PriceHistoryResponseData Source #
Data for a particular snapshot of a coin's daily price
data AggregatedSnapshot Source #
Aggregated data about a particular coin
AggregatedSnapshot | |
|
newtype PriceResponse Source #
contains pairs of prices: crypto symbol -> (regular currency symbol, price)