Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ version = "0.1.0"
[deps]
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
JSONTables = "b9914132-a727-11e9-1322-f18e41205b0b"

[compat]
HTTP = "0.9"
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://PyDataBlog.github.io/PolygonIO.jl/dev)
[![Build Status](https://github.com/PyDataBlog/PolygonIO.jl/workflows/CI/badge.svg)](https://github.com/PyDataBlog/PolygonIO.jl/actions)
[![Coverage](https://codecov.io/gh/PyDataBlog/PolygonIO.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/PyDataBlog/PolygonIO.jl)
[![Open in Visual Studio Code](https://open.vscode.dev/badges/open-in-vscode.svg)](https://open.vscode.dev/PyDataBlog/PolygonIO.jl)
10 changes: 8 additions & 2 deletions src/PolygonIO.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ module PolygonIO

# Gloabl Imports
using JSON3
using JSONTables
using HTTP


######### Import modules & utils ################
include("custom_structs.jl")
include("utils.jl")
include("urls.jl")
include("crypto_api.jl")
include("custom_structs.jl")
include("forex_api.jl")
include("reference_api.jl")
include("stock_api.jl")
Expand All @@ -20,7 +22,11 @@ include("streaming_socket.jl")
export PolyOpts, tickers, ticker_types, ticker_details, ticker_details_vX,
ticker_news, markets, locales, stock_splits, stock_dividends,
stock_financials, market_holidays, market_status, stock_exchanges,
condition_mappings, crypto_exchanges
condition_mappings, crypto_exchanges,

trades, quotes_nbbo, last_trade_symbol, last_quote_symbol, daily_open_close,
grouped_daily_bars, previous_close, aggregates_bars, snapshot_all_tickers,
snapshot_ticker, snapshot_gainers_losers


end
14 changes: 14 additions & 0 deletions src/custom_structs.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ Abstract base type for all generic options.
"""
abstract type AbstractPolyOptions end

"""
AbstractPolyChoice

Abstract base type for dispatching extracted JSONs.
"""
abstract type AbstractPolyChoice end


"""
PolyOpts <: AbstractPolyOptions
Expand All @@ -17,3 +24,10 @@ struct PolyOpts <: AbstractPolyOptions
sink::Any
end


struct NoSinkNoResults <: AbstractPolyChoice end
struct NoSinkYesResults <: AbstractPolyChoice end
struct YesSinkNoResults <: AbstractPolyChoice end
struct YesSinkYesResults <: AbstractPolyChoice end
struct NoSinkYesTickers <: AbstractPolyChoice end
struct NoSinkYesTicker <: AbstractPolyChoice end
31 changes: 16 additions & 15 deletions src/reference_api.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ function tickers(opts::PolyOpts,
# Extract kwargs and add to params
merge!(params, Dict(kwargs))

return generate_output_from_url(tickers_base_url, params, opts.sink; results=true, json_to_array=false)
return generate_output_from_url(YesSinkYesResults(), tickers_base_url, params, opts.sink)


end

Expand All @@ -29,7 +30,7 @@ end
"""
function ticker_types(opts::PolyOpts)
params = Dict("apiKey" => opts.api_key)
return generate_output_from_url(ticker_types_base_url, params, nothing; results=true, json_to_array=false)
return generate_output_from_url(NoSinkYesResults(), ticker_types_base_url, params, opts.sink)
end

############ Tickers Details ####################
Expand All @@ -39,7 +40,7 @@ function ticker_details(opts::PolyOpts, stocksTicker::String)
params = Dict("apiKey" => opts.api_key)
ticker_details_url = "$ticker_details_base_url/$stocksTicker/company"

return generate_output_from_url(ticker_details_url, params, opts.sink; results=false, json_to_array=true)
return generate_output_from_url(YesSinkNoResults(), ticker_details_url, params, opts.sink)
end

############ Ticker Details vX ####################
Expand All @@ -54,7 +55,7 @@ function ticker_details_vX(opts::PolyOpts, ticker::String, date::String)
"date" => date
)

return generate_output_from_url(ticker_details_vX_url, params, opts.sink; results=true, json_to_array=true)
return generate_output_from_url(YesSinkYesResults(), ticker_details_vX_url, params, opts.sink)
end

############ Ticker News #######################
Expand All @@ -79,7 +80,7 @@ function ticker_news(opts::PolyOpts,
# Extract kwargs and add to params
merge!(params, Dict(kwargs))

return generate_output_from_url(ticker_news_base_url, params, nothing; results=true, json_to_array=false)
return generate_output_from_url(YesSinkYesResults(), ticker_news_base_url, params, opts.sink)

end

Expand All @@ -88,7 +89,7 @@ end
"""
function markets(opts::PolyOpts)
params = Dict("apiKey" => opts.api_key)
return generate_output_from_url(markets_base_url, params, opts.sink; results=true, json_to_array=false)
return generate_output_from_url(YesSinkYesResults(), markets_base_url, params, opts.sink)
end


Expand All @@ -97,7 +98,7 @@ end
"""
function locales(opts::PolyOpts)
params = Dict("apiKey" => opts.api_key)
return generate_output_from_url(locales_base_url, params, opts.sink; results=true, json_to_array=false)
return generate_output_from_url(YesSinkYesResults(), locales_base_url, params, opts.sink)
end

############ Stock Splits ####################
Expand All @@ -107,7 +108,7 @@ function stock_splits(opts::PolyOpts, stocksTicker::String)
stock_splits_url = "$stock_splits_base_url/$stocksTicker"
params = Dict("apiKey" => opts.api_key)

return generate_output_from_url(stock_splits_url, params, nothing; results=true, json_to_array=false)
return generate_output_from_url(YesSinkYesResults(), stock_splits_url, params, opts.sink)
end

############ Stock Dividends ####################
Expand All @@ -117,7 +118,7 @@ function stock_dividends(opts::PolyOpts, stocksTicker::String)
stock_dividends_url = "$stock_dividends_base_url/$stocksTicker"
params = Dict("apiKey" => opts.api_key)

return generate_output_from_url(stock_dividends_url, params, opts.sink; results=true, json_to_array=false)
return generate_output_from_url(YesSinkYesResults(), stock_dividends_url, params, opts.sink)
end

############ Stock Financials ####################
Expand All @@ -132,31 +133,31 @@ function stock_financials(opts::PolyOpts, stocksTicker::String; limit=5, kwargs.
# Extract kwargs and add to params
merge!(params, Dict(kwargs))

return generate_output_from_url(stock_financials_url, params, opts.sink; results=true, json_to_array=false)
return generate_output_from_url(YesSinkYesResults(), stock_financials_url, params, opts.sink)
end

############ Market Holidays ####################
"""
"""
function market_holidays(opts::PolyOpts)
params = Dict("apiKey" => opts.api_key)
return generate_output_from_url(market_holidays_base_url, params, opts.sink; results=false, json_to_array=false)
return generate_output_from_url(YesSinkNoResults(), market_holidays_base_url, params, opts.sink)
end

############ Market Status ####################
"""
"""
function market_status(opts::PolyOpts)
params = Dict("apiKey" => opts.api_key)
return generate_output_from_url(market_status_base_url, params, nothing; results=false, json_to_array=false)
return generate_output_from_url(YesSinkNoResults(), market_status_base_url, params, opts.sink)
end

############ Stock Exchanges ####################
"""
"""
function stock_exchanges(opts::PolyOpts)
params = Dict("apiKey" => opts.api_key)
return generate_output_from_url(stock_exchanges_base_url, params, nothing; results=false, json_to_array=false)
return generate_output_from_url(YesSinkNoResults(), stock_exchanges_base_url, params, opts.sink)
end

############ Condition Mappings ####################
Expand All @@ -166,13 +167,13 @@ function condition_mappings(opts::PolyOpts, tickertype="trades")
condition_mappings_base_url = "https://api.polygon.io/v1/meta/conditions/$tickertype"
params = Dict("apiKey" => opts.api_key)

return generate_output_from_url(condition_mappings_base_url, params, nothing; results=false, json_to_array=false)
return generate_output_from_url(YesSinkNoResults(), condition_mappings_base_url, params, opts.sink)
end

############ Crypto Exchanges ####################
"""
"""
function crypto_exchanges(opts::PolyOpts)
params = Dict("apiKey" => opts.api_key)
return generate_output_from_url(crypto_exchanges_base_url, params, opts.sink; results=false, json_to_array=false)
return generate_output_from_url(YesSinkNoResults(), crypto_exchanges_base_url, params, opts.sink)
end
170 changes: 170 additions & 0 deletions src/stock_api.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
############ Trades ####################
"""
"""
function trades(opts::PolyOpts, ticker::String, date::String; limit=10, reverse=true, kwargs...)
trades_url = "$trades_base_url/$ticker/$date"
params = Dict(
"apiKey" => opts.api_key,
"limit" => limit,
"reverse" => reverse
)

merge!(params, Dict(kwargs))

return generate_output_from_url(YesSinkYesResults(), trades_url, params, opts.sink)
end


############ Quotes ####################
"""
"""
function quotes_nbbo(opts::PolyOpts, ticker::String, date::String; limit=10, reverse=true, kwargs...)
quotes_url = "$quotes_base_url/$ticker/$date"
params = Dict(
"apiKey" => opts.api_key,
"limit" => limit,
"reverse" => reverse
)

merge!(params, Dict(kwargs))

return generate_output_from_url(YesSinkYesResults(), quotes_url, params, opts.sink)
end


# ############ Last Trade For A Symbol v2 ####################
"""
"""
function last_trade_symbol(opts::PolyOpts, stocksTicker::String)
last_trade_url = "$last_trade_base_url/$stocksTicker"
params = Dict("apiKey" => opts.api_key)

return generate_output_from_url(YesSinkYesResults(), last_trade_url, params, opts.sink)
end


# ############ Last Quote For A Symbol v2 ####################
"""
"""
function last_quote_symbol(opts::PolyOpts, stocksTicker::String)
last_quote_url = "$last_quote_base_url/$stocksTicker"
params = Dict("apiKey" => opts.api_key)

return generate_output_from_url(YesSinkYesResults(), last_quote_url, params, opts.sink)
end


# ############ Daily Open/Close ####################
"""
"""
function daily_open_close(opts::PolyOpts, stocksTicker::String, date::String; adjusted=true)
daily_open_close_url = "$daily_open_close_base_url/$stocksTicker/$date"
params = Dict(
"apiKey" => opts.api_key,
"adjusted" => adjusted
)

return generate_output_from_url(YesSinkNoResults(), daily_open_close_url, params, opts.sink)
end


# ############ Grouped Daily (Bars) ####################
"""
"""
function grouped_daily_bars(opts::PolyOpts, date::String; adjusted=true)
grouped_daily_bars_url = "$grouped_daily_bars_base_url/$date"
params = Dict(
"apiKey" => opts.api_key,
"adjusted" => adjusted
)

return generate_output_from_url(YesSinkYesResults(), grouped_daily_bars_url, params, opts.sink)
end


# ############ Previous Close ####################
"""
"""
function previous_close(opts::PolyOpts, stocksTicker::String; adjusted=true)
previous_close_url = "$previous_close_base_url/$stocksTicker/prev"
params = Dict(
"apiKey" => opts.api_key,
"adjusted" => adjusted
)

return generate_output_from_url(YesSinkYesResults(), previous_close_url, params, opts.sink)
end


# ############ Aggregates (Bars) ####################
"""
"""
function aggregates_bars(opts::PolyOpts,
stocksTicker::String;
multiplier=1,
timespan="day",
from="2020-10-14",
to="2020-10-14",
adjusted=true,
sort="asc",
limit=120,
kwargs...)

aggregates_bars_url = "$aggregates_bars_base_url/$stocksTicker/range/$multiplier/$timespan/$from/$to"

params = Dict(
"apiKey" => opts.api_key,
"multiplier" => multiplier,
"timespan" => timespan,
"from" => from,
"to" => to,
"adjusted" => adjusted,
"sort" => sort,
"limit" => limit
)

merge!(params, Dict(kwargs))

return generate_output_from_url(YesSinkYesResults(), aggregates_bars_url, params, opts.sink)

end


# ############ Snapshot - All Tickers ####################
"""
"""
function snapshot_all_tickers(opts::PolyOpts, tickers::String)
snapshot_all_tickers_url = "$snapshot_all_tickers_base_url"

params = Dict(
"apiKey" => opts.api_key,
"tickers" => tickers
)

return generate_output_from_url(NoSinkYesTickers(), snapshot_all_tickers_url, params, opts.sink)
end


# ############ Snapshot - Ticker ####################
"""
"""
function snapshot_ticker(opts::PolyOpts, stocksTicker::String)
snapshot_ticker_url = "$snapshot_ticker_base_url/$stocksTicker"
params = Dict("apiKey" => opts.api_key)

return generate_output_from_url(NoSinkYesTicker(), snapshot_ticker_url, params, opts.sink)
end


# ############ Snapshot - Gainers/Losers ####################
"""
"""
function snapshot_gainers_losers(opts::PolyOpts, direction="losers")
snapshot_gainers_losers_url = "$snapshot_gainers_losers_base_url/$direction"
params = Dict(
"apiKey" => opts.api_key,
"direction" => direction
)

return generate_output_from_url(NoSinkYesTickers(), snapshot_gainers_losers_url, params, opts.sink)
end
Loading