squalo
library aims to interface your software with the Kraken exchange WebSockets API in no time.
The Kraken exchange allows WebSockets API
interaction with both public
and private
data.
Only for the private
one, you need to issue an API-Key
and an API-Secret
to the squalo
library, in order to generate authentication token for signed subscriptions on WebSockets
endpoints.
If you are not familiar with, please have a look at WebSockets API - FAQ for a general overview, or at WebSockets API document.
Add this to your Cargo.toml
:
toml
[dependencies]
squalo = {version = 0.1.0}
and then add this to your code
:
rust
use squalo;
rust
squalo::print_crate_info();
Description: prints crate
information (name, description, version, author and repository).
rust
squalo::set_kraken_api_credentials(api_key: String, api_secret: String);
Description: sets Kraken API
credentials for private
data access.
Required:
String
String
rust
squalo::get_websockets_token();
Description: retrieves a WebSockets API token
with a signed
request from a Kraken REST API
endpoint.
Output: returns a WebSockets API token
in the String
format.
rust
polipo::attach_websockets_stream(callback: fn(&str), stringified_json_message).await;
Description: spawns a thread
which initializes a WebSocket client
and writes the stringified_json_message
.
Required:
fn
(eg: fn callback(data: &str) { println("data: {}", data); })String
(eg: {"event":"subscribe", "subscription":{"name":"trade"}, "pair":["XBT/USD"]})Output: any incoming message forwared from the WebSockets stream
to the issued callback
comes in stringified JSON
format (parse accordingly with the outcome shape).
The example below shows how easy is to implement squalo
from zero knowledge.
```rust use squalo;
fn callback(data: &str) { println!("data: {}", data); }
async fn main() {
// printing crate information
squalo::print_crate_info();
// enveloping a message pointing on public endpoint
let payload =
r#"{"event":"subscribe", "subscription":{"name":"trade"}, "pair":["XRP/EUR", "ETH/USD"]}"#.to_string();
// attaching websockets to public data stream
squalo::attach_websockets_stream(callback, payload).await;
// issuing credentials enables private data interaction
squalo::set_kraken_api_credentials(
"YOUR_KRAKEN_API_KEY_HERE".to_string(),
"YOUR_KRAKEN_API_SECRET".to_string(),
);
// requesting a websockets token
let token = squalo::get_websockets_token().await;
// enveloping a message pointing on private endpoint
let payload = format!(
r#"{{"event":"subscribe", "subscription":{{"name":"ownTrades", "token":"{}"}}}}"#,
token
);
// attaching websockets to private data stream
squalo::attach_websockets_stream(callback, payload).await;
} ```
This software comes without any kind of warranties.
I will not be liable for any damages related to the use or the misuse of this software.
You are the sole responsible.