Giter VIP home page Giter VIP logo

iexcloud4s's Introduction

[WIP] iexcloud4s

An idiomatic functional cats-effect compatible bindings to IEX Cloud API for Scala (2.13 yet).

Examples

import com.iexcloud4s.http._
import com.iexcloud4s.stocks.v1._

import cats.effect._
import scala.concurrent.ExecutionContext.Implicits.global

implicit val contextShift: ContextShift[IO] = IO.contextShift(ExecutionContext.global)

def makeClient(token: String): Resource[IO, IEXClient[IO]] =
  ClientBuilder
    .apply[IO](global)
    .withToken(token)
    .resource
    
def stockPreviousDayPriceChange(stock: String)(implicit client: IEXClient[IO]): IO[BigDecimal] =
  previousDayPrice(stock).map(_.change)

Some APIs also allow to retrieve separate data columns, iexcloud4s utilizes GADT to perform that in a typesafe manner.

def stockPERatio(stock: String)(implicit client: IEXClient[IO]): IO[BigDecimal] =
  keyStatsField(stock, KeyStats.PERatio)
  
final case class PriceChangeAndPE(priceChange: BigDecimal, peRatio: BigDecimal)

def stockPriceChangeAndPE(token: String, stock: String): IO[PriceChangeAndPE] =
  makeClient(token).use { implicit client =>
    for {
      priceChange <- stockPreviousDayPriceChange(stock)
      peRatio <- stockPERatio(stock)
    } yield PriceChangeAndPE(priceChange, peRatio)
  }

TODO

  • Spark Dataset support
  • Time series
  • Stocks / Equities
  • Corporate Actions
  • Market Info
  • News
  • Cryptocurrency
  • Forex / Currencies
  • Options
  • Treasuries
  • Commodities
  • Economic Data

iexcloud4s's People

Contributors

meadofpoetry avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.