|
|
@@ -8,14 +8,18 @@ use rust_decimal::prelude::{FromPrimitive, ToPrimitive};
|
|
|
use rust_decimal_macros::dec;
|
|
|
use serde_json::{json, Value};
|
|
|
use starknet::core::types::Felt;
|
|
|
-use tracing::{error, info, warn};
|
|
|
-use tracing_subscriber::fmt::format;
|
|
|
-use uuid::{Uuid};
|
|
|
+use tracing::{error, warn};
|
|
|
use crate::exchange::extended_account::ExtendedAccount;
|
|
|
use crate::utils::lib::{get_order_hash, sign_message};
|
|
|
use crate::utils::response::Response;
|
|
|
use crate::utils::rest_utils::RestUtils;
|
|
|
-use crate::utils::starknet_messages::{AssetId, Order, PositionId, Timestamp};
|
|
|
+
|
|
|
+pub struct Domain {
|
|
|
+ name: String,
|
|
|
+ version: String,
|
|
|
+ chain_id: String,
|
|
|
+ revision: String,
|
|
|
+}
|
|
|
|
|
|
pub struct ExtendedRestClient {
|
|
|
pub tag: String,
|
|
|
@@ -23,6 +27,7 @@ pub struct ExtendedRestClient {
|
|
|
|
|
|
// 一些私有变量
|
|
|
base_url: String,
|
|
|
+ domain: Domain,
|
|
|
client: Client,
|
|
|
account: Option<ExtendedAccount>,
|
|
|
market_info: Value,
|
|
|
@@ -34,11 +39,37 @@ pub struct ExtendedRestClient {
|
|
|
}
|
|
|
|
|
|
impl ExtendedRestClient {
|
|
|
- pub async fn new(tag: &str, account: Option<ExtendedAccount>, market: &str) -> Result<Self> {
|
|
|
- let mut client = ExtendedRestClient {
|
|
|
- // base_url: "https://api.starknet.extended.exchange".to_string(),
|
|
|
- base_url: "https://api.starknet.sepolia.extended.exchange".to_string(),
|
|
|
+ pub async fn new(tag: &str, account: Option<ExtendedAccount>, market: &str, is_testnet: bool) -> Result<Self> {
|
|
|
+ let base_url = match is_testnet {
|
|
|
+ true => {
|
|
|
+ "https://api.starknet.sepolia.extended.exchange".to_string()
|
|
|
+ }
|
|
|
+ false => {
|
|
|
+ "https://api.starknet.extended.exchange".to_string()
|
|
|
+ }
|
|
|
+ };
|
|
|
+ let domain = match is_testnet {
|
|
|
+ true => {
|
|
|
+ Domain {
|
|
|
+ name: "Perpetuals".to_string(),
|
|
|
+ version: "v0".to_string(),
|
|
|
+ chain_id: "SN_SEPOLIA".to_string(),
|
|
|
+ revision: "1".to_string(),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ false => {
|
|
|
+ Domain {
|
|
|
+ name: "Perpetuals".to_string(),
|
|
|
+ version: "v0".to_string(),
|
|
|
+ chain_id: "SN_MAIN".to_string(),
|
|
|
+ revision: "1".to_string(),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
+ let mut client = ExtendedRestClient {
|
|
|
+ base_url,
|
|
|
+ domain,
|
|
|
tag: tag.to_string(),
|
|
|
market: market.to_string(),
|
|
|
|
|
|
@@ -242,10 +273,10 @@ impl ExtendedRestClient {
|
|
|
let expiration = (expire_time_as_seconds + (14 * 24 * 3600)).to_string();
|
|
|
let salt = nonce.clone();
|
|
|
let user_public_key_hex = account.stark_public_key.clone();
|
|
|
- let domain_name = "Perpetuals".to_string();
|
|
|
- let domain_version = "v0".to_string();
|
|
|
- let domain_chain_id = "SN_SEPOLIA".to_string();
|
|
|
- let domain_revision = "1".to_string();
|
|
|
+ let domain_name = self.domain.name.clone();
|
|
|
+ let domain_version = self.domain.version.clone();
|
|
|
+ let domain_chain_id = self.domain.chain_id.clone();
|
|
|
+ let domain_revision = self.domain.revision.clone();
|
|
|
|
|
|
let hash = get_order_hash(
|
|
|
position_id.clone(),
|
|
|
@@ -482,7 +513,7 @@ mod tests {
|
|
|
let tag = "Extended";
|
|
|
let market = "BTC-USD";
|
|
|
|
|
|
- let client_result = ExtendedRestClient::new(tag, Some(account), market).await;
|
|
|
+ let client_result = ExtendedRestClient::new(tag, Some(account), market, true).await;
|
|
|
|
|
|
match client_result {
|
|
|
Ok(client) => {
|