rustrade-integration 0.2.0

Low-level framework for composing flexible web integrations, especially with financial exchanges
Documentation
[package]
name = "rustrade-integration"
version = "0.2.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
documentation = "https://docs.rs/rustrade-integration"
readme = "README.md"
description = "Low-level framework for composing flexible web integrations, especially with financial exchanges"

[features]
default = ["collection", "error", "protocol", "serde", "subscription", "socket", "stream"]
full = ["collection", "channel", "error", "metric", "protocol", "serde", "subscription", "socket", "stream"]
collection = ["dep:indexmap", "dep:fnv", "dep:itertools", "dep:derive_more"]
channel = ["dep:tokio", "dep:tokio-stream", "dep:derive_more", "dep:tracing"]
error = ["dep:url", "dep:serde_qs", "dep:serde_urlencoded", "dep:thiserror"]
metric = []
protocol = ["error", "metric", "serde", "dep:tokio-tungstenite", "dep:reqwest", "dep:hmac", "dep:hex", "dep:base64", "dep:tokio", "dep:chrono", "dep:bytes", "dep:tracing"]
serde = ["dep:serde_json", "dep:prost", "dep:bytes", "dep:thiserror", "dep:tracing", "dep:chrono"]
subscription = ["dep:smol_str"]
socket = ["dep:tokio", "dep:pin-project", "dep:futures"]
stream = ["dep:tokio-stream", "dep:pin-project", "dep:futures", "dep:rustrade-instrument", "dep:chrono", "dep:derive_more"]

[dev-dependencies]
tokio-test = { workspace = true }
sha2 = { workspace = true }

[dependencies]
# Rustrade Ecosystem
rustrade-instrument = { workspace = true, optional = true }

# Logging
tracing = { workspace = true, optional = true }

# SerDe
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, optional = true }
serde_qs = { workspace = true, optional = true }
serde_urlencoded = { workspace = true, optional = true }

# Error
thiserror = { workspace = true, optional = true }

# Async
tokio = { workspace = true, optional = true, features = [
    "net",
    "sync",
    "macros",
    "rt-multi-thread",
] }
tokio-stream = { workspace = true, optional = true }
futures = { workspace = true, optional = true }
pin-project = { workspace = true, optional = true }

# Data Structures
indexmap = { workspace = true, optional = true }
fnv = { workspace = true, optional = true }
smol_str = { workspace = true, optional = true, features = ["serde"] }

# Protocol
tokio-tungstenite = { workspace = true, optional = true }
reqwest = { workspace = true, optional = true }
url = { workspace = true, optional = true }

# Cryptographic Signatures
hmac = { workspace = true, optional = true }
hex = { workspace = true, optional = true }
base64 = { workspace = true, optional = true }

# Misc
chrono = { workspace = true, optional = true, features = ["serde"] }
itertools = { workspace = true, optional = true }
bytes = { workspace = true, optional = true }
derive_more = { workspace = true, optional = true, features = ["display", "constructor"] }
prost = { workspace = true, optional = true }